Free cookie consent management tool by TermsFeed Policy Generator

Changeset 2968


Ignore:
Timestamp:
03/08/10 15:15:47 (14 years ago)
Author:
mkommend
Message:

added cloning support for graph visualization (ticket #867)

Location:
trunk/sources
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs

    r2932 r2968  
    103103      clone.Operators = (OperatorSet)cloner.Clone(operators);
    104104      clone.initialOperator = (IOperator)cloner.Clone(initialOperator);
     105      clone.visualizationInfo = cloner.Clone(visualizationInfo);
    105106      return clone;
    106107    }
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs

    r2966 r2968  
    4949        }
    5050
    51         foreach(IOperator oper in value.FirstValues) {
     51        foreach (IOperator oper in value.FirstValues) {
    5252          foreach (IParameter param in oper.Parameters) {
    5353            this.parameterOperatorMapping.Add(param, oper);
     
    8989    }
    9090
     91    public override IDeepCloneable Clone(Cloner cloner) {
     92      GraphVisualizationInfo clone = new GraphVisualizationInfo();
     93      cloner.RegisterClonedObject(this, clone);
     94      clone.operatorGraph = (OperatorGraph)cloner.Clone(this.operatorGraph);
     95      clone.oldInitialShape = (IOperatorShapeInfo)this.oldInitialShape.Clone(cloner);
     96      clone.oldInitialShapeColor = this.oldInitialShapeColor;
     97
     98      IOperator op;
     99      IOperatorShapeInfo shapeInfo;
     100      foreach (KeyValuePair<IOperator, IOperatorShapeInfo> pair in this.operatorShapeInfoMapping.FirstEnumerable) {
     101        op = (IOperator)cloner.Clone(pair.Key);
     102        shapeInfo = (IOperatorShapeInfo)cloner.Clone(pair.Value);
     103        clone.RegisterOperatorEvents(op);
     104        clone.operatorParameterCollectionMapping.Add(op, pair.Key.Parameters);
     105        clone.operatorShapeInfoMapping.Add(op, shapeInfo);
     106        clone.shapeInfos.Add(shapeInfo);
     107      }
     108
     109      foreach (IOperator oper in clone.operatorShapeInfoMapping.FirstValues) {
     110        foreach (IParameter param in oper.Parameters) {
     111          clone.parameterOperatorMapping.Add(param, oper);
     112          IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
     113          if (opParam != null) {
     114            clone.RegisterOperatorParameterEvents(opParam);
     115            shapeInfo = clone.operatorShapeInfoMapping.GetByFirst(oper);
     116            if (opParam.Value != null) {
     117              clone.connections.Add(new KeyValuePair<IOperatorShapeInfo, string>(shapeInfo, param.Name), clone.operatorShapeInfoMapping.GetByFirst(opParam.Value));
     118            }
     119          } else
     120            clone.RegisterParameterEvents(param);
     121        }
     122      }
     123
     124      return clone;
     125    }
     126
    91127    public event EventHandler InitialShapeChanged;
    92128    private void operatorGraph_InitialOperatorChanged(object sender, EventArgs e) {
     
    129165    }
    130166
    131    
     167
    132168    private OperatorGraph operatorGraph;
    133169    [Storable]
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/IShapeInfo.cs

    r2934 r2968  
    3030
    3131namespace HeuristicLab.Operators.Views.GraphVisualization {
    32   public interface IShapeInfo : IItem{
     32  public interface IShapeInfo : IDeepCloneable{
    3333    Type ShapeType { get; }
    3434    Point Location { get; set; }
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShapeInfo.cs

    r2966 r2968  
    192192      }
    193193    }
     194
     195    public override IDeepCloneable Clone(Cloner cloner) {
     196      OperatorShapeInfo clone = (OperatorShapeInfo) base.Clone(cloner);
     197      clone.collapsed = this.collapsed;
     198      clone.color = this.color;
     199      clone.lineColor = this.lineColor;
     200      clone.lineWidth = this.lineWidth;
     201      clone.title = this.title;
     202      clone.icon = (Bitmap) this.icon.Clone();
     203
     204      clone.connectorNames = this.connectorNames.ToList();
     205      clone.labels = this.labels.ToList();
     206
     207      return clone;
     208    }
    194209  }
    195210}
  • trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs

    r2934 r2968  
    3131
    3232namespace HeuristicLab.Operators.Views.GraphVisualization {
    33   internal abstract class ShapeInfo : Item,IShapeInfo {
     33  internal abstract class ShapeInfo : DeepCloneable, IShapeInfo {
    3434    private ShapeInfo() {
     35    }
    3536
    36     }
    3737    protected ShapeInfo(Type shapeType) {
    3838      if (!typeof(IShape).IsAssignableFrom(shapeType))
     
    4040      this.shapeType = shapeType;
    4141    }
    42 
    43     public event EventHandler Changed;
    4442
    4543    [Storable]
     
    6159    }
    6260
     61    public event EventHandler Changed;
    6362    protected void OnChanged() {
    6463      if (this.Changed != null)
     
    7675      shape.Location = this.Location;
    7776    }
     77
     78    public override IDeepCloneable Clone(Cloner cloner) {
     79      ShapeInfo clone = (ShapeInfo) base.Clone(cloner);
     80      clone.shapeType = this.shapeType;
     81      clone.location = this.location;
     82      return clone;
     83    }
    7884  }
    7985}
Note: See TracChangeset for help on using the changeset viewer.