- Timestamp:
- 03/01/10 11:45:00 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3
- Files:
-
- 3 added
- 5 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj
r2891 r2893 95 95 <None Include="HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame" /> 96 96 <None Include="Properties\AssemblyInfo.frame" /> 97 <Compile Include="GraphVisualizationInfoView.cs"> 98 <SubType>UserControl</SubType> 99 </Compile> 100 <Compile Include="GraphVisualizationInfoView.Designer.cs"> 101 <DependentUpon>GraphVisualizationInfoView.cs</DependentUpon> 102 </Compile> 97 103 <Compile Include="Model\OperatorShapeInfo.cs" /> 98 <Compile Include="Model\ OperatorGraphVisualizationInfo.cs" />104 <Compile Include="Model\GraphVisualizationInfo.cs" /> 99 105 <Compile Include="BidirectionalLookup.cs" /> 100 106 <Compile Include="Model\IShapeInfo.cs" /> … … 146 152 <Name>HeuristicLab.MainForm-3.2</Name> 147 153 </ProjectReference> 154 <ProjectReference Include="..\..\HeuristicLab.Operators.Views\3.3\HeuristicLab.Operators.Views-3.3.csproj"> 155 <Project>{C49CB749-8B24-4628-8003-E86475749410}</Project> 156 <Name>HeuristicLab.Operators.Views-3.3</Name> 157 </ProjectReference> 148 158 <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj"> 149 159 <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project> … … 164 174 </ItemGroup> 165 175 <ItemGroup> 176 <EmbeddedResource Include="GraphVisualizationInfoView.resx"> 177 <DependentUpon>GraphVisualizationInfoView.cs</DependentUpon> 178 </EmbeddedResource> 166 179 <EmbeddedResource Include="OperatorGraphView.resx"> 167 180 <DependentUpon>OperatorGraphView.cs</DependentUpon> -
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs
r2882 r2893 30 30 31 31 namespace HeuristicLab.Operators.Views.GraphVisualization { 32 public sealed class OperatorGraphVisualizationInfo : DeepCloneable {32 public sealed class GraphVisualizationInfo : DeepCloneable { 33 33 private BidirectionalLookup<IOperator, IShapeInfo> shapeInfoMapping; 34 34 private BidirectionalLookup<IOperator, IObservableKeyedCollection<string, IParameter>> operatorParameterCollectionMapping; 35 35 private Dictionary<IValueParameter<IOperator>, IOperator> parameterOperatorMapping; 36 36 37 private OperatorGraphVisualizationInfo() {37 private GraphVisualizationInfo() { 38 38 this.shapeInfoMapping = new BidirectionalLookup<IOperator, IShapeInfo>(); 39 39 this.operatorParameterCollectionMapping = new BidirectionalLookup<IOperator, IObservableKeyedCollection<string, IParameter>>(); … … 44 44 } 45 45 46 public OperatorGraphVisualizationInfo(OperatorGraph operatorGraph)46 public GraphVisualizationInfo(OperatorGraph operatorGraph) 47 47 : this() { 48 48 this.operatorGraph = operatorGraph; … … 89 89 return this.shapeInfoMapping.GetByFirst(op); 90 90 } 91 set { 92 if (value == null) 93 this.OperatorGraph.InitialOperator = null; 94 else 95 this.OperatorGraph.InitialOperator = this.shapeInfoMapping.GetBySecond(value); 96 } 91 97 } 92 98 … … 102 108 public IEnumerable<IShapeInfo> ShapeInfos { 103 109 get { return this.shapeInfos; } 110 } 111 public IOperator GetOperatorForShapeInfo(IShapeInfo shapeInfo) { 112 return this.shapeInfoMapping.GetBySecond(shapeInfo); 104 113 } 105 114 … … 182 191 this.AddOperator(op); 183 192 } 184 185 193 private void Operators_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IOperator> e) { 186 194 foreach (IOperator op in e.Items) 187 195 this.RemoveOperator(op); 188 196 } 189 190 197 private void Operators_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IOperator> e) { 191 198 foreach (IOperator op in e.OldItems) … … 284 291 } 285 292 286 287 293 private void RegisterOperatorParameterEvents(IValueParameter<IOperator> opParam) { 288 294 opParam.ValueChanged += new EventHandler(opParam_ValueChanged); -
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs
r2868 r2893 69 69 public virtual IShape CreateShape() { 70 70 IShape shape = (IShape)Activator.CreateInstance(this.shapeType); 71 shape.Tag = this; 71 72 shape.Location = this.Location; 72 73 shape.Height = this.Size.Height; -
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.Designer.cs
r2861 r2893 24 24 /// </summary> 25 25 private void InitializeComponent() { 26 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OperatorGraphView)); 27 this.graphVisualization = new HeuristicLab.Netron.NetronVisualization(); 28 ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).BeginInit(); 26 this.graphVisualizationInfoView = new HeuristicLab.Operators.Views.GraphVisualization.GraphVisualizationInfoView(); 27 this.shapeContextMenu = new System.Windows.Forms.ContextMenuStrip(); 28 this.openViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 29 this.initialToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 30 this.breakPointToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 29 31 this.SuspendLayout(); 32 this.shapeContextMenu.SuspendLayout(); 30 33 // 31 // graphVisualization 34 // graphVisualizationInfoView 32 35 // 33 this.graphVisualization.AllowDrop = false; 34 this.graphVisualization.AutoScroll = true; 35 this.graphVisualization.BackColor = System.Drawing.Color.DarkGray; 36 this.graphVisualization.BackgroundType = global::Netron.Diagramming.Core.CanvasBackgroundTypes.FlatColor; 37 this.graphVisualization.Dock = System.Windows.Forms.DockStyle.Fill; 38 this.graphVisualization.Document = ((global::Netron.Diagramming.Core.Document)(resources.GetObject("graphVisualization.Document"))); 39 this.graphVisualization.EnableAddConnection = true; 40 this.graphVisualization.FileName = ""; 41 this.graphVisualization.Location = new System.Drawing.Point(0, 0); 42 this.graphVisualization.Magnification = new System.Drawing.SizeF(71F, 71F); 43 this.graphVisualization.Name = "graphVisualization"; 44 this.graphVisualization.Origin = new System.Drawing.Point(0, 0); 45 this.graphVisualization.PageSettings = ((System.Drawing.Printing.PageSettings)(resources.GetObject("graphVisualization.PageSettings"))); 46 this.graphVisualization.ShowConnectors = true; 47 this.graphVisualization.ShowRulers = false; 48 this.graphVisualization.Size = new System.Drawing.Size(665, 444); 49 this.graphVisualization.TabIndex = 0; 50 this.graphVisualization.OnEntityRemoved += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityRemoved); 51 this.graphVisualization.OnEntityAdded += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityAdded); 36 this.graphVisualizationInfoView.AllowDrop = false; 37 this.graphVisualizationInfoView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 38 | System.Windows.Forms.AnchorStyles.Left) 39 | System.Windows.Forms.AnchorStyles.Right))); 40 this.graphVisualizationInfoView.Caption = null; 41 this.graphVisualizationInfoView.Content = null; 42 this.graphVisualizationInfoView.Location = new System.Drawing.Point(3, 3); 43 this.graphVisualizationInfoView.Name = "graphVisualizationInfoView"; 44 this.graphVisualizationInfoView.Size = new System.Drawing.Size(659, 336); 45 this.graphVisualizationInfoView.TabIndex = 0; 46 // 47 // shapeContextMenu 48 // 49 this.shapeContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 50 this.openViewToolStripMenuItem, 51 this.initialToolStripMenuItem, 52 this.breakPointToolStripMenuItem}); 53 this.shapeContextMenu.Name = "shapeContextMenu"; 54 this.shapeContextMenu.Size = new System.Drawing.Size(154, 70); 55 this.shapeContextMenu.Opening += new System.ComponentModel.CancelEventHandler(shapeContextMenu_Opening); 56 // 57 // openViewToolStripMenuItem 58 // 59 this.openViewToolStripMenuItem.Name = "openViewToolStripMenuItem"; 60 this.openViewToolStripMenuItem.Size = new System.Drawing.Size(153, 22); 61 this.openViewToolStripMenuItem.Text = "Open View"; 62 this.openViewToolStripMenuItem.Click += new System.EventHandler(this.openViewToolStripMenuItem_Click); 63 // 64 // initialToolStripMenuItem 65 // 66 this.initialToolStripMenuItem.Name = "initialToolStripMenuItem"; 67 this.initialToolStripMenuItem.Size = new System.Drawing.Size(153, 22); 68 this.initialToolStripMenuItem.Text = "Initial Operator"; 69 this.initialToolStripMenuItem.Click += new System.EventHandler(this.initialOperatorToolStripMenuItem_Click); 70 // 71 // BreakPointToolStripMenuItem 72 // 73 this.breakPointToolStripMenuItem.Name = "breakPointToolStripMenuItem"; 74 this.breakPointToolStripMenuItem.Size = new System.Drawing.Size(153, 22); 75 this.breakPointToolStripMenuItem.Text = "Break Point"; 76 this.breakPointToolStripMenuItem.Click += new System.EventHandler(this.breakPointToolStripMenuItem_Click); 52 77 // 53 78 // OperatorGraphView … … 56 81 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 57 82 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 58 this.Controls.Add(this.graphVisualization );83 this.Controls.Add(this.graphVisualizationInfoView); 59 84 this.Name = "OperatorGraphView"; 60 85 this.Size = new System.Drawing.Size(665, 444); 61 86 this.DragDrop += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragDrop); 62 87 this.DragEnter += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnter); 63 ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).EndInit();88 this.shapeContextMenu.ResumeLayout(false); 64 89 this.ResumeLayout(false); 65 66 90 } 67 68 91 #endregion 69 92 70 private HeuristicLab.Netron.NetronVisualization graphVisualization; 71 72 73 93 private GraphVisualizationInfoView graphVisualizationInfoView; 94 private System.Windows.Forms.ContextMenuStrip shapeContextMenu; 95 private System.Windows.Forms.ToolStripMenuItem openViewToolStripMenuItem; 96 private System.Windows.Forms.ToolStripMenuItem initialToolStripMenuItem; 97 private System.Windows.Forms.ToolStripMenuItem breakPointToolStripMenuItem; 74 98 } 75 99 } -
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.cs
r2875 r2893 40 40 [Content(typeof(OperatorGraph), false)] 41 41 public partial class OperatorGraphView : ContentView { 42 private BidirectionalLookup<IShapeInfo, IShape> shapeInfoShapeMapping;43 private BidirectionalLookup<IShapeInfo, INotifyObservableDictionaryItemsChanged<string, IShapeInfo>> shapeInfoConnectionsMapping;44 private BidirectionalLookup<IConnection, KeyValuePair<IConnector, IConnector>> connectionConnectorsMapping;45 46 private bool causedUpdateOfShapeInfo;47 42 public OperatorGraphView() { 48 43 InitializeComponent(); 49 this.causedUpdateOfShapeInfo = false; 50 Caption = "Operator Graph"; 51 this.shapeInfoShapeMapping = new BidirectionalLookup<IShapeInfo, IShape>(); 52 this.shapeInfoConnectionsMapping = new BidirectionalLookup<IShapeInfo, INotifyObservableDictionaryItemsChanged<string, IShapeInfo>>(); 53 this.connectionConnectorsMapping = new BidirectionalLookup<IConnection, KeyValuePair<IConnector, IConnector>>(); 44 Caption = "Operator Graph Visualization"; 45 46 this.graphVisualizationInfoView.Controller.OnShowContextMenu += new EventHandler<EntityMenuEventArgs>(Controller_OnShowContextMenu); 54 47 } 55 48 … … 66 59 protected override void OnContentChanged() { 67 60 if (this.VisualizationInfo == null) 68 this.VisualizationInfo = new OperatorGraphVisualizationInfo(this.Content);69 this. UpdateVisualizationInfo();61 this.VisualizationInfo = new GraphVisualizationInfo(this.Content); 62 this.graphVisualizationInfoView.Content = this.VisualizationInfo; 70 63 } 71 64 72 private OperatorGraphVisualizationInfo VisualizationInfo {73 get { return Content.VisualizationInfo as OperatorGraphVisualizationInfo; }65 private GraphVisualizationInfo VisualizationInfo { 66 get { return Content.VisualizationInfo as GraphVisualizationInfo; } 74 67 set { this.Content.VisualizationInfo = value; } 75 68 } 76 69 77 private void UpdateVisualizationInfo() { 78 foreach (IShapeInfo shapeInfo in this.shapeInfoShapeMapping.FirstValues) 79 this.RemoveShapeInfo(shapeInfo); 80 81 this.shapeInfoShapeMapping.Clear(); 82 this.shapeInfoConnectionsMapping.Clear(); 83 this.connectionConnectorsMapping.Clear(); 84 85 foreach (IShapeInfo shapeInfo in this.VisualizationInfo.ShapeInfos) 86 if (!this.shapeInfoShapeMapping.ContainsFirst(shapeInfo)) 87 this.AddShapeInfo(shapeInfo); 88 89 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> connection in this.VisualizationInfo.Connections) 90 this.AddConnection(connection.Key.Key, connection.Key.Value, connection.Value); 91 92 this.UpdateLayoutRoot(); 93 } 94 95 private void UpdateLayoutRoot() { 96 IShapeInfo shapeInfo = this.VisualizationInfo.InitialShape; 97 if (shapeInfo != null) 98 this.graphVisualization.Controller.Model.LayoutRoot = this.shapeInfoShapeMapping.GetByFirst(shapeInfo); 99 else 100 this.graphVisualization.Controller.Model.LayoutRoot = null; 101 } 102 103 private void VisualizationInfo_InitialShapeChanged(object sender, EventArgs e) { 104 this.UpdateLayoutRoot(); 105 } 106 107 protected override void RegisterContentEvents() { 108 base.RegisterContentEvents(); 109 this.VisualizationInfo.InitialShapeChanged += new EventHandler(VisualizationInfo_InitialShapeChanged); 110 this.VisualizationInfo.ObserveableShapeInfos.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded); 111 this.VisualizationInfo.ObserveableShapeInfos.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved); 112 this.VisualizationInfo.ObserveableShapeInfos.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset); 113 114 this.VisualizationInfo.ObservableConnections.ItemsAdded += new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsAdded); 115 this.VisualizationInfo.ObservableConnections.ItemsRemoved += new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsRemoved); 116 this.VisualizationInfo.ObservableConnections.ItemsReplaced += new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsReplaced); 117 this.VisualizationInfo.ObservableConnections.CollectionReset += new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_CollectionReset); 118 } 119 120 protected override void DeregisterContentEvents() { 121 base.DeregisterContentEvents(); 122 this.VisualizationInfo.InitialShapeChanged -= new EventHandler(VisualizationInfo_InitialShapeChanged); 123 this.VisualizationInfo.ObserveableShapeInfos.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded); 124 this.VisualizationInfo.ObserveableShapeInfos.ItemsRemoved -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved); 125 this.VisualizationInfo.ObserveableShapeInfos.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset); 126 127 this.VisualizationInfo.ObservableConnections.ItemsAdded -= new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsAdded); 128 this.VisualizationInfo.ObservableConnections.ItemsRemoved -= new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsRemoved); 129 this.VisualizationInfo.ObservableConnections.ItemsReplaced -= new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_ItemsReplaced); 130 this.VisualizationInfo.ObservableConnections.CollectionReset -= new CollectionItemsChangedEventHandler<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>>(Connections_CollectionReset); 131 } 132 133 private void ShapeInfos_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) { 134 foreach (IShapeInfo shapeInfo in e.OldItems) 135 this.RemoveShapeInfo(shapeInfo); 136 foreach (IShapeInfo shapeInfo in e.Items) 137 this.AddShapeInfo(shapeInfo); 138 } 139 140 private void ShapeInfos_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) { 141 foreach (IShapeInfo shapeInfo in e.Items) 142 this.AddShapeInfo(shapeInfo); 143 } 144 145 private void ShapeInfos_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) { 146 foreach (IShapeInfo shapeInfo in e.Items) 147 this.RemoveShapeInfo(shapeInfo); 148 } 149 150 private void AddShapeInfo(IShapeInfo shapeInfo) { 151 this.RegisterShapeInfoEvents(shapeInfo); 152 153 IShape shape = shapeInfo.CreateShape(); 154 shape.OnEntityChange += new EventHandler<EntityEventArgs>(shape_OnEntityChange); 155 this.shapeInfoShapeMapping.Add(shapeInfo, shape); 156 157 this.graphVisualization.Controller.Model.AddShape(shape); 158 this.graphVisualization.Invalidate(); 159 } 160 161 private void RemoveShapeInfo(IShapeInfo shapeInfo) { 162 this.DeregisterShapeInfoEvents(shapeInfo); 163 IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo); 164 shape.OnEntityChange -= new EventHandler<EntityEventArgs>(shape_OnEntityChange); 165 shapeInfo.Changed -= new ChangedEventHandler(shapeInfo_Changed); 166 167 IConnection connection; 168 foreach (IConnector connector in shape.Connectors) { 169 connection = this.GetConnection(shapeInfo, connector.Name); 170 this.RemoveConnection(connection); 171 } 172 173 this.shapeInfoShapeMapping.RemoveByFirst(shapeInfo); 174 this.shapeInfoConnectionsMapping.RemoveByFirst(shapeInfo); 175 176 if (this.graphVisualization.Controller.Model.Shapes.Contains(shape)) { 177 this.graphVisualization.Controller.Model.RemoveShape(shape); 178 } 179 this.graphVisualization.Invalidate(); 180 } 181 182 private void RegisterShapeInfoEvents(IShapeInfo shapeInfo) { 183 shapeInfo.Changed += new ChangedEventHandler(shapeInfo_Changed); 184 } 185 186 private void DeregisterShapeInfoEvents(IShapeInfo shapeInfo) { 187 shapeInfo.Changed -= new ChangedEventHandler(shapeInfo_Changed); 188 } 189 190 private void Connections_CollectionReset(object sender, CollectionItemsChangedEventArgs<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>> e) { 191 IConnection connection; 192 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) { 193 connection = this.GetConnection(pair.Key.Key, pair.Key.Value); 194 this.RemoveConnection(connection); 195 } 196 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) 197 this.AddConnection(pair.Key.Key, pair.Key.Value, pair.Value); 198 } 199 200 private void Connections_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>> e) { 201 IConnection connection; 202 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) { 203 connection = this.GetConnection(pair.Key.Key, pair.Key.Value); 204 this.RemoveConnection(connection); 205 } 206 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) 207 this.AddConnection(pair.Key.Key, pair.Key.Value, pair.Value); 208 } 209 210 private void Connections_ItemsAdded(object sender, CollectionItemsChangedEventArgs<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>> e) { 211 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) 212 this.AddConnection(pair.Key.Key, pair.Key.Value, pair.Value); 213 } 214 215 private void Connections_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>> e) { 216 IConnection connection; 217 foreach (KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo> pair in e.Items) { 218 connection = this.GetConnection(pair.Key.Key, pair.Key.Value); 219 this.RemoveConnection(connection); 70 #region context menu 71 private void Controller_OnShowContextMenu(object sender, EntityMenuEventArgs e) { 72 IShape shape = this.graphVisualizationInfoView.Controller.Model.GetShapeAt(e.MouseEventArgs.Location); 73 if (shape != null) { 74 IShapeInfo shapeInfo = shape.Tag as IShapeInfo; 75 this.shapeContextMenu.Tag = shapeInfo; 76 PointF worldPoint = this.graphVisualizationInfoView.Controller.View.WorldToView(e.MouseEventArgs.Location); 77 this.shapeContextMenu.Show(this, Point.Round(worldPoint)); 220 78 } 221 79 } 222 80 223 private void AddConnection(IShapeInfo shapeInfoFrom, string connectorName, IShapeInfo shapeInfoTo) { 224 IShape shapeFrom = this.shapeInfoShapeMapping.GetByFirst(shapeInfoFrom); 225 IShape shapeTo = this.shapeInfoShapeMapping.GetByFirst(shapeInfoTo); 226 227 IConnector connectorFrom = shapeFrom.Connectors.Where(c => c.Name == connectorName).First(); 228 IConnector connectorTo = shapeTo.Connectors.Where(c => c.Name == "Predecessor").FirstOrDefault(); 229 KeyValuePair<IConnector, IConnector> connectorPair = new KeyValuePair<IConnector, IConnector>(connectorFrom, connectorTo); 230 if (!this.connectionConnectorsMapping.ContainsSecond(connectorPair)) { 231 IConnection connection = Factory.CreateConnection(connectorFrom, connectorTo); 232 this.connectionConnectorsMapping.Add(connection, connectorPair); 233 this.graphVisualization.Controller.Model.AddConnection(connection); 234 this.graphVisualization.Invalidate(); 81 private void shapeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { 82 IShapeInfo shapeInfo = this.shapeContextMenu.Tag as ShapeInfo; 83 if (shapeInfo != null) { 84 IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo); 85 this.initialToolStripMenuItem.Checked = this.Content.InitialOperator == op; 86 this.breakPointToolStripMenuItem.Checked = op.Breakpoint; 235 87 } 236 88 } 237 89 238 private IConnection GetConnection(IShapeInfo shapeInfoFrom, string connectorName) { 239 IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfoFrom); 240 IConnector connector = shape.Connectors.Where(c => c.Name == connectorName).First(); 241 242 if (!this.connectionConnectorsMapping.SecondValues.Any(p => p.Key == connector)) 243 return null; 244 245 KeyValuePair<IConnector, IConnector> connectorPair = this.connectionConnectorsMapping.SecondValues.Where(p => p.Key == connector).FirstOrDefault(); 246 return this.connectionConnectorsMapping.GetBySecond(connectorPair); 247 } 248 249 private void ChangeConnection(IShapeInfo shapeInfoFrom, string connectorName, IShapeInfo shapeInfoTo) { 250 IConnection connection = this.GetConnection(shapeInfoFrom, connectorName); 251 IShape shapeTo = this.shapeInfoShapeMapping.GetByFirst(shapeInfoFrom); 252 IConnector connectorTo = shapeTo.Connectors.Where(c => c.Name == "Predecessor").First(); 253 254 connection.To.DetachFromParent(); 255 connection.To.AttachTo(connectorTo); 256 this.graphVisualization.Invalidate(); 257 } 258 259 private void RemoveConnection(IConnection connection) { 260 if (connection == null) 261 return; 262 263 if (connection.From.AttachedTo != null) 264 connection.From.DetachFromParent(); 265 if (connection.To.AttachedTo != null) 266 connection.To.DetachFromParent(); 267 268 if (this.connectionConnectorsMapping.ContainsFirst(connection)) 269 this.connectionConnectorsMapping.RemoveByFirst(connection); 270 if (this.graphVisualization.Controller.Model.Connections.Contains(connection)) 271 this.graphVisualization.Controller.Model.Remove(connection); 272 this.graphVisualization.Invalidate(); 273 } 274 275 276 private void shapeInfo_Changed(object sender, ChangedEventArgs e) { 277 if (this.causedUpdateOfShapeInfo) 278 return; 279 280 IShapeInfo shapeInfo = (IShapeInfo)sender; 281 IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo); 282 shapeInfo.UpdateShape(shape); 283 shape.Invalidate(); 284 } 285 286 287 private void shape_OnEntityChange(object sender, EntityEventArgs e) { 288 this.causedUpdateOfShapeInfo = true; 289 IShape shape = e.Entity as IShape; 290 IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape); 291 292 shapeInfo.Location = shape.Location; 293 shapeInfo.Size = new Size(shape.Width, shape.Height); 294 295 this.graphVisualization.Invalidate(); 296 this.causedUpdateOfShapeInfo = false; 297 } 298 299 private void graphVisualization_OnEntityAdded(object sender, EntityEventArgs e) { 300 IConnection connection = e.Entity as IConnection; 301 if (connection != null && !this.connectionConnectorsMapping.ContainsFirst(connection)) { 302 IConnector connectorFrom = connection.From.AttachedTo; 303 IConnector connectorTo = connection.To.AttachedTo; 304 this.RemoveConnection(connection); //is added again by the model events 305 306 if (connectorFrom != null && connectorTo != null) { 307 IShape shapeFrom = (IShape)connectorFrom.Parent; 308 IShape shapeTo = (IShape)connectorTo.Parent; 309 IShapeInfo shapeInfoFrom = this.shapeInfoShapeMapping.GetBySecond(shapeFrom); 310 IShapeInfo shapeInfoTo = this.shapeInfoShapeMapping.GetBySecond(shapeTo); 311 string connectorName = connectorFrom.Name; 312 313 this.VisualizationInfo.AddConnection(shapeInfoFrom, connectorName, shapeInfoTo); 314 } 90 private void openViewToolStripMenuItem_Click(object sender, EventArgs e) { 91 IShapeInfo shapeInfo = this.shapeContextMenu.Tag as ShapeInfo; 92 if (shapeInfo != null) { 93 IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo); 94 MainFormManager.CreateDefaultView(op).Show(); 315 95 } 316 96 } 317 97 318 private void graphVisualization_OnEntityRemoved(object sender, EntityEventArgs e) { 319 IShape shape = e.Entity as IShape; 320 if (shape != null && this.shapeInfoShapeMapping.ContainsSecond(shape)) { 321 IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape); 322 this.VisualizationInfo.RemoveShapeInfo(shapeInfo); 323 } 98 private void initialOperatorToolStripMenuItem_Click(object sender, EventArgs e) { 99 IShapeInfo shapeInfo = this.shapeContextMenu.Tag as ShapeInfo; 100 if (this.VisualizationInfo.InitialShape == shapeInfo) 101 this.VisualizationInfo.InitialShape = null; 102 else 103 this.VisualizationInfo.InitialShape = shapeInfo; 104 } 324 105 325 IConnection connection = e.Entity as IConnection; 326 if (connection != null && this.connectionConnectorsMapping.ContainsFirst(connection)) { 327 IShape parentShape = (IShape)connection.From.AttachedTo.Parent; 328 IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(parentShape); 329 string connectorName = connection.From.AttachedTo.Name; 330 331 this.VisualizationInfo.RemoveConnection(shapeInfo, connectorName); 106 private void breakPointToolStripMenuItem_Click(object sender, EventArgs e) { 107 IShapeInfo shapeInfo = this.shapeContextMenu.Tag as ShapeInfo; 108 if (shapeInfo != null) { 109 IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo); 110 op.Breakpoint = !op.Breakpoint; 332 111 } 333 112 } 113 #endregion 334 114 335 115 #region methods for toolbar items 336 337 116 internal void RelayoutOperatorGraph() { 338 if (this.shapeInfoShapeMapping.Count > 0 339 && this.connectionConnectorsMapping.Count > 0 340 && this.VisualizationInfo.InitialShape != null) { //otherwise the layout does not work 341 string layoutName = "Standard TreeLayout"; 342 this.graphVisualization.Controller.RunActivity(layoutName); 343 this.graphVisualization.Invalidate(); 344 } 117 this.graphVisualizationInfoView.RelayoutOperatorGraph(); 345 118 } 346 119 347 120 internal void ActivateConnectionTool() { 348 this.graphVisualization .Controller.ActivateTool(ControllerBase.ConnectionToolName);121 this.graphVisualizationInfoView.ActivateConnectionTool(); 349 122 } 350 123 351 124 internal void ActivateZoomAreaTool() { 352 this.graphVisualization .Controller.ActivateTool(ControllerBase.ZoomAreaToolName);125 this.graphVisualizationInfoView.ActivateZoomAreaTool(); 353 126 } 354 127 355 128 internal void ActivateZoomInTool() { 356 this.graphVisualization .Controller.ActivateTool(ControllerBase.ZoomInToolName);129 this.graphVisualizationInfoView.ActivateZoomInTool(); 357 130 } 358 131 359 132 internal void ActivateZoomOutTool() { 360 this.graphVisualization .Controller.ActivateTool(ControllerBase.ZoomOutToolName);133 this.graphVisualizationInfoView.ActivateZoomOutTool(); 361 134 } 362 135 363 136 internal void ActivatePanTool() { 364 this.graphVisualization .Controller.ActivateTool(ControllerBase.PanToolName);137 this.graphVisualizationInfoView.ActivatePanTool(); 365 138 } 366 139 367 140 internal void ActivateSelectTool() { 368 this.graphVisualization .Controller.ActivateTool(ControllerBase.SelectionToolName);141 this.graphVisualizationInfoView.ActivateSelectTool(); 369 142 } 370 371 143 #endregion 372 144 … … 384 156 IOperator op = e.Data.GetData("Value") as IOperator; 385 157 IShapeInfo shapeInfo = Factory.CreateShapeInfo(op); 386 Point controlCoordinates = this.PointToClient(new Point(e.X, e.Y)); 387 PointF viewCoordinates = this.graphVisualization.Controller.View.DeviceToView(controlCoordinates); 388 shapeInfo.Location = new Point((int)viewCoordinates.X, (int)viewCoordinates.Y); 158 Point mouse = new Point(MousePosition.X, MousePosition.Y); 159 Point p = new Point(e.X, e.Y); 160 Point screen = this.PointToScreen(new Point(0, 0)); 161 PointF worldPoint = this.graphVisualizationInfoView.Controller.View.WorldToView(new Point(mouse.X - screen.X, mouse.Y - screen.Y)); 162 163 shapeInfo.Location = Point.Round(worldPoint); 389 164 this.VisualizationInfo.AddShapeInfo(op, shapeInfo); 390 165 } -
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.resx
r2853 r2893 118 118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 119 119 </resheader> 120 <data name="graphVisualization.Document" mimetype="application/x-microsoft.net.object.binary.base64">121 <value>122 AAEAAAD/////AQAAAAAAAAAMAgAAAHBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0123 NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1i124 YTQ4OTYxZDZmNjVkY2VjBQEAAAAgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuRG9jdW1lbnQDAAAAD0Rv125 Y3VtZW50VmVyc2lvbgtJbmZvcm1hdGlvbgVNb2RlbAAEBAYrTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUu126 RG9jdW1lbnRJbmZvcm1hdGlvbgIAAAAdTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuTW9kZWwCAAAAAgAA127 AAAAAAAAAPA/CQMAAAAJBAAAAAUDAAAAK05ldHJvbi5EaWFncmFtbWluZy5Db3JlLkRvY3VtZW50SW5m128 b3JtYXRpb24FAAAAE0RvY3VtZW50SW5mb1ZlcnNpb24GQXV0aG9yDENyZWF0aW9uRGF0ZQtEZXNjcmlw129 dGlvbgVUaXRsZQABAAEBBg0CAAAAAAAAAAAA8D8GBQAAAAAArfOH/YHMCAkFAAAACQUAAAAFBAAAAB1O130 ZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5Nb2RlbAIAAAAMTW9kZWxWZXJzaW9uBVBhZ2VzAAQGuwFOZXRy131 b24uRGlhZ3JhbW1pbmcuQ29yZS5Db2xsZWN0aW9uQmFzZWAxW1tOZXRyb24uRGlhZ3JhbW1pbmcuQ29y132 ZS5JUGFnZSwgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUtMy4wLjI2NzIuMTI0NDYsIFZlcnNpb249My4w133 LjI2NzIuMTI0NDYsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YmE0ODk2MWQ2ZjY1ZGNl134 Y11dAgAAAAIAAAAAAAAAAADwPwkGAAAABQYAAAC7AU5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkNvbGxl135 Y3Rpb25CYXNlYDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklQYWdlLCBOZXRyb24uRGlhZ3JhbW1p136 bmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0137 cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0BAAAACUlubmVyTGlzdAO0AVN5c3Rl138 bS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSVBhZ2Us139 IE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEy140 NDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAAJ141 BwAAAAQHAAAAtAFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW05ldHJvbi5EaWFncmFt142 bWluZy5Db3JlLklQYWdlLCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVy143 c2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYx144 ZDZmNjVkY2VjXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAB9OZXRyb24uRGlhZ3JhbW1pbmcu145 Q29yZS5JUGFnZVtdAgAAAAgICQgAAAABAAAAAQAAAAcIAAAAAAEAAAAEAAAABB1OZXRyb24uRGlhZ3Jh146 bW1pbmcuQ29yZS5JUGFnZQIAAAAJCQAAAA0DDAoAAABRU3lzdGVtLkRyYXdpbmcsIFZlcnNpb249Mi4w147 LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQkAAAAc148 TmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuUGFnZQYAAAALUGFnZVZlcnNpb24IQW1iaWVuY2UGTGF5ZXJz149 BE5hbWUNTWFnbmlmaWNhdGlvbgZPcmlnaW4ABAQBBAQGIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkFt150 YmllbmNlAgAAALwBTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ29sbGVjdGlvbkJhc2VgMVtbTmV0cm9u151 LkRpYWdyYW1taW5nLkNvcmUuSUxheWVyLCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4x152 MjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tl153 bj1iYTQ4OTYxZDZmNjVkY2VjXV0CAAAAFFN5c3RlbS5EcmF3aW5nLlNpemVGCgAAABRTeXN0ZW0uRHJh154 d2luZy5Qb2ludAoAAAACAAAAAAAAAAAA8D8JCwAAAAkMAAAABg0AAAAMRGVmYXVsdCBQYWdlBfL///8U155 U3lzdGVtLkRyYXdpbmcuU2l6ZUYCAAAABXdpZHRoBmhlaWdodAAACwsKAAAAAACOQgAAjkIF8f///xRT156 eXN0ZW0uRHJhd2luZy5Qb2ludAIAAAABeAF5AAAICAoAAAAAAAAAAAAAAAULAAAAIE5ldHJvbi5EaWFn157 cmFtbWluZy5Db3JlLkFtYmllbmNlCQAAAA9BbWJpZW5jZVZlcnNpb24PQmFja2dyb3VuZENvbG9yDkJh158 Y2tncm91bmRUeXBlGEJhY2tncm91bmRHcmFkaWVudENvbG9yMRhCYWNrZ3JvdW5kR3JhZGllbnRDb2xv159 cjITUGFnZUJhY2tncm91bmRDb2xvchJQYWdlQmFja2dyb3VuZFR5cGUcUGFnZUJhY2tncm91bmRHcmFk160 aWVudENvbG9yMRxQYWdlQmFja2dyb3VuZEdyYWRpZW50Q29sb3IyAAQEBAQEBAQEBhRTeXN0ZW0uRHJh161 d2luZy5Db2xvcgoAAAAtTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ2FudmFzQmFja2dyb3VuZFR5cGVz162 AgAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgoAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IKAAAAFFN5c3Rl163 bS5EcmF3aW5nLkNvbG9yCgAAAC1OZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5DYW52YXNCYWNrZ3JvdW5k164 VHlwZXMCAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yCgAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgoAAAAC165 AAAAAAAAAAAA8D8F8P///xRTeXN0ZW0uRHJhd2luZy5Db2xvcgQAAAAEbmFtZQV2YWx1ZQprbm93bkNv166 bG9yBXN0YXRlAQAAAAkHBwoAAAAKAAAAAAAAAAA0AAEABe////8tTmV0cm9uLkRpYWdyYW1taW5nLkNv167 cmUuQ2FudmFzQmFja2dyb3VuZFR5cGVzAQAAAAd2YWx1ZV9fAAgCAAAAAAAAAAHu////8P///woAAAAA168 AAAAAAAAAAAB7f////D///8KAAAAAAAAAAAAAAAAAez////w////CgAAAAAAAAAApAABAAHr////7///169 /wAAAAAB6v////D///8KAAAAAAAAAAAAAAAAAen////w////CgAAAAAAAAAAAAAAAAUMAAAAvAFOZXRy170 b24uRGlhZ3JhbW1pbmcuQ29yZS5Db2xsZWN0aW9uQmFzZWAxW1tOZXRyb24uRGlhZ3JhbW1pbmcuQ29y171 ZS5JTGF5ZXIsIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMu172 MC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRj173 ZWNdXQEAAAAJSW5uZXJMaXN0A7UBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tOZXRy174 b24uRGlhZ3JhbW1pbmcuQ29yZS5JTGF5ZXIsIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcy175 LjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv176 a2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAAJGAAAAAQYAAAAtQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu177 ZXJpYy5MaXN0YDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklMYXllciwgTmV0cm9uLkRpYWdyYW1t178 aW5nLkNvcmUtMy4wLjI2NzIuMTI0NDYsIFZlcnNpb249My4wLjI2NzIuMTI0NDYsIEN1bHR1cmU9bmV1179 dHJhbCwgUHVibGljS2V5VG9rZW49YmE0ODk2MWQ2ZjY1ZGNlY11dAwAAAAZfaXRlbXMFX3NpemUIX3Zl180 cnNpb24EAAAgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSUxheWVyW10CAAAACAgJGQAAAAEAAAABAAAA181 BxkAAAAAAQAAAAQAAAAEHk5ldHJvbi5EaWFncmFtbWluZy5Db3JlLklMYXllcgIAAAAJGgAAAA0DBRoA182 AAAdTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuTGF5ZXIEAAAADExheWVyVmVyc2lvbgROYW1lCUlzVmlz183 aWJsZQhFbnRpdGllcwABAAQGAcQBTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ29sbGVjdGlvbkJhc2Vg184 MVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSURpYWdyYW1FbnRpdHksIE5ldHJvbi5EaWFncmFtbWlu185 Zy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRy186 YWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAACAAAAAAAAAAAA8D8GGwAAAA1E187 ZWZhdWx0IExheWVyAQkcAAAABRwAAADEAU5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkNvbGxlY3Rpb25C188 YXNlYDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklEaWFncmFtRW50aXR5LCBOZXRyb24uRGlhZ3Jh189 bW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1u190 ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0BAAAACUlubmVyTGlzdAO9AVN5191 c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSURp192 YWdyYW1FbnRpdHksIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9u193 PTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2194 NWRjZWNdXQIAAAAJHQAAAAQdAAAAvQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW05l195 dHJvbi5EaWFncmFtbWluZy5Db3JlLklEaWFncmFtRW50aXR5LCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29y196 ZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQ197 dWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQA198 AChOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5JRGlhZ3JhbUVudGl0eVtdAgAAAAgICR4AAAAAAAAAAAAA199 AAceAAAAAAEAAAAAAAAABCZOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5JRGlhZ3JhbUVudGl0eQIAAAAL200 </value>201 </data>202 <data name="graphVisualization.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">203 <value>204 AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0205 dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh206 d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp207 emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5208 c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp209 bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz210 dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n211 LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf212 U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh213 d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACQUAAAAKCgH6/////P///wIJBwAA214 AAUDAAAAJ1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncxIAAAALcHJpbnRlck5h215 bWUKZHJpdmVyTmFtZQpvdXRwdXRQb3J0C3ByaW50VG9GaWxlFHByaW50RGlhbG9nRGlzcGxheWVkCmV4216 dHJhYnl0ZXMJZXh0cmFpbmZvBmNvcGllcwZkdXBsZXgHY29sbGF0ZRNkZWZhdWx0UGFnZVNldHRpbmdz217 CGZyb21QYWdlBnRvUGFnZQdtYXhQYWdlB21pblBhZ2UKcHJpbnRSYW5nZQxkZXZtb2RlYnl0ZXMNY2Fj218 aGVkRGV2bW9kZQEBAQAAAAcABAQEAAAAAAQABwEBBwIHHlN5c3RlbS5EcmF3aW5nLlByaW50aW5nLkR1219 cGxleAIAAAAgU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuVHJpU3RhdGUCAAAAJFN5c3RlbS5EcmF3aW5n220 LlByaW50aW5nLlBhZ2VTZXR0aW5ncwIAAAAICAgIIlN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50221 UmFuZ2UCAAAABwICAAAACgYIAAAAAAkIAAAAAAAAAAr//wX3////HlN5c3RlbS5EcmF3aW5nLlByaW50222 aW5nLkR1cGxleAEAAAAHdmFsdWVfXwAIAgAAAP////8B9v////z///8ACQsAAAAAAAAAAAAAAA8nAAAA223 AAAABfT///8iU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5nZQEAAAAHdmFsdWVfXwAIAgAA224 AAAAAAAAAAoFBQAAACFTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QYXBlclNpemUFAAAABGtpbmQEbmFt225 ZQV3aWR0aAZoZWlnaHQbY3JlYXRlZEJ5RGVmYXVsdENvbnN0cnVjdG9yBAEAAAAhU3lzdGVtLkRyYXdp226 bmcuUHJpbnRpbmcuUGFwZXJLaW5kAgAAAAgIAQIAAAAF8////yFTeXN0ZW0uRHJhd2luZy5QcmludGlu227 Zy5QYXBlcktpbmQBAAAAB3ZhbHVlX18ACAIAAAAAAAAABg4AAAAGTGV0dGVyUgMAAEwEAAAABQcAAAAf228 U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwQAAAAEbGVmdAVyaWdodAN0b3AGYm90dG9tAAAA229 AAgICAgCAAAAZAAAAGQAAABkAAAAZAAAAAELAAAAAQAAAAkDAAAAAfD////8////AAoKCgHv/////P//230 /wAJEgAAAAESAAAABwAAAGQAAABkAAAAZAAAAGQAAAAL231 </value>232 </data>233 120 </root>
Note: See TracChangeset
for help on using the changeset viewer.