Skip to content

Commit 824b41a

Browse files
committed
shift for transition
1 parent b449643 commit 824b41a

4 files changed

Lines changed: 47 additions & 39 deletions

File tree

StateMachineNodeEditorNerCore/View/ViewNodesCanvas.xaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
mc:Ignorable="d"
88
d:DesignHeight="450" d:DesignWidth="800" Focusable="True" AllowDrop="True" ClipToBounds="True">
99
<Canvas x:Name="Grid" Background="{StaticResource ColorNodesCanvasBackground}" >
10-
10+
1111
<local:ViewSelector x:Name="Selector" Panel.ZIndex="999"/>
1212
<local:ViewCutter x:Name="Cutter" Panel.ZIndex="999"/>
1313
<TextBox x:Name="TestBox"></TextBox>
14+
<Button x:Name="CLearB" AutomationProperties.Name="CLeards" Canvas.Left="770" Height="30" Width="30"/>
1415
<!--<local:ViewRightConnector x:Name="Connector"/>-->
15-
16+
1617
<ItemsControl x:Name="Nodes" >
1718
<ItemsControl.RenderTransform>
1819
<TransformGroup x:Name="TransformGroup">
@@ -56,7 +57,7 @@
5657
<MenuItem Header="Delete" x:Name="ItemDeleteNode" InputGestureText="Delete" Style="{DynamicResource ContextMenuItemStyle}"/>
5758
</ContextMenu>
5859
</UserControl.ContextMenu>
59-
60+
6061
<UserControl.CommandBindings>
6162
<!--<CommandBinding Command="Zoom" Executed="Zoom" />-->
6263
<CommandBinding Command="Redo" x:Name="RedoCommand"/>

StateMachineNodeEditorNerCore/View/ViewNodesCanvas.xaml.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,14 @@ private void SetupEvents()
135135
//Эти события срабатывают раньше команд
136136
this.Events().PreviewMouseLeftButtonDown.Subscribe(e => OnEventPreviewMouseLeftButtonDown(e)).DisposeWith(disposable);
137137
this.Events().PreviewMouseRightButtonDown.Subscribe(e => OnEventPreviewMouseRightButtonDown(e)).DisposeWith(disposable);
138-
138+
this.CLearB.Events().MouseDown.Subscribe(_ => Cleater()).DisposeWith(disposable);
139139
this.WhenAnyValue(x => x.ViewModel.Scale.Value).Subscribe(value => { this.Grid.Height /= value; this.Grid.Width /= value; }).DisposeWith(disposable);
140140
});
141141
}
142+
private void Cleater()
143+
{
144+
this.ViewModel.Text = "";
145+
}
142146
private void OnEventMouseLeftDown(MouseButtonEventArgs e)
143147
{
144148
PositionMove = new MyPoint(Mouse.GetPosition(this.Grid));

StateMachineNodeEditorNerCore/View/ViewRightConnector.xaml.cs

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@ private void SetupBinding()
6565
// Цвет рамки, вокруг перехода
6666
this.OneWayBind(this.ViewModel, x => x.FormStroke, x => x.Form.Stroke).DisposeWith(disposable);
6767

68-
////Позиция X от левого верхнего угла
69-
//this.OneWayBind(this.ViewModel, x => x.Position.X, x => x.Translate.X).DisposeWith(disposable);
70-
71-
////Позиция Y от левого верхнего угла
72-
//this.OneWayBind(this.ViewModel, x => x.Position.Y, x => x.Translate.Y).DisposeWith(disposable);
73-
7468
//Размеры
7569
this.WhenAnyValue(v => v.Grid.ActualWidth, v => v.Grid.ActualHeight, (width, height) => new Size(width, height))
7670
.BindTo(this, v => v.ViewModel.Size).DisposeWith(disposable);
@@ -81,16 +75,10 @@ private void SetupBinding()
8175
// Отображается ли переход
8276
this.OneWayBind(this.ViewModel, x => x.Visible, x => x.RightConnector.Visibility).DisposeWith(disposable);
8377

84-
// При изменении размера, позиции или zoom узла
78+
// При изменении размера, позиции или масштаба узла
8579
this.WhenAnyValue(x => x.ViewModel.Node.Size, x => x.ViewModel.Node.Point1.Value, x => x.ViewModel.Node.NodesCanvas.Scale.Scales.Value)
8680
.Subscribe(_ => { UpdatePositionConnectPoin(); }).DisposeWith(disposable);
8781

88-
this.WhenAnyValue(x => x.ViewModel.Node.Size).Subscribe(_ => { Test(); }).DisposeWith(disposable);
89-
//// При изменении размера, позиции или zoom узла
90-
//this.WhenAnyValue(x => x.ViewModel.Node.Size, x => x.ViewModel.Node.Point1.Value, x => x.ViewModel.Node.NodesCanvas.Scale.Scales.Value, x => x.ViewModel.Position).
91-
//Subscribe(_ => { UpdatePositionConnectPoin(); }).DisposeWith(disposable);
92-
//this.WhenAnyValue(x=>x.ViewModel.Node.Transitions.Count).Subscribe(_ => { Test(); }).DisposeWith(disposable);
93-
9482
});
9583
}
9684
#endregion SetupBinding
@@ -128,7 +116,6 @@ private void Validate(RoutedEventArgs e)
128116

