Skip to content

Commit 36c4f84

Browse files
committed
don't work
1 parent 547a869 commit 36c4f84

File tree

6 files changed

+33
-19
lines changed

6 files changed

+33
-19
lines changed

SimpleStateMachineNodeEditor/View/ViewNode.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private void SetupBinding()
7979

8080
this.OneWayBind(this.ViewModel, x => x.Output, x => x.Output.ViewModel).DisposeWith(disposable);
8181

82-
this.OneWayBind(this.ViewModel, x => x.Transitions, x => x.ItemsControlTransitions.ItemsSource).DisposeWith(disposable);
82+
this.OneWayBind(this.ViewModel, x => x.Transitions2, x => x.ItemsControlTransitions.ItemsSource).DisposeWith(disposable);
8383

8484
this.WhenAnyValue(v => v.NodeHeaderElement.ActualWidth).BindTo(this, v => v.ViewModel.HeaderWidth).DisposeWith(disposable);
8585

SimpleStateMachineNodeEditor/ViewModel/Connector/ViewModelConnector.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System.Linq;
1111
using SimpleStateMachineNodeEditor.Helpers.Extensions;
1212
using System.Reactive.Linq;
13+
using DynamicData;
1314

1415
namespace SimpleStateMachineNodeEditor.ViewModel
1516
{
@@ -62,7 +63,7 @@ private void UpdatePositionOnTransitionCountChange()
6263
{
6364
if (!string.IsNullOrEmpty(Name))
6465
{
65-
int index = Node.Transitions.IndexOf(this);
66+
int index = Node.Transitions.Items.IndexOf(this);
6667
this.PositionConnectPoint = Node.CurrentConnector.PositionConnectPoint.Addition(0, index*19);
6768
}
6869
}

SimpleStateMachineNodeEditor/ViewModel/Connector/ViewModelConnectorCommands.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
using ReactiveUI;
1+
using DynamicData;
2+
using ReactiveUI;
23
using SimpleStateMachineNodeEditor.Helpers;
34
using SimpleStateMachineNodeEditor.Helpers.Enums;
45
using SimpleStateMachineNodeEditor.Helpers.Extensions;
56
using System;
7+
using System.Linq;
68
using System.Reactive;
79
using System.Windows;
810
using System.Windows.Input;
@@ -108,35 +110,35 @@ private void ConnectorDragEnter()
108110
if (Node != NodesCanvas.ConnectorPreviewForDrop.Node)
109111
return;
110112

111-
int indexTo = Node.Transitions.IndexOf(this);
113+
int indexTo = Node.Transitions.Items.IndexOf(this);
112114
if (indexTo == 0)
113115
return;
114116
int count = this.Node.Transitions.Count;
115-
int indexFrom = this.Node.Transitions.IndexOf(this.NodesCanvas.ConnectorPreviewForDrop);
117+
int indexFrom = this.Node.Transitions.Items.IndexOf(this.NodesCanvas.ConnectorPreviewForDrop);
116118

117119
if ((indexFrom > -1) && (indexTo > -1) && (indexFrom < count) && (indexTo < count))
118120
{
119-
Point positionTo = this.Node.Transitions[indexTo].PositionConnectPoint;
121+
Point positionTo = this.Node.Transitions.Items.ElementAt(indexTo).PositionConnectPoint;
120122
Point position;
121123
//shift down
122124
if (indexTo > indexFrom)
123125
{
124126
for (int i = indexTo; i >= indexFrom + 1; i--)
125127
{
126-
position = this.Node.Transitions[i - 1].PositionConnectPoint;
127-
this.Node.Transitions[i].PositionConnectPoint = position;
128+
position = this.Node.Transitions.Items.ElementAt(i - 1).PositionConnectPoint;
129+
this.Node.Transitions.Items.ElementAt(i).PositionConnectPoint = position;
128130
}
129131
}
130132
//shift up
131133
else if (indexFrom > indexTo)
132134
{
133135
for (int i = indexTo; i <= indexFrom - 1; i++)
134136
{
135-
position = this.Node.Transitions[i + 1].PositionConnectPoint;
136-
this.Node.Transitions[i].PositionConnectPoint = position;
137+
position = this.Node.Transitions.Items.ElementAt(i + 1).PositionConnectPoint;
138+
this.Node.Transitions.Items.ElementAt(i).PositionConnectPoint = position;
137139
}
138140
}
139-
this.Node.Transitions[indexFrom].PositionConnectPoint = positionTo;
141+
this.Node.Transitions.Items.ElementAt(indexFrom).PositionConnectPoint = positionTo;
140142
this.Node.Transitions.Move(indexFrom, indexTo);
141143
}
142144
}

