Index: /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs
===================================================================
--- /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 12202)
+++ /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 12203)
@@ -52,14 +52,20 @@
       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.availableItemsGroupBox = new System.Windows.Forms.GroupBox();
       this.searchTextBox = new System.Windows.Forms.TextBox();
       this.typesTreeView = new System.Windows.Forms.TreeView();
       this.imageList = new System.Windows.Forms.ImageList(this.components);
+      this.descriptionGroupBox = new System.Windows.Forms.GroupBox();
+      this.versionTextBox = new System.Windows.Forms.TextBox();
+      this.pluginTextBox = new System.Windows.Forms.TextBox();
       this.descriptionTextBox = new System.Windows.Forms.TextBox();
+      this.expandAllButton = new System.Windows.Forms.Button();
+      this.collapseAllButton = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
       this.splitContainer.Panel2.SuspendLayout();
       this.splitContainer.SuspendLayout();
+      this.availableItemsGroupBox.SuspendLayout();
+      this.descriptionGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -72,5 +78,5 @@
       this.okButton.Name = "okButton";
       this.okButton.Size = new System.Drawing.Size(75, 23);
-      this.okButton.TabIndex = 2;
+      this.okButton.TabIndex = 1;
       this.okButton.Text = "&OK";
       this.okButton.UseVisualStyleBackColor = true;
@@ -84,5 +90,5 @@
       this.cancelButton.Name = "cancelButton";
       this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 3;
+      this.cancelButton.TabIndex = 2;
       this.cancelButton.Text = "&Cancel";
       this.cancelButton.UseVisualStyleBackColor = true;
@@ -91,5 +97,5 @@
       // 
       this.searchLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Zoom;
-      this.searchLabel.Location = new System.Drawing.Point(57, 5);
+      this.searchLabel.Location = new System.Drawing.Point(6, 17);
       this.searchLabel.Name = "searchLabel";
       this.searchLabel.Size = new System.Drawing.Size(20, 20);
@@ -102,4 +108,5 @@
             | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
       this.splitContainer.Location = new System.Drawing.Point(12, 12);
       this.splitContainer.Name = "splitContainer";
@@ -108,45 +115,37 @@
       // 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);
-      this.splitContainer.Panel1.Controls.Add(this.typesTreeView);
+      this.splitContainer.Panel1.Controls.Add(this.availableItemsGroupBox);
       // 
       // splitContainer.Panel2
       // 
-      this.splitContainer.Panel2.Controls.Add(this.descriptionTextBox);
+      this.splitContainer.Panel2.Controls.Add(this.descriptionGroupBox);
       this.splitContainer.Size = new System.Drawing.Size(600, 391);
-      this.splitContainer.SplitterDistance = 292;
+      this.splitContainer.SplitterDistance = 258;
       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 = 1;
-      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 = 2;
-      this.collapseAllButton.UseVisualStyleBackColor = true;
-      this.collapseAllButton.Click += new System.EventHandler(this.collapseAllButton_Click);
+      this.splitContainer.TabStop = false;
+      // 
+      // availableItemsGroupBox
+      // 
+      this.availableItemsGroupBox.Controls.Add(this.searchLabel);
+      this.availableItemsGroupBox.Controls.Add(this.searchTextBox);
+      this.availableItemsGroupBox.Controls.Add(this.typesTreeView);
+      this.availableItemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.availableItemsGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.availableItemsGroupBox.Name = "availableItemsGroupBox";
+      this.availableItemsGroupBox.Padding = new System.Windows.Forms.Padding(3, 15, 3, 3);
+      this.availableItemsGroupBox.Size = new System.Drawing.Size(600, 258);
+      this.availableItemsGroupBox.TabIndex = 5;
+      this.availableItemsGroupBox.TabStop = false;
+      this.availableItemsGroupBox.Text = "Available Items";
       // 
       // 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(83, 5);
+      this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.searchTextBox.Location = new System.Drawing.Point(32, 17);
       this.searchTextBox.Name = "searchTextBox";
-      this.searchTextBox.Size = new System.Drawing.Size(514, 20);
-      this.searchTextBox.TabIndex = 3;
+      this.searchTextBox.Size = new System.Drawing.Size(562, 20);
+      this.searchTextBox.TabIndex = 1;
       this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
       // 
