Free cookie consent management tool by TermsFeed Policy Generator

Changeset 2893


Ignore:
Timestamp:
03/01/10 11:45:00 (14 years ago)
Author:
mkommend
Message:

added context menu to OperatorGraphView (ticket #867)

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  
    9595    <None Include="HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame" />
    9696    <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>
    97103    <Compile Include="Model\OperatorShapeInfo.cs" />
    98     <Compile Include="Model\OperatorGraphVisualizationInfo.cs" />
     104    <Compile Include="Model\GraphVisualizationInfo.cs" />
    99105    <Compile Include="BidirectionalLookup.cs" />
    100106    <Compile Include="Model\IShapeInfo.cs" />
     
    146152      <Name>HeuristicLab.MainForm-3.2</Name>
    147153    </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>
    148158    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
    149159      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
     
    164174  </ItemGroup>
    165175  <ItemGroup>
     176    <EmbeddedResource Include="GraphVisualizationInfoView.resx">
     177      <DependentUpon>GraphVisualizationInfoView.cs</DependentUpon>
     178    </EmbeddedResource>
    166179    <EmbeddedResource Include="OperatorGraphView.resx">
    167180      <DependentUpon>OperatorGraphView.cs</DependentUpon>
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs

    r2882 r2893  
    3030
    3131namespace HeuristicLab.Operators.Views.GraphVisualization {
    32   public sealed class OperatorGraphVisualizationInfo : DeepCloneable {
     32  public sealed class GraphVisualizationInfo : DeepCloneable {
    3333    private BidirectionalLookup<IOperator, IShapeInfo> shapeInfoMapping;
    3434    private BidirectionalLookup<IOperator, IObservableKeyedCollection<string, IParameter>> operatorParameterCollectionMapping;
    3535    private Dictionary<IValueParameter<IOperator>, IOperator> parameterOperatorMapping;
    3636
    37     private OperatorGraphVisualizationInfo() {
     37    private GraphVisualizationInfo() {
    3838      this.shapeInfoMapping = new BidirectionalLookup<IOperator, IShapeInfo>();
    3939      this.operatorParameterCollectionMapping = new BidirectionalLookup<IOperator, IObservableKeyedCollection<string, IParameter>>();
     
    4444    }
    4545
    46     public OperatorGraphVisualizationInfo(OperatorGraph operatorGraph)
     46    public GraphVisualizationInfo(OperatorGraph operatorGraph)
    4747      : this() {
    4848      this.operatorGraph = operatorGraph;
     
    8989        return this.shapeInfoMapping.GetByFirst(op);
    9090      }
     91      set {
     92        if (value == null)
     93          this.OperatorGraph.InitialOperator = null;
     94        else
     95          this.OperatorGraph.InitialOperator = this.shapeInfoMapping.GetBySecond(value);
     96      }
    9197    }
    9298
     
    102108    public IEnumerable<IShapeInfo> ShapeInfos {
    103109      get { return this.shapeInfos; }
     110    }
     111    public IOperator GetOperatorForShapeInfo(IShapeInfo shapeInfo) {
     112      return this.shapeInfoMapping.GetBySecond(shapeInfo);
    104113    }
    105114
     
    182191        this.AddOperator(op);
    183192    }
    184 
    185193    private void Operators_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IOperator> e) {
    186194      foreach (IOperator op in e.Items)
    187195        this.RemoveOperator(op);
    188196    }
    189 
    190197    private void Operators_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IOperator> e) {
    191198      foreach (IOperator op in e.OldItems)
     
    284291    }
    285292
    286 
    287293    private void RegisterOperatorParameterEvents(IValueParameter<IOperator> opParam) {
    288294      opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs

    r2868 r2893  
    6969    public virtual IShape CreateShape() {
    7070      IShape shape = (IShape)Activator.CreateInstance(this.shapeType);
     71      shape.Tag = this;
    7172      shape.Location = this.Location;
    7273      shape.Height = this.Size.Height;
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.Designer.cs

    r2861 r2893  
    2424    /// </summary>
    2525    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();
    2931      this.SuspendLayout();
     32      this.shapeContextMenu.SuspendLayout();
    3033      //
    31       // graphVisualization
     34      // graphVisualizationInfoView
    3235      //
    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);
    5277      //
    5378      // OperatorGraphView
     
    5681      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    5782      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    58       this.Controls.Add(this.graphVisualization);
     83      this.Controls.Add(this.graphVisualizationInfoView);
    5984      this.Name = "OperatorGraphView";
    6085      this.Size = new System.Drawing.Size(665, 444);
    6186      this.DragDrop += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragDrop);
    6287      this.DragEnter += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnter);
    63       ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).EndInit();
     88      this.shapeContextMenu.ResumeLayout(false);
    6489      this.ResumeLayout(false);
    65 
    6690    }
    67 
    6891    #endregion
    6992
    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;
    7498  }
    7599}
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.cs

    r2875 r2893  
    4040  [Content(typeof(OperatorGraph), false)]
    4141  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;
    4742    public OperatorGraphView() {
    4843      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);
    5447    }
    5548
     
    6659    protected override void OnContentChanged() {
    6760      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;
    7063    }
    7164
    72     private OperatorGraphVisualizationInfo VisualizationInfo {
    73       get { return Content.VisualizationInfo as OperatorGraphVisualizationInfo; }
     65    private GraphVisualizationInfo VisualizationInfo {
     66      get { return Content.VisualizationInfo as GraphVisualizationInfo; }
    7467      set { this.Content.VisualizationInfo = value; }
    7568    }
    7669
    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));
    22078      }
    22179    }
    22280
    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;
    23587      }
    23688    }
    23789
    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();
    31595      }
    31696    }
    31797
    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    }
    324105
    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;
    332111      }
    333112    }
     113    #endregion
    334114
    335115    #region methods for toolbar items
    336 
    337116    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();
    345118    }
    346119
    347120    internal void ActivateConnectionTool() {
    348       this.graphVisualization.Controller.ActivateTool(ControllerBase.ConnectionToolName);
     121      this.graphVisualizationInfoView.ActivateConnectionTool();
    349122    }
    350123
    351124    internal void ActivateZoomAreaTool() {
    352       this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomAreaToolName);
     125      this.graphVisualizationInfoView.ActivateZoomAreaTool();
    353126    }
    354127
    355128    internal void ActivateZoomInTool() {
    356       this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomInToolName);
     129      this.graphVisualizationInfoView.ActivateZoomInTool();
    357130    }
    358131
    359132    internal void ActivateZoomOutTool() {
    360       this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomOutToolName);
     133      this.graphVisualizationInfoView.ActivateZoomOutTool();
    361134    }
    362135
    363136    internal void ActivatePanTool() {
    364       this.graphVisualization.Controller.ActivateTool(ControllerBase.PanToolName);
     137      this.graphVisualizationInfoView.ActivatePanTool();
    365138    }
    366139
    367140    internal void ActivateSelectTool() {
    368       this.graphVisualization.Controller.ActivateTool(ControllerBase.SelectionToolName);
     141      this.graphVisualizationInfoView.ActivateSelectTool();
    369142    }
    370 
    371143    #endregion
    372144
     
    384156        IOperator op = e.Data.GetData("Value") as IOperator;
    385157        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);
    389164        this.VisualizationInfo.AddShapeInfo(op, shapeInfo);
    390165      }
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphView.resx

    r2853 r2893  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    119119  </resheader>
    120   <data name="graphVisualization.Document" mimetype="application/x-microsoft.net.object.binary.base64">
    121     <value>
    122         AAEAAAD/////AQAAAAAAAAAMAgAAAHBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0
    123         NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1i
    124         YTQ4OTYxZDZmNjVkY2VjBQEAAAAgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuRG9jdW1lbnQDAAAAD0Rv
    125         Y3VtZW50VmVyc2lvbgtJbmZvcm1hdGlvbgVNb2RlbAAEBAYrTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUu
    126         RG9jdW1lbnRJbmZvcm1hdGlvbgIAAAAdTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuTW9kZWwCAAAAAgAA
    127         AAAAAAAAAPA/CQMAAAAJBAAAAAUDAAAAK05ldHJvbi5EaWFncmFtbWluZy5Db3JlLkRvY3VtZW50SW5m
    128         b3JtYXRpb24FAAAAE0RvY3VtZW50SW5mb1ZlcnNpb24GQXV0aG9yDENyZWF0aW9uRGF0ZQtEZXNjcmlw
    129         dGlvbgVUaXRsZQABAAEBBg0CAAAAAAAAAAAA8D8GBQAAAAAArfOH/YHMCAkFAAAACQUAAAAFBAAAAB1O
    130         ZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5Nb2RlbAIAAAAMTW9kZWxWZXJzaW9uBVBhZ2VzAAQGuwFOZXRy
    131         b24uRGlhZ3JhbW1pbmcuQ29yZS5Db2xsZWN0aW9uQmFzZWAxW1tOZXRyb24uRGlhZ3JhbW1pbmcuQ29y
    132         ZS5JUGFnZSwgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUtMy4wLjI2NzIuMTI0NDYsIFZlcnNpb249My4w
    133         LjI2NzIuMTI0NDYsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YmE0ODk2MWQ2ZjY1ZGNl
    134         Y11dAgAAAAIAAAAAAAAAAADwPwkGAAAABQYAAAC7AU5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkNvbGxl
    135         Y3Rpb25CYXNlYDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklQYWdlLCBOZXRyb24uRGlhZ3JhbW1p
    136         bmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0
    137         cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0BAAAACUlubmVyTGlzdAO0AVN5c3Rl
    138         bS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSVBhZ2Us
    139         IE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEy
    140         NDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAAJ
    141         BwAAAAQHAAAAtAFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW05ldHJvbi5EaWFncmFt
    142         bWluZy5Db3JlLklQYWdlLCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVy
    143         c2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYx
    144         ZDZmNjVkY2VjXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAB9OZXRyb24uRGlhZ3JhbW1pbmcu
    145         Q29yZS5JUGFnZVtdAgAAAAgICQgAAAABAAAAAQAAAAcIAAAAAAEAAAAEAAAABB1OZXRyb24uRGlhZ3Jh
    146         bW1pbmcuQ29yZS5JUGFnZQIAAAAJCQAAAA0DDAoAAABRU3lzdGVtLkRyYXdpbmcsIFZlcnNpb249Mi4w
    147         LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQkAAAAc
    148         TmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuUGFnZQYAAAALUGFnZVZlcnNpb24IQW1iaWVuY2UGTGF5ZXJz
    149         BE5hbWUNTWFnbmlmaWNhdGlvbgZPcmlnaW4ABAQBBAQGIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkFt
    150         YmllbmNlAgAAALwBTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ29sbGVjdGlvbkJhc2VgMVtbTmV0cm9u
    151         LkRpYWdyYW1taW5nLkNvcmUuSUxheWVyLCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS0zLjAuMjY3Mi4x
    152         MjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tl
    153         bj1iYTQ4OTYxZDZmNjVkY2VjXV0CAAAAFFN5c3RlbS5EcmF3aW5nLlNpemVGCgAAABRTeXN0ZW0uRHJh
    154         d2luZy5Qb2ludAoAAAACAAAAAAAAAAAA8D8JCwAAAAkMAAAABg0AAAAMRGVmYXVsdCBQYWdlBfL///8U
    155         U3lzdGVtLkRyYXdpbmcuU2l6ZUYCAAAABXdpZHRoBmhlaWdodAAACwsKAAAAAACOQgAAjkIF8f///xRT
    156         eXN0ZW0uRHJhd2luZy5Qb2ludAIAAAABeAF5AAAICAoAAAAAAAAAAAAAAAULAAAAIE5ldHJvbi5EaWFn
    157         cmFtbWluZy5Db3JlLkFtYmllbmNlCQAAAA9BbWJpZW5jZVZlcnNpb24PQmFja2dyb3VuZENvbG9yDkJh
    158         Y2tncm91bmRUeXBlGEJhY2tncm91bmRHcmFkaWVudENvbG9yMRhCYWNrZ3JvdW5kR3JhZGllbnRDb2xv
    159         cjITUGFnZUJhY2tncm91bmRDb2xvchJQYWdlQmFja2dyb3VuZFR5cGUcUGFnZUJhY2tncm91bmRHcmFk
    160         aWVudENvbG9yMRxQYWdlQmFja2dyb3VuZEdyYWRpZW50Q29sb3IyAAQEBAQEBAQEBhRTeXN0ZW0uRHJh
    161         d2luZy5Db2xvcgoAAAAtTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ2FudmFzQmFja2dyb3VuZFR5cGVz
    162         AgAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgoAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IKAAAAFFN5c3Rl
    163         bS5EcmF3aW5nLkNvbG9yCgAAAC1OZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5DYW52YXNCYWNrZ3JvdW5k
    164         VHlwZXMCAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yCgAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgoAAAAC
    165         AAAAAAAAAAAA8D8F8P///xRTeXN0ZW0uRHJhd2luZy5Db2xvcgQAAAAEbmFtZQV2YWx1ZQprbm93bkNv
    166         bG9yBXN0YXRlAQAAAAkHBwoAAAAKAAAAAAAAAAA0AAEABe////8tTmV0cm9uLkRpYWdyYW1taW5nLkNv
    167         cmUuQ2FudmFzQmFja2dyb3VuZFR5cGVzAQAAAAd2YWx1ZV9fAAgCAAAAAAAAAAHu////8P///woAAAAA
    168         AAAAAAAAAAAB7f////D///8KAAAAAAAAAAAAAAAAAez////w////CgAAAAAAAAAApAABAAHr////7///
    169         /wAAAAAB6v////D///8KAAAAAAAAAAAAAAAAAen////w////CgAAAAAAAAAAAAAAAAUMAAAAvAFOZXRy
    170         b24uRGlhZ3JhbW1pbmcuQ29yZS5Db2xsZWN0aW9uQmFzZWAxW1tOZXRyb24uRGlhZ3JhbW1pbmcuQ29y
    171         ZS5JTGF5ZXIsIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMu
    172         MC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRj
    173         ZWNdXQEAAAAJSW5uZXJMaXN0A7UBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tOZXRy
    174         b24uRGlhZ3JhbW1pbmcuQ29yZS5JTGF5ZXIsIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcy
    175         LjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv
    176         a2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAAJGAAAAAQYAAAAtQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu
    177         ZXJpYy5MaXN0YDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklMYXllciwgTmV0cm9uLkRpYWdyYW1t
    178         aW5nLkNvcmUtMy4wLjI2NzIuMTI0NDYsIFZlcnNpb249My4wLjI2NzIuMTI0NDYsIEN1bHR1cmU9bmV1
    179         dHJhbCwgUHVibGljS2V5VG9rZW49YmE0ODk2MWQ2ZjY1ZGNlY11dAwAAAAZfaXRlbXMFX3NpemUIX3Zl
    180         cnNpb24EAAAgTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSUxheWVyW10CAAAACAgJGQAAAAEAAAABAAAA
    181         BxkAAAAAAQAAAAQAAAAEHk5ldHJvbi5EaWFncmFtbWluZy5Db3JlLklMYXllcgIAAAAJGgAAAA0DBRoA
    182         AAAdTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuTGF5ZXIEAAAADExheWVyVmVyc2lvbgROYW1lCUlzVmlz
    183         aWJsZQhFbnRpdGllcwABAAQGAcQBTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuQ29sbGVjdGlvbkJhc2Vg
    184         MVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSURpYWdyYW1FbnRpdHksIE5ldHJvbi5EaWFncmFtbWlu
    185         Zy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9uPTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRy
    186         YWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2NWRjZWNdXQIAAAACAAAAAAAAAAAA8D8GGwAAAA1E
    187         ZWZhdWx0IExheWVyAQkcAAAABRwAAADEAU5ldHJvbi5EaWFncmFtbWluZy5Db3JlLkNvbGxlY3Rpb25C
    188         YXNlYDFbW05ldHJvbi5EaWFncmFtbWluZy5Db3JlLklEaWFncmFtRW50aXR5LCBOZXRyb24uRGlhZ3Jh
    189         bW1pbmcuQ29yZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1u
    190         ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0BAAAACUlubmVyTGlzdAO9AVN5
    191         c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbTmV0cm9uLkRpYWdyYW1taW5nLkNvcmUuSURp
    192         YWdyYW1FbnRpdHksIE5ldHJvbi5EaWFncmFtbWluZy5Db3JlLTMuMC4yNjcyLjEyNDQ2LCBWZXJzaW9u
    193         PTMuMC4yNjcyLjEyNDQ2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWJhNDg5NjFkNmY2
    194         NWRjZWNdXQIAAAAJHQAAAAQdAAAAvQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW05l
    195         dHJvbi5EaWFncmFtbWluZy5Db3JlLklEaWFncmFtRW50aXR5LCBOZXRyb24uRGlhZ3JhbW1pbmcuQ29y
    196         ZS0zLjAuMjY3Mi4xMjQ0NiwgVmVyc2lvbj0zLjAuMjY3Mi4xMjQ0NiwgQ3VsdHVyZT1uZXV0cmFsLCBQ
    197         dWJsaWNLZXlUb2tlbj1iYTQ4OTYxZDZmNjVkY2VjXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQA
    198         AChOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5JRGlhZ3JhbUVudGl0eVtdAgAAAAgICR4AAAAAAAAAAAAA
    199         AAceAAAAAAEAAAAAAAAABCZOZXRyb24uRGlhZ3JhbW1pbmcuQ29yZS5JRGlhZ3JhbUVudGl0eQIAAAAL
    200 </value>
    201   </data>
    202   <data name="graphVisualization.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
    203     <value>
    204         AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0
    205         dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
    206         d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
    207         emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
    208         c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
    209         bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
    210         dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
    211         LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
    212         U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
    213         d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACQUAAAAKCgH6/////P///wIJBwAA
    214         AAUDAAAAJ1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncxIAAAALcHJpbnRlck5h
    215         bWUKZHJpdmVyTmFtZQpvdXRwdXRQb3J0C3ByaW50VG9GaWxlFHByaW50RGlhbG9nRGlzcGxheWVkCmV4
    216         dHJhYnl0ZXMJZXh0cmFpbmZvBmNvcGllcwZkdXBsZXgHY29sbGF0ZRNkZWZhdWx0UGFnZVNldHRpbmdz
    217         CGZyb21QYWdlBnRvUGFnZQdtYXhQYWdlB21pblBhZ2UKcHJpbnRSYW5nZQxkZXZtb2RlYnl0ZXMNY2Fj
    218         aGVkRGV2bW9kZQEBAQAAAAcABAQEAAAAAAQABwEBBwIHHlN5c3RlbS5EcmF3aW5nLlByaW50aW5nLkR1
    219         cGxleAIAAAAgU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuVHJpU3RhdGUCAAAAJFN5c3RlbS5EcmF3aW5n
    220         LlByaW50aW5nLlBhZ2VTZXR0aW5ncwIAAAAICAgIIlN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50
    221         UmFuZ2UCAAAABwICAAAACgYIAAAAAAkIAAAAAAAAAAr//wX3////HlN5c3RlbS5EcmF3aW5nLlByaW50
    222         aW5nLkR1cGxleAEAAAAHdmFsdWVfXwAIAgAAAP////8B9v////z///8ACQsAAAAAAAAAAAAAAA8nAAAA
    223         AAAABfT///8iU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5nZQEAAAAHdmFsdWVfXwAIAgAA
    224         AAAAAAAAAAoFBQAAACFTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QYXBlclNpemUFAAAABGtpbmQEbmFt
    225         ZQV3aWR0aAZoZWlnaHQbY3JlYXRlZEJ5RGVmYXVsdENvbnN0cnVjdG9yBAEAAAAhU3lzdGVtLkRyYXdp
    226         bmcuUHJpbnRpbmcuUGFwZXJLaW5kAgAAAAgIAQIAAAAF8////yFTeXN0ZW0uRHJhd2luZy5QcmludGlu
    227         Zy5QYXBlcktpbmQBAAAAB3ZhbHVlX18ACAIAAAAAAAAABg4AAAAGTGV0dGVyUgMAAEwEAAAABQcAAAAf
    228         U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwQAAAAEbGVmdAVyaWdodAN0b3AGYm90dG9tAAAA
    229         AAgICAgCAAAAZAAAAGQAAABkAAAAZAAAAAELAAAAAQAAAAkDAAAAAfD////8////AAoKCgHv/////P//
    230         /wAJEgAAAAESAAAABwAAAGQAAABkAAAAZAAAAGQAAAAL
    231 </value>
    232   </data>
    233120</root>
Note: See TracChangeset for help on using the changeset viewer.