// Copyright (C) Stichting Deltares 2021. All rights reserved. // // This file is part of Riskeer. // // Riskeer is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Windows.Input; namespace Core.Gui.Commands { /// /// Defines a simple command that executes an . /// public class RelayCommand : ICommand { private readonly Action action; private readonly Func canExecute; public event EventHandler CanExecuteChanged; /// /// Creates a new instance of . /// /// The action to execute. /// Thrown when is null. public RelayCommand(Action action) : this(action, o => true) {} /// /// Creates a new instance of . /// /// The action to execute. /// The function that determines whether command can execute. /// Thrown when is null. public RelayCommand(Action action, Func canExecute) { if (action == null) { throw new ArgumentNullException(nameof(action)); } if (canExecute == null) { throw new ArgumentNullException(nameof(canExecute)); } this.action = action; this.canExecute = canExecute; } public bool CanExecute(object parameter) { return canExecute(parameter); } public void Execute(object parameter) { action(parameter); } } }