Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/14/10 05:09:59 (14 years ago)
Author:
swagner
Message:

Implemented reviewers' comments (#893).

File:
1 edited

Legend:

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

    r3135 r3341  
    124124    private void FillTreeNode(TreeNode node, IOperator op) {
    125125      if (op == null) {
    126         if (!graphTreeView.ImageList.Images.ContainsKey("Default"))
    127           graphTreeView.ImageList.Images.Add("Default", HeuristicLab.Common.Resources.VS2008ImageLibrary.Method);
    128 
    129126        node.Text += "-";
    130127        node.ToolTipText = "";
    131         node.ImageIndex = graphTreeView.ImageList.Images.IndexOfKey("Default"); ;
     128        graphTreeView.ImageList.Images.Add(HeuristicLab.Common.Resources.VS2008ImageLibrary.Nothing);
     129        node.ImageIndex = graphTreeView.ImageList.Images.Count - 1;
    132130        node.SelectedImageIndex = node.ImageIndex;
    133131        node.ForeColor = graphTreeView.ForeColor;
    134132      } else {
    135         if (!graphTreeView.ImageList.Images.ContainsKey(op.GetType().FullName))
    136           graphTreeView.ImageList.Images.Add(op.GetType().FullName, op.ItemImage);
    137 
    138133        node.Text += op.Name;
    139134        node.ToolTipText = op.ItemName + ": " + op.ItemDescription;
    140         node.ImageIndex = graphTreeView.ImageList.Images.IndexOfKey(op.GetType().FullName);
     135        graphTreeView.ImageList.Images.Add(op.ItemImage);
     136        node.ImageIndex = graphTreeView.ImageList.Images.Count - 1;
    141137        node.SelectedImageIndex = node.ImageIndex;
    142138        SetOperatorTag(node, op);
     
    144140        if (!operatorNodeTable.ContainsKey(op)) {
    145141          operatorNodeTable.Add(op, new List<TreeNode>());
     142          op.ItemImageChanged += new EventHandler(op_ItemImageChanged);
    146143          op.NameChanged += new EventHandler(op_NameChanged);
    147144          op.BreakpointChanged += new EventHandler(op_BreakpointChanged);
     
    168165        RemoveTreeNode(node.Nodes[0]);
    169166
     167      if (node.ImageIndex != -1) {
     168        int i = node.ImageIndex;
     169        CorrectImageIndexes(graphTreeView.Nodes, i);
     170        graphTreeView.ImageList.Images.RemoveAt(i);
     171      }
     172
    170173      IOperator op = GetOperatorTag(node);
    171174      if (op != null) {
    172175        operatorNodeTable[op].Remove(node);
    173176        if (operatorNodeTable[op].Count == 0) {
     177          op.ItemImageChanged -= new EventHandler(op_ItemImageChanged);
    174178          op.NameChanged -= new EventHandler(op_NameChanged);
    175179          op.BreakpointChanged -= new EventHandler(op_BreakpointChanged);
     
    229233          node.Text = opParam.Name + ": ";
    230234          FillTreeNode(node, opParam.Value);
     235        }
     236      }
     237    }
     238    void op_ItemImageChanged(object sender, EventArgs e) {
     239      if (InvokeRequired)
     240        Invoke(new EventHandler(op_ItemImageChanged), sender, e);
     241      else {
     242        IOperator op = (IOperator)sender;
     243        foreach (TreeNode node in operatorNodeTable[op]) {
     244          int i = node.ImageIndex;
     245          graphTreeView.ImageList.Images[i] = op.ItemImage;
     246          node.ImageIndex = -1;
     247          node.SelectedImageIndex = -1;
     248          node.ImageIndex = i;
     249          node.SelectedImageIndex = i;
    231250        }
    232251      }
     
    433452        ((Tuple<IValueParameter<IOperator>, IOperator>)node.Tag).Item2 = op;
    434453    }
     454
     455    private void CorrectImageIndexes(TreeNodeCollection nodes, int removedIndex) {
     456      foreach (TreeNode node in nodes) {
     457        if (node.ImageIndex > removedIndex) {
     458          node.ImageIndex--;
     459          node.SelectedImageIndex--;
     460        }
     461        CorrectImageIndexes(node.Nodes, removedIndex);
     462      }
     463    }
    435464    #endregion
    436465  }
Note: See TracChangeset for help on using the changeset viewer.