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); } } }
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); } } } }