Changeset 13135 for branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/NetworkVisualizationView.cs
- Timestamp:
- 11/11/15 13:53:10 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/NetworkVisualizationView.cs
r13077 r13135 20 20 #endregion 21 21 22 using System.Collections.Generic; 22 23 using System.Linq; 23 24 using HeuristicLab.Collections; … … 28 29 using HeuristicLab.Networks.Views.NetworkVisualization.Views.ChartModes; 29 30 using HeuristicLab.Visualization; 31 using HeuristicLab.Visualization.ChartModes; 30 32 31 33 namespace HeuristicLab.Networks.Views.NetworkVisualization.Views { … … 34 36 [Content(typeof(INetwork), false)] 35 37 public partial class NetworkVisualizationView : NetworkItemView { 38 private Dictionary<string, IPrimitive> primitiveDict = new Dictionary<string, IPrimitive>(); 39 36 40 public new INetwork Content { 37 41 get { return (INetwork)base.Content; } … … 42 46 InitializeComponent(); 43 47 44 var initialMode = new NetworkSelectChartMode(chartControl);48 var initialMode = new SelectChartMode(chartControl); 45 49 chartControl.AddChartModes( 46 50 initialMode, 47 new MoveChartMode(chartControl), 51 new PanChartMode(chartControl), 52 new RulerChartMode(chartControl), 48 53 new ZoomInChartMode(chartControl), 49 54 new ZoomOutChartMode(chartControl), … … 81 86 } 82 87 83 private void UpdateContent() {84 if (Content == null) return;85 86 chartControl.Chart.Group.Clear();87 DrawNodes(Content.Nodes);88 ConnectNodes(Content.Nodes);89 }90 91 private void DrawNodes(IKeyedItemCollection<string, INode> nodes) {92 var chart = chartControl.Chart;93 94 foreach (var node in nodes.OfType<IVisualizableNode>()) {95 var nodeShape = new NodeRectangle(chart, node);96 chart.Group.Add(nodeShape);97 }98 }99 100 private void ConnectNodes(IKeyedItemCollection<string, INode> nodes) {101 var chart = chartControl.Chart;102 var nodeRectangles = chart.Group.Primitives.OfType<NodeRectangle>();103 var node2NodeShape = nodeRectangles.ToDictionary(k => k.NetworkItem.Name, v => v);104 105 foreach (var node in nodes) {106 var nodeShape = node2NodeShape[node.Name];107 foreach (var port in node.Ports.OfType<IConnectablePort>()) {108 var connectedPort = port.ConnectedPort as IConnectablePort;109 if (connectedPort == null) continue;110 111 var connectedNode = connectedPort.Parent;112 if (connectedNode == null) continue;113 114 var connectedShape = node2NodeShape[connectedNode.Name];115 var leftPortRectangle = nodeShape.GetPortRectangle(port);116 var rightPortRectangle = connectedShape.GetPortRectangle(connectedPort);117 118 var connectionShape = new ConnectionLine(chart, leftPortRectangle, rightPortRectangle);119 120 chart.Group.Add(connectionShape);121 }122 }123 }124 125 88 #region Event Handlers 126 89 #region Nodes Event Handlers … … 149 112 #endregion 150 113 #endregion 114 115 #region Helpers 116 private void UpdateContent() { 117 if (Content == null) return; 118 119 chartControl.SuspendRendering(); 120 try { 121 chartControl.Chart.Group.Clear(); 122 DrawNodes(Content.Nodes); 123 ConnectNodes(Content.Nodes); 124 } finally { 125 chartControl.ResumeRendering(); 126 } 127 } 128 129 private void DrawNodes(IKeyedItemCollection<string, INode> nodes) { 130 foreach (var node in nodes) { 131 var defaultPrimitive = PrimitiveAttribute.CreateDefaultPrimitive(node.GetType(), chartControl.Chart, node); 132 if (defaultPrimitive == null) continue; 133 chartControl.Chart.Group.Add(defaultPrimitive); 134 primitiveDict[node.Name] = defaultPrimitive; 135 } 136 } 137 138 private void ConnectNodes(IKeyedItemCollection<string, INode> nodes) { 139 var chart = chartControl.Chart; 140 foreach (var node in nodes) { 141 var nodeRectangle = primitiveDict[node.Name] as NodeRectangle; 142 if (nodeRectangle == null) continue; 143 144 foreach (var port in node.Ports.OfType<IConnectablePort>()) { 145 var connectedPort = port.ConnectedPort as IConnectablePort; 146 if (connectedPort == null) continue; 147 148 var connectedNode = connectedPort.Parent; 149 if (connectedNode == null) continue; 150 151 var connectedRectangle = primitiveDict[connectedNode.Name] as NodeRectangle; 152 if (connectedRectangle == null) continue; 153 154 var leftPortRectangle = (PortRectangle)nodeRectangle.GetPortPrimitive(port); 155 var rightPortRectangle = (PortRectangle)connectedRectangle.GetPortPrimitive(connectedPort); 156 157 var connectionShape = new ConnectionLine(chart, leftPortRectangle, rightPortRectangle); 158 159 chart.Group.Add(connectionShape); 160 } 161 } 162 } 163 #endregion 151 164 } 152 165 }
Note: See TracChangeset
for help on using the changeset viewer.