private OperatorGraphVisualizationInfo(OperatorGraphVisualizationInfo original, Cloner cloner)
      : base(original, cloner) {
      operatorShapeInfoMapping = new BidirectionalLookup<IOperator, IOperatorShapeInfo>();
      operatorParameterCollectionMapping = new BidirectionalLookup<IOperator, IKeyedItemCollection<string, IParameter>>();
      parameterOperatorMapping = new Dictionary<IParameter, IOperator>();

      operatorGraph = cloner.Clone(original.operatorGraph);
      RegisterOperatorGraphEvents();
      oldInitialShape = cloner.Clone(original.oldInitialShape);
      oldInitialShapeColor = original.oldInitialShapeColor;

      foreach (KeyValuePair<IOperator, IOperatorShapeInfo> pair in original.operatorShapeInfoMapping.FirstEnumerable) {
        IOperator op = cloner.Clone(pair.Key);
        IOperatorShapeInfo shapeInfo = cloner.Clone(pair.Value);
        RegisterOperatorEvents(op);
        operatorParameterCollectionMapping.Add(op, op.Parameters);
        operatorShapeInfoMapping.Add(op, shapeInfo);
      }

      foreach (IOperator oper in operatorShapeInfoMapping.FirstValues) {
        foreach (IParameter param in oper.Parameters) {
          parameterOperatorMapping.Add(param, oper);
          IValueParameter opParam = param as IValueParameter;
          if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType))
            RegisterOperatorParameterEvents(opParam);
          else
            RegisterParameterEvents(param);
        }
      }
    }
示例#2
0
        private OperatorGraphVisualizationInfo(OperatorGraphVisualizationInfo original, Cloner cloner)
            : base(original, cloner)
        {
            operatorShapeInfoMapping           = new BidirectionalLookup <IOperator, IOperatorShapeInfo>();
            operatorParameterCollectionMapping = new BidirectionalLookup <IOperator, IKeyedItemCollection <string, IParameter> >();
            parameterOperatorMapping           = new Dictionary <IParameter, IOperator>();

            operatorGraph = cloner.Clone(original.operatorGraph);
            RegisterOperatorGraphEvents();
            oldInitialShape      = cloner.Clone(original.oldInitialShape);
            oldInitialShapeColor = original.oldInitialShapeColor;

            foreach (KeyValuePair <IOperator, IOperatorShapeInfo> pair in original.operatorShapeInfoMapping.FirstEnumerable)
            {
                IOperator          op        = cloner.Clone(pair.Key);
                IOperatorShapeInfo shapeInfo = cloner.Clone(pair.Value);
                RegisterOperatorEvents(op);
                operatorParameterCollectionMapping.Add(op, op.Parameters);
                operatorShapeInfoMapping.Add(op, shapeInfo);
            }

            foreach (IOperator oper in operatorShapeInfoMapping.FirstValues)
            {
                foreach (IParameter param in oper.Parameters)
                {
                    parameterOperatorMapping.Add(param, oper);
                    IValueParameter opParam = param as IValueParameter;
                    if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType))
                    {
                        RegisterOperatorParameterEvents(opParam);
                    }
                    else
                    {
                        RegisterParameterEvents(param);
                    }
                }
            }
        }