Exemple #1
0
 private void UpdateOperatorParameters()
 {
     foreach (IValueParameter <T> opParam in operatorParameters)
     {
         opParam.ValueChanged -= new EventHandler(opParam_ValueChanged);
         Parameters.Remove(opParam.Name);
     }
     operatorParameters.Clear();
     for (int i = 0; i < Operators.Count; i++)
     {
         IValueParameter <T> opParam = new OptionalValueParameter <T>(i.ToString(), string.Empty, Operators[i]);
         opParam.Hidden        = true;
         opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
         Parameters.Add(opParam);
         operatorParameters.Add(opParam);
     }
 }
        private void AfterDeserialization()
        {
            // BackwardsCompatibility3.3
            #region Backwards compatible code (remove with 3.4)
            OptionalValueParameter <DoubleMatrix> oldDistanceMatrixParameter = Parameters["DistanceMatrix"] as OptionalValueParameter <DoubleMatrix>;
            if (oldDistanceMatrixParameter != null)
            {
                Parameters.Remove(oldDistanceMatrixParameter);
                Parameters.Add(new OptionalValueParameter <DistanceMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
                DistanceMatrixParameter.GetsCollected = oldDistanceMatrixParameter.GetsCollected;
                DistanceMatrixParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
                if (oldDistanceMatrixParameter.Value != null)
                {
                    DoubleMatrix   oldDM = oldDistanceMatrixParameter.Value;
                    DistanceMatrix newDM = new DistanceMatrix(oldDM.Rows, oldDM.Columns, oldDM.ColumnNames, oldDM.RowNames);
                    newDM.SortableView = oldDM.SortableView;
                    for (int i = 0; i < newDM.Rows; i++)
                    {
                        for (int j = 0; j < newDM.Columns; j++)
                        {
                            newDM[i, j] = oldDM[i, j];
                        }
                    }
                    DistanceMatrixParameter.Value = (DistanceMatrix)newDM.AsReadOnly();
                }
            }

            ValueParameter <DoubleMatrix> oldCoordinates = (Parameters["Coordinates"] as ValueParameter <DoubleMatrix>);
            if (oldCoordinates != null)
            {
                Parameters.Remove(oldCoordinates);
                Parameters.Add(new OptionalValueParameter <DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities.", oldCoordinates.Value)
                {
                    GetsCollected = oldCoordinates.GetsCollected
                });
            }

            if (Operators.Count == 0)
            {
                InitializeOperators();
            }
            #endregion
            RegisterEventHandlers();
        }