SimpleStateMachineNodeEditor/ViewModel/Node/ViewModelNode.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using System.Linq;
1212
using System.Xml.Linq;
1313
using SimpleStateMachineNodeEditor.Helpers.Extensions;
14+
using DynamicData;
15+
using System.Collections.ObjectModel;
1416

1517
namespace SimpleStateMachineNodeEditor.ViewModel
1618
{
@@ -35,11 +37,19 @@ public partial class ViewModelNode : ReactiveValidationObject<ViewModelNode>
3537

3638
[Reactive] public double HeaderWidth { get; set; } = 80;
3739

38-
public IObservableCollection<ViewModelConnector> Transitions { get; set; } = new ObservableCollectionExtended<ViewModelConnector>();
40+
public SourceList<ViewModelConnector> Transitions { get; set; } = new SourceList<ViewModelConnector>();
41+
42+
private readonly IObservableCollection<ViewModelConnector> _Transitions2 = new ObservableCollectionExtended<ViewModelConnector>();
43+
public IObservableCollection<ViewModelConnector> Transitions2 => _Transitions2;
44+
45+
//public IObservableCollection<ViewModelConnector> Transitions2 { get; } = new ObservableCollectionExtended<ViewModelConnector>();
46+
3947
public int Zindex { get; private set; }
4048

4149
private ViewModelNode()
4250
{
51+
Transitions.Connect().ObserveOnDispatcher().Bind(_Transitions2).Subscribe();
52+
4353
SetupCommands();
4454
SetupBinding();
4555
}

SimpleStateMachineNodeEditor/ViewModel/Node/ViewModelNodeCommands.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ private void NotSaved()
5252

5353
public int GetConnectorIndex(ViewModelConnector connector)
5454
{
55-
return Transitions.IndexOf(connector);
55+
return Transitions.Items.IndexOf(connector);
5656
}
5757

5858
private void AddConnectorWithConnect((int index, ViewModelConnector connector) element)
@@ -115,7 +115,7 @@ private void AddEmptyConnector()
115115
}
116116
private void UnSelectedAllConnectors()
117117
{
118-
foreach (var transition in Transitions)
118+
foreach (var transition in Transitions.Items)
119119
{
120120
transition.Selected = false;
121121
}
@@ -124,19 +124,19 @@ private void UnSelectedAllConnectors()
124124
}
125125
private void SetConnectorAsStartSelect(ViewModelConnector viewModelConnector)
126126
{
127-
IndexStartSelectConnectors = Transitions.IndexOf(viewModelConnector) - 1;
127+
IndexStartSelectConnectors = Transitions.Items.IndexOf(viewModelConnector) - 1;
128128
}
129129
private void SelectWithShiftForConnectors(ViewModelConnector viewModelConnector)
130130
{
131131
if (viewModelConnector == null)
132132
return;
133133

134-
var transitions = this.Transitions.Skip(1);
134+
var transitions = this.Transitions.Items.Skip(1);
135135
int indexCurrent = transitions.IndexOf(viewModelConnector);
136136
int indexStart = IndexStartSelectConnectors;
137137
UnSelectedAllConnectors();
138138
IndexStartSelectConnectors = indexStart;
139-
transitions = transitions.Skip(Math.Min(indexCurrent, indexStart)).SkipLast(Transitions.Count() - Math.Max(indexCurrent, indexStart) - 2);
139+
transitions = transitions.Skip(Math.Min(indexCurrent, indexStart)).SkipLast(Transitions.Count - Math.Max(indexCurrent, indexStart) - 2);
140140
foreach (var transition in transitions)
141141
{
142142
transition.Selected = true;

SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/ViewModelNodesCanvasCommands.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ private void Save(string fileName)
425425

426426
XElement transitions = new XElement("Transitions");
427427
stateMachineXElement.Add(transitions);
428-
foreach (var transition in Nodes.SelectMany(x => x.Transitions.Where(y => !string.IsNullOrEmpty(y.Name))))
428+
foreach (var transition in Nodes.SelectMany(x => x.Transitions.Items.Where(y => !string.IsNullOrEmpty(y.Name))))
429429
{
430430
transitions.Add(transition.ToXElement());
431431
}
@@ -790,7 +790,8 @@ private ElementsForDelete UnDeleteSelectedNodes(ElementsForDelete parameter, Ele
790790
}
791791
private IEnumerable<ViewModelConnector> GetAllConnectors()
792792
{
793-
return this.Nodes.SelectMany(x => x.Transitions);
793+
//return this.Nodes.SelectMany(x => x.Transitions);
794+
return null;
794795
}
795796

796797
private bool ConnectsExist(string nameConnect)

0 commit comments

Comments
 (0)