using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Input; namespace Util.DiagramDesigner { public class SimpleCommand : ICommand { /// /// Gets or sets the Predicate to execute when the CanExecute of the command gets called /// public Predicate CanExecuteDelegate { get; set; } /// /// Gets or sets the action to be called when the Execute method of the command gets called /// public Action ExecuteDelegate { get; set; } public SimpleCommand(Predicate canExecuteDelegate, Action executeDelegate) { CanExecuteDelegate = canExecuteDelegate; ExecuteDelegate = executeDelegate; } public SimpleCommand(Action executeDelegate) { ExecuteDelegate = executeDelegate; } #region ICommand Members /// /// Checks if the command Execute method can run /// /// THe command parameter to be passed /// Returns true if the command can execute. By default true is returned so that if the user of SimpleCommand does not specify a CanExecuteCommand delegate the command still executes. public bool CanExecute(object parameter) { if (CanExecuteDelegate != null) return CanExecuteDelegate(parameter); return true;// if there is no can execute default to true } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } /// /// Executes the actual command /// /// THe command parameter to be passed public void Execute(object parameter) { if (ExecuteDelegate != null) ExecuteDelegate(parameter); } #endregion } }