Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/25/10 17:28:31 (15 years ago)
Author:
mkommend
Message:

finished mapping from OperatorGraph to GraphVisualizationInfo (ticket #867)

Location:
trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model
Files:
5 edited

Legend:

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

    r2861 r2868  
    3838    void RemoveConnector(string connectorName);
    3939
    40     IEnumerable<KeyValuePair<string,IShapeInfo>> Connections {get;}
    41     INotifyObservableDictionaryItemsChanged<string, IShapeInfo> ObservableConnections { get; }
    42 
    43     void AddConnection(string fromConnectorName, IShapeInfo toShapeInfo);
    44     void RemoveConnection(string fromConnectorName);
    45     void ChangeConnection(string fromConnector, IShapeInfo toShapeInfo);
    46 
    4740    IShape CreateShape();
    4841    void UpdateShape(IShape shape);
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorGraphVisualizationInfo.cs

    r2861 r2868  
    4141
    4242      this.shapeInfos = new ObservableSet<IShapeInfo>();
     43      this.connections = new ObservableDictionary<KeyValuePair<IShapeInfo, string>, IShapeInfo>();
    4344    }
    4445
     
    4849      this.operatorGraph.InitialOperatorChanged += new EventHandler(operatorGraph_InitialOperatorChanged);
    4950      foreach (IOperator op in operatorGraph.Operators)
    50         this.AddOperator(op);
     51        if (!this.shapeInfoMapping.ContainsFirst(op))
     52          this.AddOperator(op);
    5153
    5254      operatorGraph.Operators.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsAdded);
     
    8385    }
    8486
     87    private ObservableDictionary<KeyValuePair<IShapeInfo, string>, IShapeInfo> connections;
     88    public INotifyObservableDictionaryItemsChanged<KeyValuePair<IShapeInfo, string>, IShapeInfo> ObservableConnections {
     89      get { return this.connections; }
     90    }
     91    public IEnumerable<KeyValuePair<KeyValuePair<IShapeInfo, string>, IShapeInfo>> Connections {
     92      get { return this.connections; }
     93    }
     94
     95    #region methods to manipulate operatorgraph by the shape info
    8596    internal void AddShapeInfo(IOperator op, IShapeInfo shapeInfo) {
    8697      this.RegisterOperatorEvents(op);
     
    89100      this.shapeInfos.Add(shapeInfo);
    90101
     102      foreach (IParameter param in op.Parameters)
     103        this.AddParameter(op, param);
     104
    91105      this.operatorGraph.Operators.Add(op);
    92106    }
     
    97111    }
    98112
     113    internal void AddConnection(IShapeInfo shapeInfoFrom, string connectorName, IShapeInfo shapeInfoTo) {
     114      IOperator opFrom = this.shapeInfoMapping.GetBySecond(shapeInfoFrom);
     115      IOperator opTo = this.shapeInfoMapping.GetBySecond(shapeInfoTo);
     116
     117      IValueParameter<IOperator> param = (IValueParameter<IOperator>)opFrom.Parameters[connectorName];
     118      param.Value = opTo;
     119    }
     120
     121    internal void ChangeConnection(IShapeInfo shapeInfoFrom, string connectorName, IShapeInfo shapeInfoTo) {
     122      IOperator opFrom = this.shapeInfoMapping.GetBySecond(shapeInfoFrom);
     123      IOperator opTo = this.shapeInfoMapping.GetBySecond(shapeInfoTo);
     124
     125      IValueParameter<IOperator> param = (IValueParameter<IOperator>)opFrom.Parameters[connectorName];
     126      param.Value = opTo;
     127    }
     128
     129    internal void RemoveConnection(IShapeInfo shapeInfoFrom, string connectorName) {
     130      IOperator opFrom = this.shapeInfoMapping.GetBySecond(shapeInfoFrom);
     131      IValueParameter<IOperator> param = (IValueParameter<IOperator>)opFrom.Parameters[connectorName];
     132      param.Value = null;
     133    }
     134    #endregion
     135
    99136    #region operator events
    100137    private void AddOperator(IOperator op) {
    101       if (shapeInfoMapping.ContainsFirst(op))
    102         return;
    103 
    104       this.RegisterOperatorEvents(op);
    105       IShapeInfo shapeInfo = Factory.CreateShapeInfo(op);
    106       this.operatorParameterCollectionMapping.Add(op, op.Parameters);
    107       this.shapeInfoMapping.Add(op, shapeInfo);
    108       foreach (IParameter param in op.Parameters)
    109         this.AddParameter(op, param);
    110 
    111       this.shapeInfos.Add(shapeInfo);
     138      if (!this.shapeInfoMapping.ContainsFirst(op)) {
     139        this.RegisterOperatorEvents(op);
     140        IShapeInfo shapeInfo = Factory.CreateShapeInfo(op);
     141        this.operatorParameterCollectionMapping.Add(op, op.Parameters);
     142        this.shapeInfoMapping.Add(op, shapeInfo);
     143        foreach (IParameter param in op.Parameters)
     144          this.AddParameter(op, param);
     145
     146        this.shapeInfos.Add(shapeInfo);
     147      }
    112148    }
    113149
     
    166202          if (!this.shapeInfoMapping.ContainsFirst(opParam.Value))
    167203            this.AddOperator(opParam.Value);
    168           shapeInfo.AddConnection(param.Name, this.shapeInfoMapping.GetByFirst(opParam.Value));
     204          this.connections.Add(new KeyValuePair<IShapeInfo, string>(shapeInfo, param.Name), this.shapeInfoMapping.GetByFirst(opParam.Value));
    169205        }
    170206      }
    171207    }
     208
    172209    private void RemoveParameter(IOperator op, IParameter param) {
    173210      IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
     
    176213        this.parameterOperatorMapping.Remove(opParam);
    177214        IShapeInfo shapeInfo = this.shapeInfoMapping.GetByFirst(op);
     215
     216        this.connections.Remove(new KeyValuePair<IShapeInfo, string>(shapeInfo, param.Name));
    178217        shapeInfo.RemoveConnector(param.Name);
    179218      }
     
    185224        IOperator op = this.parameterOperatorMapping[opParam];
    186225        IShapeInfo shapeInfo = this.shapeInfoMapping.GetByFirst(op);
     226        KeyValuePair<IShapeInfo, string> connectionFrom = new KeyValuePair<IShapeInfo, string>(shapeInfo, opParam.Name);
    187227
    188228        if (opParam.Value == null)
    189           shapeInfo.RemoveConnection(opParam.Name);
     229          this.connections.Remove(connectionFrom);
    190230        else
    191           shapeInfo.ChangeConnection(opParam.Name, this.shapeInfoMapping.GetByFirst(opParam.Value));
     231          this.connections[connectionFrom] = this.shapeInfoMapping.GetByFirst(opParam.Value);
    192232      }
    193233    }
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShape.cs

    r2861 r2868  
    5151
    5252    private IConnector CreateConnector(string connectorName, Point location) {
    53       Connector connector = new Connector(location);
     53      Connector connector = new Connector(location, this.Model);
    5454      connector.ConnectorStyle = ConnectorStyle.Square;
    5555      connector.Parent = this;
     
    6969
    7070    public void RemoveConnector(string connectorName) {
    71       IConnector connector = this.additionalConnectors.Where(c => c.Name ==connectorName).FirstOrDefault();
     71      IConnector connector = this.additionalConnectors.Where(c => c.Name == connectorName).FirstOrDefault();
    7272      if (connector != null) {
    7373        this.additionalConnectors.Remove(connector);
     
    7878
    7979    private void UpdateConnectorLocation() {
    80       int spacing = this.Rectangle.Width / this.additionalConnectors.Count + 1;
     80      if (this.additionalConnectors.Count == 0)
     81        return;
     82
     83      int spacing = this.Rectangle.Width / this.additionalConnectors.Count;
    8184      int margin = spacing / 2;
    8285      int posX = margin + this.Rectangle.X;
     
    98101      Connectors.Add(predecessor);
    99102
    100       successor = this.CreateConnector("Successor",(new Point(Rectangle.Right, Center.Y)));
     103      successor = this.CreateConnector("Successor", (new Point(Rectangle.Right, Center.Y)));
    101104      Connectors.Add(successor);
    102105      #endregion
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShapeInfo.cs

    r2861 r2868  
    5454      if (this.connectorNames.Contains(connectorName)) {
    5555        this.connectorNames.Remove(connectorName);
    56         if (this.connections.ContainsKey(connectorName))
    57           this.connections.Remove(connectorName);
    5856        this.OnChanged();
    5957      }
    60     }
    61 
    62     public override void AddConnection(string fromConnectorName, IShapeInfo toShapeInfo) {
    63       this.connections.Add(fromConnectorName, toShapeInfo);
    64     }
    65 
    66     public override void RemoveConnection(string fromConnectorName) {
    67       if (this.connections.ContainsKey(fromConnectorName))
    68         this.connections.Remove(fromConnectorName);
    69     }
    70 
    71     public override void ChangeConnection(string fromConnectorName, IShapeInfo toShapeInfo) {
    72       this.connections[fromConnectorName] = toShapeInfo;
    7358    }
    7459
     
    137122        }
    138123        //remove old connectors
    139         for (; j < oldConnectorNames.Count; i++)
     124        for (; j < oldConnectorNames.Count; j++)
    140125          operatorShape.RemoveConnector(oldConnectorNames[j]);
    141126
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs

    r2861 r2868  
    3535        throw new ArgumentException("The passed shape type " + shapeType + " must be derived from IShape.");
    3636      this.shapeType = shapeType;
    37       this.connections = new ObservableDictionary<string, IShapeInfo>();
    3837    }
    3938
     
    6564    }
    6665
    67     protected ObservableDictionary<string, IShapeInfo> connections;
    68     public IEnumerable<KeyValuePair<string, IShapeInfo>> Connections {
    69       get { return this.connections; }
    70     }
    71     public INotifyObservableDictionaryItemsChanged<string, IShapeInfo> ObservableConnections {
    72       get { return this.connections; }
    73     }
    74 
    7566    public abstract void AddConnector(string connectorName);
    7667    public abstract void RemoveConnector(string connectorName);
    77     public abstract void AddConnection(string fromConnectorName, IShapeInfo toShapeInfo);
    78     public abstract void RemoveConnection(string fromConnectorName);
    79     public abstract void ChangeConnection(string fromConnectorName, IShapeInfo toShapeInfo);
    80 
    8168
    8269    public virtual IShape CreateShape() {
Note: See TracChangeset for help on using the changeset viewer.