Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/26/16 15:05:28 (8 years ago)
Author:
jkarder
Message:

#2205: worked on optimization networks

  • improved network visualization
Location:
branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/ChartModes/AddNodesChartMode.cs

    r13135 r13799  
    7979            var lowerLeft = center - new Offset(size);
    8080            var upperRight = center + new Offset(size);
    81             node.VisualProperties = new NodeVisualProperties(new Point2D<double>(lowerLeft.X, lowerLeft.Y),
    82                                                              new Point2D<double>(upperRight.X, upperRight.Y));
     81            node.VisualProperties = new NodeVisualProperties {
     82              LowerLeft = new Point2D<double>(lowerLeft.X, lowerLeft.Y),
     83              UpperRight = new Point2D<double>(upperRight.X, upperRight.Y)
     84            };
    8385            network.Nodes.Add(node);
    8486            break;
  • branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/ChartModes/SelectChartMode.cs

    r13135 r13799  
    4949    }
    5050
    51     public override void HandleOnKeyDown(object sender, KeyEventArgs e) {
    52       try {
    53         if (!(chartControl.Tag is IUserDefinedNetwork)) return;
    54 
    55         switch (e.KeyCode) {
    56           case Keys.Delete:
    57             chartControl.SuspendRendering();
    58 
    59             var connectionLines = chartControl.Chart.Group.Primitives.OfType<ConnectionLine>().ToList();
    60             var nodeRectangles = chartControl.Chart.Group.Primitives.OfType<NodeRectangle>().ToList();
    61             var portRectangles = nodeRectangles.SelectMany(x => x.NetworkItem.Ports.Select(x.GetPortPrimitive)).OfType<PortRectangle>().ToList();
    62 
    63             var deletedNodes = new HashSet<INode>();
    64             var deletedPorts = new HashSet<IMessagePort>();
    65 
    66             foreach (var nodeRectangle in nodeRectangles) {
    67               if (nodeRectangle.Selected) {
    68                 var node = nodeRectangle.NetworkItem;
    69                 if (node == null) continue;
    70                 deletedNodes.Add(node);
    71                 foreach (var port in node.Ports.OfType<IMessagePort>())
    72                   deletedPorts.Add(port);
    73               }
    74             }
    75 
    76             foreach (var portRectangle in portRectangles) {
    77               if (portRectangle.Selected) {
    78                 var port = portRectangle.NetworkItem as IMessagePort;
    79                 if (port == null) continue;
    80                 port.Parent.Ports.Remove(port);
    81                 deletedPorts.Add(port);
    82               }
    83             }
    84 
    85             selectedPortRectangle = null;
    86 
    87             foreach (var connectionLine in connectionLines) {
    88               var startPortRectangle = connectionLine.StartPortRectangle;
    89               var endPortRectangle = connectionLine.EndPortRectangle;
    90               if (startPortRectangle == null || endPortRectangle == null) continue;
    91 
    92               var startPort = startPortRectangle.NetworkItem as IMessagePort;
    93               var endPort = endPortRectangle.NetworkItem as IMessagePort;
    94               if (startPort == null || endPort == null) continue;
    95 
    96               if (connectionLine.Selected || deletedPorts.Contains(startPort) || deletedPorts.Contains(endPort))
    97                 startPort.ConnectedPort = null;
    98             }
    99 
    100             foreach (var node in deletedNodes)
    101               node.Parent.Nodes.Remove(node);
    102             break;
    103         }
    104       } finally {
    105         chartControl.ResumeRendering();
    106       }
    107     }
    108 
    10951    public override void HandleOnMouseDown(object sender, MouseEventArgs e) {
    11052      try {
     
    12971                  selectedPortRectangle = portRectangle;
    13072                  constrainingNodeRectangle = nodeRectangle;
     73                  break;
    13174                }
    13275              }
     
    13477
    13578            if (selectedPortRectangle != null)
    136               foreach (var sp in chartControl.Chart.Group.SelectedPrimitives)
     79              foreach (var sp in chartControl.Chart.Group.SelectedPrimitives) {
    13780                sp.Selected = false;
    138             else
    139               base.HandleOnMouseDown(sender, e);
     81                OnSelectedPrimitivesChanged();
     82              } else base.HandleOnMouseDown(sender, e);
    14083            break;
    14184        }
     
    196139      }
    197140    }
     141
     142    protected override void DeleteSelectedPrimitives() {
     143      if (!(chartControl.Tag is IUserDefinedNetwork)) return;
     144
     145      try {
     146        chartControl.SuspendRendering();
     147
     148        var connectionLines = chartControl.Chart.Group.Primitives.OfType<ConnectionLine>().ToList();
     149        var nodeRectangles = chartControl.Chart.Group.Primitives.OfType<NodeRectangle>().ToList();
     150        var portRectangles = nodeRectangles.SelectMany(x => x.NetworkItem.Ports.Select(x.GetPortPrimitive)).OfType<PortRectangle>().ToList();
     151
     152        var deletedNodes = new HashSet<INode>();
     153        var deletedPorts = new HashSet<IMessagePort>();
     154
     155        foreach (var nodeRectangle in nodeRectangles) {
     156          if (nodeRectangle.Selected) {
     157            var node = nodeRectangle.NetworkItem;
     158            if (node == null) continue;
     159            deletedNodes.Add(node);
     160            foreach (var port in node.Ports.OfType<IMessagePort>())
     161              deletedPorts.Add(port);
     162          }
     163        }
     164
     165        foreach (var portRectangle in portRectangles) {
     166          if (portRectangle.Selected) {
     167            var port = portRectangle.NetworkItem as IMessagePort;
     168            if (port == null) continue;
     169            port.Parent.Ports.Remove(port);
     170            deletedPorts.Add(port);
     171          }
     172        }
     173
     174        selectedPortRectangle = null;
     175
     176        foreach (var connectionLine in connectionLines) {
     177          var startPortRectangle = connectionLine.StartPortRectangle;
     178          var endPortRectangle = connectionLine.EndPortRectangle;
     179          if (startPortRectangle == null || endPortRectangle == null) continue;
     180
     181          var startPort = startPortRectangle.NetworkItem as IMessagePort;
     182          var endPort = endPortRectangle.NetworkItem as IMessagePort;
     183          if (startPort == null || endPort == null) continue;
     184
     185          if (connectionLine.Selected || deletedPorts.Contains(startPort) || deletedPorts.Contains(endPort))
     186            startPort.ConnectedPort = null;
     187        }
     188
     189        foreach (var node in deletedNodes)
     190          node.Parent.Nodes.Remove(node);
     191      } finally { chartControl.ResumeRendering(); }
     192    }
    198193  }
    199194}
  • branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/NetworkVisualizationView.Designer.cs

    r13077 r13799  
    2525    private void InitializeComponent() {
    2626      this.chartControl = new HeuristicLab.Visualization.ChartControl();
     27      this.splitContainer = new System.Windows.Forms.SplitContainer();
     28      this.detailsToggleButton = new System.Windows.Forms.Button();
     29      this.detailsGroupBox = new System.Windows.Forms.GroupBox();
     30      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
    2731      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
     32      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
     33      this.splitContainer.Panel1.SuspendLayout();
     34      this.splitContainer.Panel2.SuspendLayout();
     35      this.splitContainer.SuspendLayout();
     36      this.detailsGroupBox.SuspendLayout();
    2837      this.SuspendLayout();
    2938      //
     
    3948            | System.Windows.Forms.AnchorStyles.Right)));
    4049      this.chartControl.BackColor = System.Drawing.SystemColors.Control;
    41       this.chartControl.Location = new System.Drawing.Point(3, 26);
     50      this.chartControl.Location = new System.Drawing.Point(3, 3);
     51      this.chartControl.Mode = null;
    4252      this.chartControl.Name = "chartControl";
    4353      this.chartControl.ScaleOnResize = true;
    44       this.chartControl.Size = new System.Drawing.Size(639, 488);
     54      this.chartControl.ShowToolBar = true;
     55      this.chartControl.Size = new System.Drawing.Size(408, 482);
     56      this.chartControl.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    4557      this.chartControl.TabIndex = 3;
     58      //
     59      // splitContainer
     60      //
     61      this.splitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     62            | System.Windows.Forms.AnchorStyles.Left)
     63            | System.Windows.Forms.AnchorStyles.Right)));
     64      this.splitContainer.Location = new System.Drawing.Point(3, 26);
     65      this.splitContainer.Name = "splitContainer";
     66      //
     67      // splitContainer.Panel1
     68      //
     69      this.splitContainer.Panel1.Controls.Add(this.detailsToggleButton);
     70      this.splitContainer.Panel1.Controls.Add(this.chartControl);
     71      //
     72      // splitContainer.Panel2
     73      //
     74      this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox);
     75      this.splitContainer.Size = new System.Drawing.Size(639, 488);
     76      this.splitContainer.SplitterDistance = 439;
     77      this.splitContainer.TabIndex = 4;
     78      //
     79      // detailsToggleButton
     80      //
     81      this.detailsToggleButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     82            | System.Windows.Forms.AnchorStyles.Right)));
     83      this.detailsToggleButton.Location = new System.Drawing.Point(417, 3);
     84      this.detailsToggleButton.Name = "detailsToggleButton";
     85      this.detailsToggleButton.Size = new System.Drawing.Size(19, 482);
     86      this.detailsToggleButton.TabIndex = 4;
     87      this.detailsToggleButton.Text = ">";
     88      this.detailsToggleButton.UseVisualStyleBackColor = true;
     89      this.detailsToggleButton.Click += new System.EventHandler(this.detailsToggleButton_Click);
     90      //
     91      // detailsGroupBox
     92      //
     93      this.detailsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     94            | System.Windows.Forms.AnchorStyles.Left)
     95            | System.Windows.Forms.AnchorStyles.Right)));
     96      this.detailsGroupBox.Controls.Add(this.viewHost);
     97      this.detailsGroupBox.Location = new System.Drawing.Point(3, 3);
     98      this.detailsGroupBox.Name = "detailsGroupBox";
     99      this.detailsGroupBox.Size = new System.Drawing.Size(190, 482);
     100      this.detailsGroupBox.TabIndex = 1;
     101      this.detailsGroupBox.TabStop = false;
     102      this.detailsGroupBox.Text = "Details";
     103      //
     104      // viewHost
     105      //
     106      this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     107            | System.Windows.Forms.AnchorStyles.Left)
     108            | System.Windows.Forms.AnchorStyles.Right)));
     109      this.viewHost.Caption = "View";
     110      this.viewHost.Content = null;
     111      this.viewHost.Enabled = false;
     112      this.viewHost.Location = new System.Drawing.Point(6, 19);
     113      this.viewHost.Name = "viewHost";
     114      this.viewHost.ReadOnly = false;
     115      this.viewHost.Size = new System.Drawing.Size(178, 457);
     116      this.viewHost.TabIndex = 0;
     117      this.viewHost.ViewsLabelVisible = true;
     118      this.viewHost.ViewType = null;
    46119      //
    47120      // NetworkVisualizationView
     
    49122      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    50123      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    51       this.Controls.Add(this.chartControl);
     124      this.Controls.Add(this.splitContainer);
    52125      this.Name = "NetworkVisualizationView";
    53126      this.Controls.SetChildIndex(this.nameLabel, 0);
    54127      this.Controls.SetChildIndex(this.nameTextBox, 0);
    55128      this.Controls.SetChildIndex(this.infoLabel, 0);
    56       this.Controls.SetChildIndex(this.chartControl, 0);
     129      this.Controls.SetChildIndex(this.splitContainer, 0);
    57130      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
     131      this.splitContainer.Panel1.ResumeLayout(false);
     132      this.splitContainer.Panel2.ResumeLayout(false);
     133      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
     134      this.splitContainer.ResumeLayout(false);
     135      this.detailsGroupBox.ResumeLayout(false);
    58136      this.ResumeLayout(false);
    59137      this.PerformLayout();
     
    64142
    65143    private Visualization.ChartControl chartControl;
     144    private System.Windows.Forms.SplitContainer splitContainer;
     145    private System.Windows.Forms.Button detailsToggleButton;
     146    private System.Windows.Forms.GroupBox detailsGroupBox;
     147    private MainForm.WindowsForms.ViewHost viewHost;
    66148  }
    67149}
  • branches/OptimizationNetworks/HeuristicLab.Networks.Views.NetworkVisualization.Views/3.3/NetworkVisualizationView.cs

    r13135 r13799  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
    2324using System.Linq;
     
    4647      InitializeComponent();
    4748
    48       var initialMode = new SelectChartMode(chartControl);
     49      var selectMode = new SelectChartMode(chartControl);
     50      selectMode.SelectedPrimitivesChanged += SelectMode_SelectedPrimitivesChanged;
    4951      chartControl.AddChartModes(
    50         initialMode,
     52        selectMode,
    5153        new PanChartMode(chartControl),
    5254        new RulerChartMode(chartControl),
     
    5759        new ConnectPortsChartMode(chartControl)
    5860      );
    59       chartControl.Mode = initialMode;
     61      chartControl.Mode = selectMode;
    6062    }
    6163
     
    8789
    8890    #region Event Handlers
     91    private void SelectMode_SelectedPrimitivesChanged(object sender, EventArgs e) {
     92      var selectedPrimitives = chartControl.Chart.Group.SelectedPrimitives;
     93      var nodePrimitive = selectedPrimitives.OfType<NodeRectangle>().SingleOrDefault();
     94      viewHost.Content = nodePrimitive != null ? nodePrimitive.NetworkItem : null;
     95    }
     96
    8997    #region Nodes Event Handlers
    9098    private void Nodes_ItemsAdded(object sender, CollectionItemsChangedEventArgs<INode> e) {
     
    111119    private void Ports_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IPort> e) { }
    112120    #endregion
     121
     122    private void detailsToggleButton_Click(object sender, EventArgs e) {
     123      splitContainer.Panel2Collapsed = !splitContainer.Panel2Collapsed;
     124      detailsToggleButton.Text = splitContainer.Panel2Collapsed ? "<" : ">";
     125    }
    113126    #endregion
    114127
Note: See TracChangeset for help on using the changeset viewer.