Changeset 12200


Ignore:
Timestamp:
03/16/15 09:30:34 (7 years ago)
Author:
pfleck
Message:

#2025 Fixed search and initialization bug.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs

    r12184 r12200  
    2929namespace HeuristicLab.Optimizer {
    3030  internal partial class NewItemDialog : Form {
     31    private bool isInitialized;
     32
    3133    private List<TreeNode> treeNodes;
    3234    private string currentSearchString;
     
    5860
    5961    private void NewItemDialog_Load(object sender, EventArgs e) {
     62      if (isInitialized) return;
     63
    6064      var categories =
    6165        from t in ApplicationManager.Manager.GetTypes(typeof(IItem))
     
    6872      imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Namespace);  // plugins
    6973      imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Interface);  // interfacesitemsListView.SmallImageList = new ImageList();
    70       imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Template);   // generic typesitemsListView.SmallImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Class);  // default icon
     74      imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Template);   // generic types
    7175
    7276      foreach (var category in categories) {
     
    105109      foreach (var node in treeNodes)
    106110        typesTreeView.Nodes.Add((TreeNode)node.Clone());
    107       //for (int i = 0; i < itemsListView.Columns.Count; i++)
    108       //  itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     111      isInitialized = true;
    109112    }
    110113
     
    128131          RestoreSelectedNode(selectedNode);
    129132          typesTreeView.EndUpdate();
    130           // remove nodes
    131           typesTreeView.BeginUpdate();
    132           int i = 0;
    133           while (i < typesTreeView.Nodes.Count) {
    134             int j = 0;
    135             while (j < typesTreeView.Nodes[i].Nodes.Count) {
    136               if (!typesTreeView.Nodes[i].Nodes[j].Text.ToLower().Contains(searchString)) {
    137                 if ((typesTreeView.Nodes[i].Nodes[j].Tag as Type).Equals(SelectedType))
    138                   SelectedType = null;
    139                 typesTreeView.Nodes[i].Nodes[j].Remove();
    140               } else
    141                 j++;
    142             }
    143             if (typesTreeView.Nodes[i].Nodes.Count == 0)
    144               typesTreeView.Nodes[i].Remove();
    145             else
    146               i++;
    147           }
    148           typesTreeView.EndUpdate();
    149           currentSearchString = searchString;
    150 
    151           // if there is just one type node left, select by default
    152           if (typesTreeView.Nodes.Count == 1) {
    153             if (typesTreeView.Nodes[0].Nodes.Count == 1) {
    154               typesTreeView.SelectedNode = typesTreeView.Nodes[0].Nodes[0];
    155             }
    156           }
    157 
    158           if (typesTreeView.Nodes.Count == 0) {
    159             SelectedType = null;
    160             typesTreeView.Enabled = false;
    161           } else {
    162             SetTreeNodeVisibility();
    163             typesTreeView.Enabled = true;
    164           }
    165           UpdateDescription();
    166         }
     133        }
     134
     135        // remove nodes
     136        typesTreeView.BeginUpdate();
     137        int i = 0;
     138        while (i < typesTreeView.Nodes.Count) {
     139          int j = 0;
     140          while (j < typesTreeView.Nodes[i].Nodes.Count) {
     141            if (!typesTreeView.Nodes[i].Nodes[j].Text.ToLower().Contains(searchString)) {
     142              if ((typesTreeView.Nodes[i].Nodes[j].Tag as Type).Equals(SelectedType))
     143                SelectedType = null;
     144              typesTreeView.Nodes[i].Nodes[j].Remove();
     145            } else
     146              j++;
     147          }
     148          if (typesTreeView.Nodes[i].Nodes.Count == 0)
     149            typesTreeView.Nodes[i].Remove();
     150          else
     151            i++;
     152        }
     153        typesTreeView.EndUpdate();
     154        currentSearchString = searchString;
     155
     156        // if there is just one type node left, select by default
     157        if (typesTreeView.Nodes.Count == 1) {
     158          if (typesTreeView.Nodes[0].Nodes.Count == 1) {
     159            typesTreeView.SelectedNode = typesTreeView.Nodes[0].Nodes[0];
     160          }
     161        }
     162
     163        if (typesTreeView.Nodes.Count == 0) {
     164          SelectedType = null;
     165          typesTreeView.Enabled = false;
     166        } else {
     167          SetTreeNodeVisibility();
     168          typesTreeView.Enabled = true;
     169        }
     170        UpdateDescription();
    167171      }
    168172    }
Note: See TracChangeset for help on using the changeset viewer.