@@ -159,10 +158,10 @@
       this.typesTreeView.ImageIndex = 0;
       this.typesTreeView.ImageList = this.imageList;
-      this.typesTreeView.Location = new System.Drawing.Point(3, 29);
+      this.typesTreeView.Location = new System.Drawing.Point(6, 41);
       this.typesTreeView.Name = "typesTreeView";
       this.typesTreeView.SelectedImageIndex = 0;
       this.typesTreeView.ShowNodeToolTips = true;
-      this.typesTreeView.Size = new System.Drawing.Size(594, 260);
-      this.typesTreeView.TabIndex = 4;
+      this.typesTreeView.Size = new System.Drawing.Size(588, 211);
+      this.typesTreeView.TabIndex = 2;
       this.typesTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.itemsTreeView_AfterSelect);
       this.typesTreeView.VisibleChanged += new System.EventHandler(this.itemsTreeView_VisibleChanged);
@@ -175,14 +174,76 @@
       this.imageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
+      // descriptionGroupBox
+      // 
+      this.descriptionGroupBox.Controls.Add(this.versionTextBox);
+      this.descriptionGroupBox.Controls.Add(this.pluginTextBox);
+      this.descriptionGroupBox.Controls.Add(this.descriptionTextBox);
+      this.descriptionGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.descriptionGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.descriptionGroupBox.Name = "descriptionGroupBox";
+      this.descriptionGroupBox.Size = new System.Drawing.Size(600, 129);
+      this.descriptionGroupBox.TabIndex = 1;
+      this.descriptionGroupBox.TabStop = false;
+      this.descriptionGroupBox.Text = "Description";
+      // 
+      // versionTextBox
+      // 
+      this.versionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.versionTextBox.Location = new System.Drawing.Point(444, 20);
+      this.versionTextBox.Name = "versionTextBox";
+      this.versionTextBox.ReadOnly = true;
+      this.versionTextBox.Size = new System.Drawing.Size(150, 20);
+      this.versionTextBox.TabIndex = 0;
+      this.versionTextBox.TabStop = false;
+      // 
+      // pluginTextBox
+      // 
+      this.pluginTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.pluginTextBox.Location = new System.Drawing.Point(6, 20);
+      this.pluginTextBox.Name = "pluginTextBox";
+      this.pluginTextBox.ReadOnly = true;
+      this.pluginTextBox.Size = new System.Drawing.Size(432, 20);
+      this.pluginTextBox.TabIndex = 0;
+      this.pluginTextBox.TabStop = false;
+      // 
       // descriptionTextBox
       // 
+      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.descriptionTextBox.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.descriptionTextBox.Location = new System.Drawing.Point(3, 3);
+      this.descriptionTextBox.Location = new System.Drawing.Point(6, 46);
       this.descriptionTextBox.Multiline = true;
       this.descriptionTextBox.Name = "descriptionTextBox";
       this.descriptionTextBox.ReadOnly = true;
       this.descriptionTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-      this.descriptionTextBox.Size = new System.Drawing.Size(594, 89);
+      this.descriptionTextBox.Size = new System.Drawing.Size(588, 77);
       this.descriptionTextBox.TabIndex = 0;
+      this.descriptionTextBox.TabStop = false;
+      // 
+      // expandAllButton
+      // 
+      this.expandAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.expandAllButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomIn;
+      this.expandAllButton.Location = new System.Drawing.Point(12, 409);
+      this.expandAllButton.Name = "expandAllButton";
+      this.expandAllButton.Size = new System.Drawing.Size(23, 23);
+      this.expandAllButton.TabIndex = 0;
+      this.expandAllButton.TabStop = false;
+      this.expandAllButton.UseVisualStyleBackColor = true;
+      this.expandAllButton.Click += new System.EventHandler(this.expandAllButton_Click);
+      // 
+      // collapseAllButton
+      // 
+      this.collapseAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.collapseAllButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomOut;
+      this.collapseAllButton.Location = new System.Drawing.Point(41, 409);
+      this.collapseAllButton.Name = "collapseAllButton";
+      this.collapseAllButton.Size = new System.Drawing.Size(23, 23);
+      this.collapseAllButton.TabIndex = 0;
+      this.collapseAllButton.TabStop = false;
+      this.collapseAllButton.UseVisualStyleBackColor = true;
+      this.collapseAllButton.Click += new System.EventHandler(this.collapseAllButton_Click);
       // 
       // NewItemDialog
