Index: /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs
===================================================================
--- /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 12200)
+++ /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 12201)
@@ -52,4 +52,6 @@
       this.searchLabel = new System.Windows.Forms.Label();
       this.splitContainer = new System.Windows.Forms.SplitContainer();
+      this.expandAllButton = new System.Windows.Forms.Button();
+      this.collapseAllButton = new System.Windows.Forms.Button();
       this.searchTextBox = new System.Windows.Forms.TextBox();
       this.typesTreeView = new System.Windows.Forms.TreeView();
@@ -89,5 +91,5 @@
       // 
       this.searchLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Zoom;
-      this.searchLabel.Location = new System.Drawing.Point(3, 3);
+      this.searchLabel.Location = new System.Drawing.Point(57, 5);
       this.searchLabel.Name = "searchLabel";
       this.searchLabel.Size = new System.Drawing.Size(20, 20);
@@ -106,4 +108,6 @@
       // splitContainer.Panel1
       // 
+      this.splitContainer.Panel1.Controls.Add(this.expandAllButton);
+      this.splitContainer.Panel1.Controls.Add(this.collapseAllButton);
       this.splitContainer.Panel1.Controls.Add(this.searchLabel);
       this.splitContainer.Panel1.Controls.Add(this.searchTextBox);
@@ -117,11 +121,31 @@
       this.splitContainer.TabIndex = 0;
       // 
+      // expandAllButton
+      // 
+      this.expandAllButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomIn;
+      this.expandAllButton.Location = new System.Drawing.Point(3, 3);
+      this.expandAllButton.Name = "expandAllButton";
+      this.expandAllButton.Size = new System.Drawing.Size(23, 23);
+      this.expandAllButton.TabIndex = 4;
+      this.expandAllButton.UseVisualStyleBackColor = true;
+      this.expandAllButton.Click += new System.EventHandler(this.expandAllButton_Click);
+      // 
+      // collapseAllButton
+      // 
+      this.collapseAllButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomOut;
+      this.collapseAllButton.Location = new System.Drawing.Point(26, 3);
+      this.collapseAllButton.Name = "collapseAllButton";
+      this.collapseAllButton.Size = new System.Drawing.Size(23, 23);
+      this.collapseAllButton.TabIndex = 5;
+      this.collapseAllButton.UseVisualStyleBackColor = true;
+      this.collapseAllButton.Click += new System.EventHandler(this.collapseAllButton_Click);
+      // 
       // searchTextBox
       // 
       this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.searchTextBox.Location = new System.Drawing.Point(29, 3);
+      this.searchTextBox.Location = new System.Drawing.Point(83, 5);
       this.searchTextBox.Name = "searchTextBox";
-      this.searchTextBox.Size = new System.Drawing.Size(568, 20);
+      this.searchTextBox.Size = new System.Drawing.Size(514, 20);
       this.searchTextBox.TabIndex = 1;
       this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
@@ -202,4 +226,6 @@
     private System.Windows.Forms.TreeView typesTreeView;
     private System.Windows.Forms.ImageList imageList;
+    private System.Windows.Forms.Button expandAllButton;
+    private System.Windows.Forms.Button collapseAllButton;
   }
 }
Index: /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs
===================================================================
--- /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 12200)
+++ /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 12201)
@@ -136,8 +136,9 @@
         typesTreeView.BeginUpdate();
         int i = 0;
+        var searchTokens = searchString.Split(' ');
         while (i < typesTreeView.Nodes.Count) {
           int j = 0;
           while (j < typesTreeView.Nodes[i].Nodes.Count) {
-            if (!typesTreeView.Nodes[i].Nodes[j].Text.ToLower().Contains(searchString)) {
+            if (searchTokens.Any(searchToken => !typesTreeView.Nodes[i].Nodes[j].Text.ToLower().Contains(searchToken))) {
               if ((typesTreeView.Nodes[i].Nodes[j].Tag as Type).Equals(SelectedType))
                 SelectedType = null;
@@ -200,5 +201,5 @@
 
     #region Control Events
-    protected virtual void searchTextBox_TextChanged(object sender, System.EventArgs e) {
+    protected virtual void searchTextBox_TextChanged(object sender, EventArgs e) {
       Filter(searchTextBox.Text);
     }
@@ -257,4 +258,11 @@
       okButton.Enabled = SelectedType != null;
     }
+
+    private void expandAllButton_Click(object sender, EventArgs e) {
+      typesTreeView.ExpandAll();
+    }
+    private void collapseAllButton_Click(object sender, EventArgs e) {
+      typesTreeView.CollapseAll();
+    }
   }
 }
