diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/BlockDragThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/BlockDragThumb.cs index 56b1385..2ce2415 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/BlockDragThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/BlockDragThumb.cs @@ -28,7 +28,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls if (e.LeftButton == MouseButtonState.Pressed && firstPoint == null) { firstPoint = e.GetPosition(this); - DesignerItem.BeforeExecute(); + DesignerItem.BeforeExecution(); } } diff --git a/AIStudio.Wpf.DiagramDesigner/Helpers/DrawingHelper.cs b/AIStudio.Wpf.DiagramDesigner/Helpers/DrawingHelper.cs index c3aa727..f0e5fa0 100644 --- a/AIStudio.Wpf.DiagramDesigner/Helpers/DrawingHelper.cs +++ b/AIStudio.Wpf.DiagramDesigner/Helpers/DrawingHelper.cs @@ -84,7 +84,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - static double ConvertToPositive360(double angle) + public static double ConvertToPositive360(double angle) { double positiveAngle = angle % 360; if (positiveAngle < 0) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs index df46c43..a704de7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs @@ -70,7 +70,7 @@ namespace AIStudio.Wpf.DiagramDesigner foreach (var child in designer.Children) { BlockDesignerItemViewModel fullyCreatedConnectorInfo = new BlockDesignerItemViewModel(this.Root, child); - InsertChild(fullyCreatedConnectorInfo); + InsertChild(fullyCreatedConnectorInfo, -1); } } } @@ -273,16 +273,17 @@ namespace AIStudio.Wpf.DiagramDesigner return double.IsNaN(ItemHeight) ? ActualItemHeight : ItemHeight; } - public void InsertChild(BlockDesignerItemViewModel child) - { - child.ParentContainer = this; - Children.Add(child); - } - public void InsertChild(BlockDesignerItemViewModel child, int index) { child.ParentContainer = this; - Children.Insert(index, child); + if (index == -1) + { + Children.Add(child); + } + else + { + Children.Insert(index, child); + } } public void RemoveChild(BlockDesignerItemViewModel child) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index cd4cfb4..ffd3d5d 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -392,15 +392,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - private ICommand _nextCommand; - public ICommand NextCommand - { - get - { - return this._nextCommand ?? (this._nextCommand = new SimpleCommand(ExecuteEnable, ExecuteNextCommand)); - } - } - private ICommand _alignTopCommand; public ICommand AlignTopCommand { @@ -1067,10 +1058,10 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public virtual void ExecuteNextCommand(object parameter) + public virtual bool Next() { - - } + return false; + } private void ExecuteSelectAllCommand(object parameter) { @@ -2777,8 +2768,8 @@ namespace AIStudio.Wpf.DiagramDesigner } else if (DiagramOption.ShortcutOption.Next(e)) { - NextCommand.Execute(null); - return true; + //NextCommand.Execute(null); + return Next(); } return false; } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs index 599e44b..c1e0ed7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs @@ -469,23 +469,35 @@ namespace AIStudio.Wpf.DiagramDesigner public async Task Execute() { - await BeforeExecute(); - await Executing(); - await AfterExecute(); + await StopExecution(); + await BeforeExecution(); + if (await Executing()) + { + await AfterExecution(); + } + else + { + IsExecuting = false; + } } - public virtual Task BeforeExecute() + public virtual Task BeforeExecution() { IsExecuting = true; return Task.CompletedTask; } - public virtual Task Executing() + public virtual Task Executing() + { + return Task.FromResult(true); + } + + public virtual Task StopExecution() { return Task.CompletedTask; } - public virtual async Task AfterExecute() + public virtual async Task AfterExecution() { if (IsExecuting) { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs index 97c56a4..6c084f7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs @@ -41,10 +41,6 @@ namespace AIStudio.Wpf.DiagramDesigner { get; } - ICommand NextCommand - { - get; - } ICommand AlignTopCommand { get; @@ -340,6 +336,8 @@ namespace AIStudio.Wpf.DiagramDesigner void Delete(object parameter); + bool Next(); + void ClearSelectedItems(); bool ExecuteShortcut(KeyEventArgs e); diff --git a/Extensions/AIStudio.Wpf.Mind/ViewModels/MindDiagramViewModel.cs b/Extensions/AIStudio.Wpf.Mind/ViewModels/MindDiagramViewModel.cs index 7868300..437bc7c 100644 --- a/Extensions/AIStudio.Wpf.Mind/ViewModels/MindDiagramViewModel.cs +++ b/Extensions/AIStudio.Wpf.Mind/ViewModels/MindDiagramViewModel.cs @@ -620,9 +620,17 @@ namespace AIStudio.Wpf.Mind.ViewModels }); } - public override void ExecuteNextCommand(object parameter) + public override bool Next() { - ExecuteAddPearCommand(parameter); + if (SelectedItems.Count > 0) + { + ExecuteAddPearCommand(null); + return true; + } + else + { + return false; + } } private void ExecuteMoveBackCommand(object parameter)