@@ -195,4 +256,6 @@
       this.Controls.Add(this.cancelButton);
       this.Controls.Add(this.okButton);
+      this.Controls.Add(this.expandAllButton);
+      this.Controls.Add(this.collapseAllButton);
       this.MaximizeBox = false;
       this.MinimizeBox = false;
@@ -206,9 +269,11 @@
       this.Shown += new System.EventHandler(this.NewItemDialog_Shown);
       this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel1.PerformLayout();
       this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.Panel2.PerformLayout();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
       this.splitContainer.ResumeLayout(false);
+      this.availableItemsGroupBox.ResumeLayout(false);
+      this.availableItemsGroupBox.PerformLayout();
+      this.descriptionGroupBox.ResumeLayout(false);
+      this.descriptionGroupBox.PerformLayout();
       this.ResumeLayout(false);
 
@@ -228,4 +293,8 @@
     private System.Windows.Forms.Button expandAllButton;
     private System.Windows.Forms.Button collapseAllButton;
+    private System.Windows.Forms.GroupBox availableItemsGroupBox;
+    private System.Windows.Forms.GroupBox descriptionGroupBox;
+    private System.Windows.Forms.TextBox versionTextBox;
+    private System.Windows.Forms.TextBox pluginTextBox;
   }
 }
Index: /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs
===================================================================
--- /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 12202)
+++ /branches/NewItemDialog/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 12203)
@@ -30,5 +30,4 @@
   internal partial class NewItemDialog : Form {
     private bool isInitialized;
-    private bool firstShown = true;
 
     private List<TreeNode> treeNodes;
@@ -113,8 +112,4 @@
     private void NewItemDialog_Shown(object sender, EventArgs e) {
       SelectedType = null;
-      if (firstShown) {
-        searchTextBox.Focus();
-        firstShown = false;
-      }
     }
 
@@ -183,13 +178,23 @@
         if (category != null) {
           descriptionTextBox.Text = category;
+          pluginTextBox.Text = string.Empty;
+          versionTextBox.Text = string.Empty;
         }
         Type type = typesTreeView.SelectedNode.Tag as Type;
         if (type != null) {
           string description = ItemAttribute.GetDescription(type);
+          var version = ItemAttribute.GetVersion(type);
+          var plugin = ApplicationManager.Manager.GetDeclaringPlugin(type);
           if (description != null)
             descriptionTextBox.Text = description;
+          if (plugin != null)
+            pluginTextBox.Text = plugin.Name;
+          if (version != null)
+            versionTextBox.Text = version.ToString();
         }
       } else if (typesTreeView.Nodes.Count == 0) {
         descriptionTextBox.Text = "No types found";
+        pluginTextBox.Text = string.Empty;
+        versionTextBox.Text = string.Empty;
       }
     }
@@ -233,12 +238,12 @@
     }
     private void SetTreeNodeVisibility() {
-      typesTreeView.ExpandAll();
       TreeNode selectedNode = typesTreeView.SelectedNode;
-      if (selectedNode != null) {
-        typesTreeView.SelectedNode = selectedNode;
-        selectedNode.EnsureVisible();
-      } else if (string.IsNullOrEmpty(currentSearchString) && typesTreeView.Nodes.Count > 1) {
-        typesTreeView.Nodes[0].EnsureVisible();
-      }
+      if (string.IsNullOrEmpty(currentSearchString) && (typesTreeView.Nodes.Count > 1)) {
+        typesTreeView.CollapseAll();
+        if (selectedNode != null) typesTreeView.SelectedNode = selectedNode;
+      } else {
+        typesTreeView.ExpandAll();
+      }
+      if (selectedNode != null) selectedNode.EnsureVisible();
     }
     #endregion
