Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/05/10 05:23:56 (14 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • worked on parameters and operators
File:
1 edited

Legend:

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

    r2727 r2756  
    3838  [Content(typeof(IOperator), false)]
    3939  public sealed partial class OperatorTreeView : ItemView {
    40     private Dictionary<IOperatorParameter, List<TreeNode>> operatorParameterNodeTable;
     40    private Dictionary<IValueParameter<IOperator>, List<TreeNode>> opParamNodeTable;
    4141    private Dictionary<IOperator, List<TreeNode>> operatorNodeTable;
    4242    private Dictionary<IObservableKeyedCollection<string, IParameter>, IOperator> parametersOperatorTable;
     
    5858      InitializeComponent();
    5959      graphTreeView.Sorted = true;
    60       operatorParameterNodeTable = new Dictionary<IOperatorParameter, List<TreeNode>>();
     60      opParamNodeTable = new Dictionary<IValueParameter<IOperator>, List<TreeNode>>();
    6161      operatorNodeTable = new Dictionary<IOperator, List<TreeNode>>();
    6262      parametersOperatorTable = new Dictionary<IObservableKeyedCollection<string, IParameter>, IOperator>();
     
    9494
    9595    #region TreeNode Management
    96     private TreeNode CreateTreeNode(IOperatorParameter operatorParameter) {
     96    private TreeNode CreateTreeNode(IValueParameter<IOperator> opParam) {
    9797      TreeNode node = new TreeNode();
    98       node.Text = operatorParameter.Name + ": ";
    99       SetOperatorParameterTag(node, operatorParameter);
    100 
    101       if (!operatorParameterNodeTable.ContainsKey(operatorParameter)) {
    102         operatorParameterNodeTable.Add(operatorParameter, new List<TreeNode>());
    103         operatorParameter.ValueChanged += new EventHandler(operatorParameter_ValueChanged);
    104       }
    105       operatorParameterNodeTable[operatorParameter].Add(node);
    106 
    107       IOperator op = operatorParameter.Value;
     98      node.Text = opParam.Name + ": ";
     99      SetOperatorParameterTag(node, opParam);
     100
     101      if (!opParamNodeTable.ContainsKey(opParam)) {
     102        opParamNodeTable.Add(opParam, new List<TreeNode>());
     103        opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
     104      }
     105      opParamNodeTable[opParam].Add(node);
     106
     107      IOperator op = opParam.Value;
    108108      if (op == null)
    109109        node.Text += "-";
     
    139139
    140140      foreach (IParameter param in op.Parameters) {
    141         if (param is IOperatorParameter)
     141        if (param is IValueParameter<IOperator>)
    142142          node.Nodes.Add(new TreeNode());
    143143      }
     
    167167      ClearTreeNode(node);
    168168
    169       IOperatorParameter opParam = GetOperatorParameterTag(node);
     169      IValueParameter<IOperator> opParam = GetOperatorParameterTag(node);
    170170      if (opParam != null) {
    171         operatorParameterNodeTable[opParam].Remove(node);
    172         if (operatorParameterNodeTable[opParam].Count == 0) {
    173           opParam.ValueChanged -= new EventHandler(operatorParameter_ValueChanged);
    174           operatorParameterNodeTable.Remove(opParam);
     171        opParamNodeTable[opParam].Remove(node);
     172        if (opParamNodeTable[opParam].Count == 0) {
     173          opParam.ValueChanged -= new EventHandler(opParam_ValueChanged);
     174          opParamNodeTable.Remove(opParam);
    175175        }
    176176      }
     
    180180    private void AddParameterNodes(IOperator op, IEnumerable<IParameter> parameters) {
    181181      foreach (IParameter param in parameters) {
    182         IOperatorParameter opParam = param as IOperatorParameter;
     182        IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    183183        if (opParam != null) {
    184184          foreach (TreeNode node in operatorNodeTable[op])
     
    189189    private void RemoveParameterNodes(IEnumerable<IParameter> parameters) {
    190190      foreach (IParameter param in parameters) {
    191         IOperatorParameter opParam = param as IOperatorParameter;
     191        IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    192192        if (opParam != null) {
    193           while (operatorParameterNodeTable.ContainsKey(opParam))
    194             RemoveTreeNode(operatorParameterNodeTable[opParam][0]);
     193          while (opParamNodeTable.ContainsKey(opParam))
     194            RemoveTreeNode(opParamNodeTable[opParam][0]);
    195195        }
    196196      }
     
    199199
    200200    #region Parameter and Operator Events
    201     private void operatorParameter_ValueChanged(object sender, EventArgs e) {
    202       if (InvokeRequired)
    203         Invoke(new EventHandler(operatorParameter_ValueChanged), sender, e);
    204       else {
    205         IOperatorParameter opParam = (IOperatorParameter)sender;
    206         foreach (TreeNode node in operatorParameterNodeTable[opParam].ToArray())
     201    private void opParam_ValueChanged(object sender, EventArgs e) {
     202      if (InvokeRequired)
     203        Invoke(new EventHandler(opParam_ValueChanged), sender, e);
     204      else {
     205        IValueParameter<IOperator> opParam = (IValueParameter<IOperator>)sender;
     206        foreach (TreeNode node in opParamNodeTable[opParam].ToArray())
    207207          ClearTreeNode(node);
    208         foreach (TreeNode node in operatorParameterNodeTable[opParam]) {
     208        foreach (TreeNode node in opParamNodeTable[opParam]) {
    209209          node.Text = opParam.Name + ": ";
    210210          if (opParam.Value == null)
     
    221221        IOperator op = (IOperator)sender;
    222222        foreach (TreeNode node in operatorNodeTable[op]) {
    223           IOperatorParameter opParam = GetOperatorParameterTag(node);
     223          IValueParameter<IOperator> opParam = GetOperatorParameterTag(node);
    224224          if (opParam == null)
    225225            node.Text = op.Name + " (" + op.ItemName + ")";
     
    287287        IOperator op = GetOperatorTag(node);
    288288        foreach (IParameter param in op.Parameters) {
    289           IOperatorParameter opParam = param as IOperatorParameter;
     289          IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    290290          if (opParam != null) node.Nodes.Add(CreateTreeNode(opParam));
    291291        }
     
    299299    private void graphTreeView_KeyDown(object sender, KeyEventArgs e) {
    300300      if ((e.KeyCode == Keys.Delete) && (graphTreeView.SelectedNode != null)) {
    301         IOperatorParameter opParam = GetOperatorParameterTag(graphTreeView.SelectedNode);
     301        IValueParameter<IOperator> opParam = GetOperatorParameterTag(graphTreeView.SelectedNode);
    302302        if (opParam != null) opParam.Value = null;
    303303      }
     
    324324    private void graphTreeView_ItemDrag(object sender, ItemDragEventArgs e) {
    325325      TreeNode node = (TreeNode)e.Item;
    326       IOperatorParameter opParam = GetOperatorParameterTag(node);
     326      IValueParameter<IOperator> opParam = GetOperatorParameterTag(node);
    327327      IOperator op = GetOperatorTag(node);
    328328      DataObject data = new DataObject();
     
    357357        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) op = (IOperator)op.Clone();
    358358        TreeNode node = graphTreeView.GetNodeAt(graphTreeView.PointToClient(new Point(e.X, e.Y)));
    359         IOperatorParameter opParam = GetOperatorParameterTag(node);
     359        IValueParameter<IOperator> opParam = GetOperatorParameterTag(node);
    360360        opParam.Value = op;
    361361      }
     
    389389    }
    390390
    391     private IOperatorParameter GetOperatorParameterTag(TreeNode node) {
     391    private IValueParameter<IOperator> GetOperatorParameterTag(TreeNode node) {
    392392      if (node.Tag != null)
    393         return ((Tuple<IOperatorParameter, IOperator>)node.Tag).Item1;
     393        return ((Tuple<IValueParameter<IOperator>, IOperator>)node.Tag).Item1;
    394394      else
    395395        return null;
    396396    }
    397     private void SetOperatorParameterTag(TreeNode node, IOperatorParameter operatorParameter) {
     397    private void SetOperatorParameterTag(TreeNode node, IValueParameter<IOperator> opParam) {
    398398      if (node.Tag == null)
    399         node.Tag = new Tuple<IOperatorParameter, IOperator>(operatorParameter, null);
    400       else
    401         ((Tuple<IOperatorParameter, IOperator>)node.Tag).Item1 = operatorParameter;
     399        node.Tag = new Tuple<IValueParameter<IOperator>, IOperator>(opParam, null);
     400      else
     401        ((Tuple<IValueParameter<IOperator>, IOperator>)node.Tag).Item1 = opParam;
    402402    }
    403403    private IOperator GetOperatorTag(TreeNode node) {
    404404      if (node.Tag != null)
    405         return ((Tuple<IOperatorParameter, IOperator>)node.Tag).Item2;
     405        return ((Tuple<IValueParameter<IOperator>, IOperator>)node.Tag).Item2;
    406406      else
    407407        return null;
     
    409409    private void SetOperatorTag(TreeNode node, IOperator op) {
    410410      if (node.Tag == null)
    411         node.Tag = new Tuple<IOperatorParameter, IOperator>(null, op);
    412       else
    413         ((Tuple<IOperatorParameter, IOperator>)node.Tag).Item2 = op;
     411        node.Tag = new Tuple<IValueParameter<IOperator>, IOperator>(null, op);
     412      else
     413        ((Tuple<IValueParameter<IOperator>, IOperator>)node.Tag).Item2 = op;
    414414    }
    415415    #endregion
Note: See TracChangeset for help on using the changeset viewer.