129117
private void ConnectDrag(MouseButtonEventArgs e)
130118
{
131-
132119
this.ViewModel.CommandConnectPointDrag.Execute();
133120
DataObject data = new DataObject();
134121
data.SetData("Node", this.ViewModel.Node);
@@ -167,7 +154,6 @@ private void TextDrop(DragEventArgs e)
167154
e.Handled = true;
168155
}
169156

170-
171157
private void ConnectorDrag(MouseButtonEventArgs e)
172158
{
173159
if (!this.ViewModel.TextEnable)
@@ -180,10 +166,7 @@ private void ConnectorDrag(MouseButtonEventArgs e)
180166
this.ViewModel?.CommandCheckConnectorDrop.Execute();
181167
e.Handled = true;
182168
}
183-
private void Test()
184-
{
185-
UpdatePositionConnectPoin();
186-
}
169+
187170
private void ConnectorDragOver(DragEventArgs e)
188171
{
189172

@@ -210,19 +193,22 @@ private void ConnectorDragEnter(DragEventArgs e)
210193
if (this.ViewModel.NodesCanvas.ConnectorPreviewForDrop == null)
211194
return;
212195

196+
if (this.ViewModel.NodesCanvas.ConnectorPreviewForDrop == this.ViewModel)
197+
return;
198+
213199
this.ViewModel.CommandConnectorDragEnter.Execute();
200+
201+
e.Handled = true;
214202
}
215203

216204
private void ConnectorDragLeave(DragEventArgs e)
217205
{
218-
219206
if (this.ViewModel.NodesCanvas.ConnectorPreviewForDrop != null)
220207
return;
221-
this.ViewModel.CommandConnectorDragLeave.Execute();
222208

223-
e.Handled = true;
209+
this.ViewModel.CommandConnectorDragLeave.Execute();
224210

225-
return;
211+
e.Handled = true;
226212
}
227213

228214
private void ConnectorDrop(DragEventArgs e)
@@ -231,6 +217,7 @@ private void ConnectorDrop(DragEventArgs e)
231217
return;
232218

233219
this.ViewModel.CommandConnectorDrop.Execute();
220+
234221
e.Handled = true;
235222
}
236223

StateMachineNodeEditorNerCore/ViewModel/ViewModelConnector.cs

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
using StateMachineNodeEditorNerCore.Helpers;
88
using StateMachineNodeEditorNerCore.Helpers.Commands;
9+
using System;
910

1011
namespace StateMachineNodeEditorNerCore.ViewModel
1112
{
@@ -165,30 +166,45 @@ private void CheckConnectPointDrop()
165166
}
166167

167168
private void ConnectorDrag()
168-
{
169-
170-
//this.NodesCanvas.DraggedConnector = this;
169+
{
171170
this.NodesCanvas.ConnectorPreviewForDrop = this;
172171
}
173172
private void ConnectorDragEnter()
174173
{
175-
int count = this.Node.Transitions.Count;
176-
int indexFrom = this.Node.Transitions.IndexOf(this.NodesCanvas.ConnectorPreviewForDrop);
174+
if (this.Node != this.NodesCanvas.ConnectorPreviewForDrop.Node)
175+
return;
176+
177177
int indexTo = this.Node.Transitions.IndexOf(this);
178+
if (indexTo == 0)
179+
return;
178180

181+
int count = this.Node.Transitions.Count;
182+
int indexFrom = this.Node.Transitions.IndexOf(this.NodesCanvas.ConnectorPreviewForDrop);
183+
179184
if ((indexFrom > -1) && (indexTo > -1) && (indexFrom < count) && (indexTo < count))
180185
{
181-
if(indexTo==count-1)
186+
MyPoint positionTo = this.Node.Transitions[indexTo].PositionConnectPoint;
187+
MyPoint position;
188+
//shift down
189+
if (indexTo > indexFrom)
182190
{
183-
this.Node.Transitions.RemoveAt(indexFrom);
184-
this.Node.Transitions.Add(this.NodesCanvas.ConnectorPreviewForDrop);
191+
for (int i = indexTo ; i >= indexFrom + 1; i--)
192+
{
193+
position = this.Node.Transitions[i -1].PositionConnectPoint;
194+
this.Node.Transitions[i].PositionConnectPoint.Set(position);
195+
}
185196
}
186-
else
197+
//shift up
198+
else if ( indexFrom > indexTo)
187199
{
188-
var t = this.Node.Transitions[indexFrom].PositionConnectPoint.Value;
189-
this.Node.Transitions.Move(indexFrom, indexTo + 1);
190-
this.Node.Transitions[indexFrom].PositionConnectPoint.Set(t);
200+
for (int i = indexTo; i <= indexFrom - 1; i++)
201+
{
202+
position = this.Node.Transitions[i + 1].PositionConnectPoint;
203+
this.Node.Transitions[i].PositionConnectPoint.Set(position);
204+
}
191205
}
206+
this.Node.Transitions[indexFrom].PositionConnectPoint.Set(positionTo);
207+
this.Node.Transitions.Move(indexFrom, indexTo);
192208
}
193209
}
194210
private void ConnectorDragLeave()

0 commit comments

Comments
 (0)