Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/24/10 17:58:03 (14 years ago)
Author:
mkommend
Message:

intermediate version of graph visualization (ticket #867)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShape.cs

    r2853 r2861  
    3030  public class OperatorShape : ClassShape {
    3131
    32     private BidirectionalLookup<string, IConnector> additionalConnectors;
    3332    public OperatorShape()
    3433      : base() {
    35       this.additionalConnectors = new BidirectionalLookup<string,IConnector>();
     34      this.additionalConnectors = new List<IConnector>();
    3635    }
    3736
    38     private Connector predecessor;
    39     public Connector Predecessor {
     37    private List<IConnector> additionalConnectors;
     38    public IEnumerable<string> AdditionalConnectorNames {
     39      get { return this.additionalConnectors.Select(c => c.Name); }
     40    }
     41
     42    private IConnector predecessor;
     43    public IConnector Predecessor {
    4044      get { return this.predecessor; }
    4145    }
    4246
    43     private Connector successor;
    44     public Connector Successor {
     47    private IConnector successor;
     48    public IConnector Successor {
    4549      get { return this.successor; }
    4650    }
    4751
     52    private IConnector CreateConnector(string connectorName, Point location) {
     53      Connector connector = new Connector(location);
     54      connector.ConnectorStyle = ConnectorStyle.Square;
     55      connector.Parent = this;
     56      connector.Name = connectorName;
     57      return connector;
     58    }
     59
     60
    4861
    4962    public void AddConnector(string connectorName) {
    50       Connector connector = new Connector(new Point(Rectangle.Right, Rectangle.Bottom));
    51       connector.ConnectorStyle = ConnectorStyle.Square;
    52       connector.Parent = this;
    53       this.additionalConnectors.Add(connectorName, connector);
    54       Connectors.Add(connector);
     63      IConnector connector = this.CreateConnector(connectorName, this.BottomRightCorner);
     64
     65      this.additionalConnectors.Add(connector);
     66      this.Connectors.Add(connector);
     67      this.UpdateConnectorLocation();
    5568    }
    5669
    5770    public void RemoveConnector(string connectorName) {
    58       this.additionalConnectors.RemoveByFirst(connectorName);
    59       this.UpdateConnectorLocation();
     71      IConnector connector = this.additionalConnectors.Where(c => c.Name ==connectorName).FirstOrDefault();
     72      if (connector != null) {
     73        this.additionalConnectors.Remove(connector);
     74        this.Connectors.Remove(connector);
     75        this.UpdateConnectorLocation();
     76      }
    6077    }
    6178
    62     private void UpdateConnectorLocation() {
    63       //TODO set x position of connectors
     79    private void UpdateConnectorLocation() {
     80      int spacing = this.Rectangle.Width / this.additionalConnectors.Count + 1;
     81      int margin = spacing / 2;
     82      int posX = margin + this.Rectangle.X;
     83      int posY = this.additionalConnectors[0].Point.Y;
     84      for (int i = 0; i < this.additionalConnectors.Count; i++) {
     85        this.additionalConnectors[i].Point = new Point(posX, posY);
     86        posX += spacing;
     87      }
    6488    }
    6589
     
    7195      this.Connectors.Clear();
    7296
    73       predecessor = new Connector(new Point(Rectangle.Right, (int)(Rectangle.Top + Rectangle.Height / 2)));
    74       predecessor.ConnectorStyle = ConnectorStyle.Square;
    75       predecessor.Name = "Predecessor";
    76       predecessor.Parent = this;
     97      predecessor = this.CreateConnector("Predecessor", new Point(Rectangle.Left, Center.Y));
    7798      Connectors.Add(predecessor);
    7899
    79       successor = new Connector(new Point(Rectangle.Left, (int)(Rectangle.Top + Rectangle.Height / 2)));
    80       predecessor.ConnectorStyle = ConnectorStyle.Square;
    81       successor.Name = "Successor";
    82       successor.Parent = this;
     100      successor = this.CreateConnector("Successor",(new Point(Rectangle.Right, Center.Y)));
    83101      Connectors.Add(successor);
    84102      #endregion
Note: See TracChangeset for help on using the changeset viewer.