Skip to content

Commit e61e034

Browse files
committed
some refact, add command for items and buttons
1 parent c14aacd commit e61e034

25 files changed

+395
-593
lines changed

SimpleStateMachineNodeEditor/Helpers/Commands/Command.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace SimpleStateMachineNodeEditor.Helpers.Commands
66
{
7-
public class Command<TParameter, TResult> : CommandWithUndoRedo, ICommand, ICloneable
7+
public class Command<TParameter, TResult> : ICommandWithUndoRedo, ICommand, ICloneable
88
{
99

1010
private readonly Func<TParameter, TResult, TResult> _execute;
@@ -74,10 +74,10 @@ public void Execute(object parameter)
7474
Result = this._execute(Parameters, Result).Cast<TResult>();
7575

7676
//Добавляем копию команды в стек команд, которые можно отменить
77-
CommandWithUndoRedo.AddInUndo(this.Clone() as CommandWithUndoRedo);
77+
ICommandWithUndoRedo.AddInUndo(this.Clone() as ICommandWithUndoRedo);
7878

7979
//Очищаем список отмененнных команд ( началась новая ветка изменений)
80-
CommandWithUndoRedo.StackRedo.Clear();
80+
ICommandWithUndoRedo.StackRedo.Clear();
8181

8282
//Очищаем результат ( чтобы не передавать его при повторном выполнении)
8383
Result = default(TResult);
@@ -97,30 +97,30 @@ public void UnExecute()
9797
this._unExecute(Parameters, Result);
9898

9999
//Добавляем копию команды в стек команд, которые можно выполнить повторно
100-
CommandWithUndoRedo.AddInRedo(this.Clone() as CommandWithUndoRedo);
100+
ICommandWithUndoRedo.AddInRedo(this.Clone() as ICommandWithUndoRedo);
101101
}
102102

103103
/// <summary>
104104
/// Повторное выполнения команды
105105
/// </summary>
106-
public void Execute()
106+
public void ExecuteWithSubscribe()
107107
{
108108
//Выполянем команду
109109
this.Result = this._execute(this.Parameters, this.Result);
110110

111111
//Добавляем копию команды в стек команд, которые можно отменить
112-
CommandWithUndoRedo.AddInUndo(this.Clone() as CommandWithUndoRedo);
112+
ICommandWithUndoRedo.AddInUndo(this.Clone() as ICommandWithUndoRedo);
113113
}
114114

115115
/// <summary>
116116
/// Создать отменяемую команду
117117
/// </summary>
118118
/// <param name="owner">Объкт, которому принадлежит команда</param>
119-
/// <param name="execute">Функция, которая будет вызвана при выполнении команды</param>
119+
/// <param name="ExecuteWithSubscribe">Функция, которая будет вызвана при выполнении команды</param>
120120
/// <param name="unExecute">Функция, которая будет вызвана при отмене команды</param>
121-
public Command(Func<TParameter, TResult, TResult> execute, Func<TParameter, TResult, TResult> unExecute, Action onExecute = null)
121+
public Command(Func<TParameter, TResult, TResult> ExecuteWithSubscribe, Func<TParameter, TResult, TResult> unExecute, Action onExecute = null)
122122
{
123-
_execute = execute;
123+
_execute = ExecuteWithSubscribe;
124124

125125
_unExecute = unExecute;
126126

SimpleStateMachineNodeEditor/Helpers/Commands/CommandWithUndoRedo.cs

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System.Collections.Generic;
2+
3+
4+
namespace SimpleStateMachineNodeEditor.Helpers.Commands
5+
{
6+
public interface ICommandWithUndoRedo
7+
{
8+
public static Stack<ICommandWithUndoRedo> StackRedo { get; set; } = new Stack<ICommandWithUndoRedo>();
9+
10+
public static Stack<ICommandWithUndoRedo> StackUndo { get; set; } = new Stack<ICommandWithUndoRedo>();
11+
12+
public static void Redo()
13+
{
14+
if (StackRedo.Count > 0)
15+
{
16+
ICommandWithUndoRedo last = StackRedo.Pop();
17+
last.ExecuteWithSubscribe();
18+
}
19+
}
20+
21+
public static void Undo()
22+
{
23+
if (StackUndo.Count > 0)
24+
{
25+
ICommandWithUndoRedo last = StackUndo.Pop();
26+
last.UnExecute();
27+
}
28+
}
29+
30+
public static ICommandWithUndoRedo AddInRedo(ICommandWithUndoRedo command)
31+
{
32+
StackRedo.Push(command);
33+
34+
return command;
35+
}
36+
37+
public static ICommandWithUndoRedo AddInUndo(ICommandWithUndoRedo command)
38+
{
39+
StackUndo.Push(command);
40+
41+
return command;
42+
}
43+
44+
public void ExecuteWithSubscribe();
45+
public void UnExecute();
46+
47+
}
48+
}

SimpleStateMachineNodeEditor/Helpers/Commands/Interface1.cs

Lines changed: 0 additions & 62 deletions
This file was deleted.

SimpleStateMachineNodeEditor/Helpers/Commands/ReactiveCommandWithUndoRedo.cs

Lines changed: 0 additions & 43 deletions
This file was deleted.

SimpleStateMachineNodeEditor/Helpers/Commands/SimpleCommand.cs

Lines changed: 0 additions & 55 deletions
This file was deleted.

SimpleStateMachineNodeEditor/Helpers/Commands/SimpleCommandWithParameter.cs

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)