Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/AvailablePluginsView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/AvailablePluginsView.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,317 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class AvailablePluginsView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.pluginsListView = new HeuristicLab.PluginInfrastructure.Advanced.MultiSelectListView();
-      this.nameHeader = new System.Windows.Forms.ColumnHeader();
-      this.versionHeader = new System.Windows.Forms.ColumnHeader();
-      this.descriptionHeader = new System.Windows.Forms.ColumnHeader();
-      this.pluginsImageList = new System.Windows.Forms.ImageList(this.components);
-      this.productsListView = new System.Windows.Forms.ListView();
-      this.productNameHeader = new System.Windows.Forms.ColumnHeader();
-      this.productVersionHeader = new System.Windows.Forms.ColumnHeader();
-      this.productLargeImageList = new System.Windows.Forms.ImageList(this.components);
-      this.productImageList = new System.Windows.Forms.ImageList(this.components);
-      this.productsGroupBox = new System.Windows.Forms.GroupBox();
-      this.showDetailsButton = new System.Windows.Forms.RadioButton();
-      this.showLargeIconsButton = new System.Windows.Forms.RadioButton();
-      this.installProductsButton = new System.Windows.Forms.Button();
-      this.refreshButton = new System.Windows.Forms.Button();
-      this.pluginsGroupBox = new System.Windows.Forms.GroupBox();
-      this.installPluginsButton = new System.Windows.Forms.Button();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.productsGroupBox.SuspendLayout();
-      this.pluginsGroupBox.SuspendLayout();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // pluginsListView
-      // 
-      this.pluginsListView.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.pluginsListView.CheckBoxes = true;
-      this.pluginsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.nameHeader,
-            this.versionHeader,
-            this.descriptionHeader});
-      this.pluginsListView.Location = new System.Drawing.Point(6, 19);
-      this.pluginsListView.Name = "pluginsListView";
-      this.pluginsListView.ShowGroups = false;
-      this.pluginsListView.Size = new System.Drawing.Size(266, 502);
-      this.pluginsListView.SmallImageList = this.pluginsImageList;
-      this.pluginsListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.pluginsListView.SuppressItemCheckedEvents = false;
-      this.pluginsListView.TabIndex = 0;
-      this.pluginsListView.UseCompatibleStateImageBehavior = false;
-      this.pluginsListView.View = System.Windows.Forms.View.Details;
-      this.pluginsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.remotePluginsListView_ItemChecked);
-      // 
-      // nameHeader
-      // 
-      this.nameHeader.Text = "Name";
-      this.nameHeader.Width = 185;
-      // 
-      // versionHeader
-      // 
-      this.versionHeader.Text = "Version";
-      this.versionHeader.Width = 93;
-      // 
-      // descriptionHeader
-      // 
-      this.descriptionHeader.Text = "Description";
-      this.descriptionHeader.Width = 250;
-      // 
-      // pluginsImageList
-      // 
-      this.pluginsImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.pluginsImageList.ImageSize = new System.Drawing.Size(16, 16);
-      this.pluginsImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // productsListView
-      // 
-      this.productsListView.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.productsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.productNameHeader,
-            this.productVersionHeader});
-      this.productsListView.HideSelection = false;
-      this.productsListView.LargeImageList = this.productLargeImageList;
-      this.productsListView.Location = new System.Drawing.Point(6, 50);
-      this.productsListView.MultiSelect = false;
-      this.productsListView.Name = "productsListView";
-      this.productsListView.ShowGroups = false;
-      this.productsListView.Size = new System.Drawing.Size(240, 471);
-      this.productsListView.SmallImageList = this.productImageList;
-      this.productsListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.productsListView.TabIndex = 18;
-      this.productsListView.UseCompatibleStateImageBehavior = false;
-      this.productsListView.View = System.Windows.Forms.View.Details;
-      this.productsListView.SelectedIndexChanged += new System.EventHandler(this.productsListView_SelectedIndexChanged);
-      // 
-      // productNameHeader
-      // 
-      this.productNameHeader.Text = "Name";
-      // 
-      // productVersionHeader
-      // 
-      this.productVersionHeader.Text = "Version";
-      // 
-      // productLargeImageList
-      // 
-      this.productLargeImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.productLargeImageList.ImageSize = new System.Drawing.Size(32, 32);
-      this.productLargeImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // productImageList
-      // 
-      this.productImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.productImageList.ImageSize = new System.Drawing.Size(16, 16);
-      this.productImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // productsGroupBox
-      // 
-      this.productsGroupBox.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.productsGroupBox.Controls.Add(this.showDetailsButton);
-      this.productsGroupBox.Controls.Add(this.showLargeIconsButton);
-      this.productsGroupBox.Controls.Add(this.installProductsButton);
-      this.productsGroupBox.Controls.Add(this.refreshButton);
-      this.productsGroupBox.Controls.Add(this.productsListView);
-      this.productsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.productsGroupBox.Name = "productsGroupBox";
-      this.productsGroupBox.Size = new System.Drawing.Size(252, 558);
-      this.productsGroupBox.TabIndex = 19;
-      this.productsGroupBox.TabStop = false;
-      this.productsGroupBox.Text = "Products";
-      // 
-      // showDetailsButton
-      // 
-      this.showDetailsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.showDetailsButton.Appearance = System.Windows.Forms.Appearance.Button;
-      this.showDetailsButton.Checked = true;
-      this.showDetailsButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.ShowDetails;
-      this.showDetailsButton.Location = new System.Drawing.Point(221, 19);
-      this.showDetailsButton.Name = "showDetailsButton";
-      this.showDetailsButton.Size = new System.Drawing.Size(25, 25);
-      this.showDetailsButton.TabIndex = 22;
-      this.showDetailsButton.TabStop = true;
-      this.toolTip.SetToolTip(this.showDetailsButton, "Show Details");
-      this.showDetailsButton.UseVisualStyleBackColor = true;
-      this.showDetailsButton.CheckedChanged += new System.EventHandler(this.showDetailsButton_CheckedChanged);
-      // 
-      // showLargeIconsButton
-      // 
-      this.showLargeIconsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.showLargeIconsButton.Appearance = System.Windows.Forms.Appearance.Button;
-      this.showLargeIconsButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.ShowIcons;
-      this.showLargeIconsButton.Location = new System.Drawing.Point(190, 19);
-      this.showLargeIconsButton.Name = "showLargeIconsButton";
-      this.showLargeIconsButton.Size = new System.Drawing.Size(25, 25);
-      this.showLargeIconsButton.TabIndex = 21;
-      this.toolTip.SetToolTip(this.showLargeIconsButton, "Show Large Icons");
-      this.showLargeIconsButton.UseVisualStyleBackColor = true;
-      this.showLargeIconsButton.CheckedChanged += new System.EventHandler(this.showLargeIconsButton_CheckedChanged);
-      // 
-      // installProductsButton
-      // 
-      this.installProductsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.installProductsButton.Enabled = false;
-      this.installProductsButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Install;
-      this.installProductsButton.Location = new System.Drawing.Point(6, 527);
-      this.installProductsButton.Name = "installProductsButton";
-      this.installProductsButton.Size = new System.Drawing.Size(146, 25);
-      this.installProductsButton.TabIndex = 20;
-      this.installProductsButton.Text = "Install Selected Product";
-      this.installProductsButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.installProductsButton, "Install all plugins for the selected product");
-      this.installProductsButton.UseVisualStyleBackColor = true;
-      this.installProductsButton.Click += new System.EventHandler(this.installProductsButton_Click);
-      // 
-      // refreshButton
-      // 
-      this.refreshButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Internet;
-      this.refreshButton.Location = new System.Drawing.Point(6, 19);
-      this.refreshButton.Name = "refreshButton";
-      this.refreshButton.Size = new System.Drawing.Size(72, 25);
-      this.refreshButton.TabIndex = 16;
-      this.refreshButton.Text = "Refresh";
-      this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.refreshButton, "Refresh available products from HeuristicLab deployment service");
-      this.refreshButton.UseVisualStyleBackColor = true;
-      this.refreshButton.Click += new System.EventHandler(this.refreshRemoteButton_Click);
-      // 
-      // pluginsGroupBox
-      // 
-      this.pluginsGroupBox.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.pluginsGroupBox.Controls.Add(this.pluginsListView);
-      this.pluginsGroupBox.Controls.Add(this.installPluginsButton);
-      this.pluginsGroupBox.Location = new System.Drawing.Point(-1, 0);
-      this.pluginsGroupBox.Name = "pluginsGroupBox";
-      this.pluginsGroupBox.Size = new System.Drawing.Size(278, 558);
-      this.pluginsGroupBox.TabIndex = 20;
-      this.pluginsGroupBox.TabStop = false;
-      this.pluginsGroupBox.Text = "Plugins";
-      // 
-      // installPluginsButton
-      // 
-      this.installPluginsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.installPluginsButton.Enabled = false;
-      this.installPluginsButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Install;
-      this.installPluginsButton.Location = new System.Drawing.Point(6, 527);
-      this.installPluginsButton.Name = "installPluginsButton";
-      this.installPluginsButton.Size = new System.Drawing.Size(140, 25);
-      this.installPluginsButton.TabIndex = 17;
-      this.installPluginsButton.Text = "Install Selected Plugins";
-      this.installPluginsButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.installPluginsButton, "Install only checked plugins");
-      this.installPluginsButton.UseVisualStyleBackColor = true;
-      this.installPluginsButton.Click += new System.EventHandler(this.installPluginsButton_Click);
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.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.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.productsGroupBox);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.pluginsGroupBox);
-      this.splitContainer.Size = new System.Drawing.Size(533, 558);
-      this.splitContainer.SplitterDistance = 252;
-      this.splitContainer.TabIndex = 21;
-      // 
-      // RemotePluginInstallerView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.splitContainer);
-      this.Name = "RemotePluginInstallerView";
-      this.Size = new System.Drawing.Size(533, 558);
-      this.productsGroupBox.ResumeLayout(false);
-      this.pluginsGroupBox.ResumeLayout(false);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private MultiSelectListView pluginsListView;
-    private System.Windows.Forms.ColumnHeader nameHeader;
-    private System.Windows.Forms.ColumnHeader versionHeader;
-    private System.Windows.Forms.ColumnHeader descriptionHeader;
-    private System.Windows.Forms.Button refreshButton;
-    private System.Windows.Forms.Button installPluginsButton;
-    private System.Windows.Forms.ListView productsListView;
-    private System.Windows.Forms.GroupBox productsGroupBox;
-    private System.Windows.Forms.GroupBox pluginsGroupBox;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.Button installProductsButton;
-    private System.Windows.Forms.ColumnHeader productNameHeader;
-    private System.Windows.Forms.ColumnHeader productVersionHeader;
-    private System.Windows.Forms.ImageList productImageList;
-    private System.Windows.Forms.ImageList pluginsImageList;
-    private System.Windows.Forms.RadioButton showDetailsButton;
-    private System.Windows.Forms.RadioButton showLargeIconsButton;
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.ImageList productLargeImageList;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/AvailablePluginsView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/AvailablePluginsView.cs	(revision 13332)
+++ 	(revision )
@@ -1,329 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure.Manager;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class AvailablePluginsView : InstallationManagerControl {
-    private class RefreshBackgroundWorkerResult {
-      public IEnumerable<IPluginDescription> RemotePlugins { get; set; }
-      public IEnumerable<DeploymentService.ProductDescription> RemoteProducts { get; set; }
-    }
-    private class UpdateOrInstallPluginsBackgroundWorkerArgument {
-      public IEnumerable<IPluginDescription> PluginsToUpdate { get; set; }
-      public IEnumerable<IPluginDescription> PluginsToInstall { get; set; }
-    }
-    private const string PluginDiscoveryMessage = "Looking for new plugins...";
-    private BackgroundWorker refreshServerPluginsBackgroundWorker;
-    private BackgroundWorker updateOrInstallPluginsBackgroundWorker;
-
-    private IEnumerable<DeploymentService.ProductDescription> products;
-    private IEnumerable<IPluginDescription> plugins;
-
-    private IEnumerable<IPluginDescription> CheckedPlugins {
-      get {
-        return (from item in pluginsListView.Items.OfType<ListViewItem>()
-                where item.Checked
-                let plugin = item.Tag as IPluginDescription
-                where plugin != null
-                select plugin).ToList();
-      }
-    }
-
-    private InstallationManager installationManager;
-    public InstallationManager InstallationManager {
-      get { return installationManager; }
-      set { installationManager = value; }
-    }
-    private PluginManager pluginManager;
-    public PluginManager PluginManager {
-      get { return pluginManager; }
-      set { pluginManager = value; }
-    }
-    public AvailablePluginsView() {
-      InitializeComponent();
-      productImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Setup_Install);
-      productLargeImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Setup_Install);
-      pluginsImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Plugin);
-      refreshServerPluginsBackgroundWorker = new BackgroundWorker();
-      refreshServerPluginsBackgroundWorker.DoWork += new DoWorkEventHandler(refreshServerPluginsBackgroundWorker_DoWork);
-      refreshServerPluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(refreshServerPluginsBackgroundWorker_RunWorkerCompleted);
-
-      updateOrInstallPluginsBackgroundWorker = new BackgroundWorker();
-      updateOrInstallPluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updateOrInstallPluginsBackgroundWorker_DoWork);
-      updateOrInstallPluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updateOrInstallPluginsBackgroundWorker_RunWorkerCompleted);
-    }
-
-
-    #region event handlers for refresh server plugins background worker
-    void refreshServerPluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-          "Please check your connection settings and user credentials.");
-      } else {
-        RefreshBackgroundWorkerResult refreshResult = (RefreshBackgroundWorkerResult)e.Result;
-        products = refreshResult.RemoteProducts;
-        plugins = refreshResult.RemotePlugins;
-        UpdateControl();
-      }
-      StatusView.UnlockUI();
-      StatusView.RemoveMessage(PluginDiscoveryMessage);
-      StatusView.HideProgressIndicator();
-    }
-
-    void refreshServerPluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      RefreshBackgroundWorkerResult result = new RefreshBackgroundWorkerResult();
-      result.RemotePlugins = installationManager.GetRemotePluginList();
-      result.RemoteProducts = installationManager.GetRemoteProductList();
-      e.Result = result;
-    }
-    #endregion
-    #region event handlers for plugin update background worker
-    void updateOrInstallPluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-          "Please check your connection settings and user credentials.");
-      } else {
-        UpdateControl();
-      }
-      StatusView.UnlockUI();
-      StatusView.HideProgressIndicator();
-    }
-
-    void updateOrInstallPluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      UpdateOrInstallPluginsBackgroundWorkerArgument info = (UpdateOrInstallPluginsBackgroundWorkerArgument)e.Argument;
-      bool cancelled = false;
-      if (info.PluginsToInstall.Count() > 0)
-        installationManager.Install(info.PluginsToInstall, out cancelled);
-      if (info.PluginsToUpdate.Count() > 0)
-        installationManager.Update(info.PluginsToUpdate, out cancelled);
-
-      if (!cancelled && (info.PluginsToInstall.Count() > 0 || info.PluginsToUpdate.Count() > 0))
-        pluginManager.DiscoverAndCheckPlugins();
-    }
-    #endregion
-
-
-    #region button events
-    private void refreshRemoteButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.ShowMessage(PluginDiscoveryMessage);
-      refreshServerPluginsBackgroundWorker.RunWorkerAsync();
-    }
-    private void installPluginsButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      var updateOrInstallInfo = new UpdateOrInstallPluginsBackgroundWorkerArgument();
-      // if there is a local plugin with same name and same major and minor version then it's an update
-      var pluginsToUpdate = from remotePlugin in CheckedPlugins
-                            let matchingLocalPlugins = from localPlugin in pluginManager.Plugins
-                                                       where localPlugin.Name == remotePlugin.Name
-                                                       where localPlugin.Version.Major == remotePlugin.Version.Major
-                                                       where localPlugin.Version.Minor == remotePlugin.Version.Minor
-                                                       where IsNewerThan(remotePlugin, localPlugin)
-                                                       select localPlugin
-                            where matchingLocalPlugins.Count() > 0
-                            select remotePlugin;
-
-      // otherwise install a new plugin
-      var pluginsToInstall = CheckedPlugins.Except(pluginsToUpdate);
-
-      updateOrInstallInfo.PluginsToInstall = pluginsToInstall;
-      updateOrInstallInfo.PluginsToUpdate = pluginsToUpdate;
-      updateOrInstallPluginsBackgroundWorker.RunWorkerAsync(updateOrInstallInfo);
-    }
-    private void installProductsButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      var updateOrInstallInfo = new UpdateOrInstallPluginsBackgroundWorkerArgument();
-      var selectedProduct = (DeploymentService.ProductDescription)productsListView.SelectedItems[0].Tag;
-      // if there is a local plugin with same name and same major and minor version then it's an update
-      var pluginsToUpdate = from plugin in selectedProduct.Plugins
-                            let matchingLocalPlugins = from localPlugin in pluginManager.Plugins
-                                                       where localPlugin.Name == plugin.Name
-                                                       where localPlugin.Version.Major == plugin.Version.Major
-                                                       where localPlugin.Version.Minor == plugin.Version.Minor
-                                                       where IsNewerThan(plugin, localPlugin)
-                                                       select localPlugin
-                            where matchingLocalPlugins.Count() > 0
-                            select plugin;
-
-      // otherwise install a new plugin
-      var pluginsToInstall = selectedProduct.Plugins.Except(pluginsToUpdate);
-
-      updateOrInstallInfo.PluginsToInstall =
-        pluginsToInstall
-        .Cast<IPluginDescription>()
-        .ToList();
-      updateOrInstallInfo.PluginsToUpdate =
-        pluginsToUpdate
-        .Cast<IPluginDescription>()
-        .ToList();
-      updateOrInstallPluginsBackgroundWorker.RunWorkerAsync(updateOrInstallInfo);
-    }
-
-    private void showLargeIconsButton_CheckedChanged(object sender, EventArgs e) {
-      productsListView.View = View.LargeIcon;
-    }
-
-    private void showDetailsButton_CheckedChanged(object sender, EventArgs e) {
-      productsListView.View = View.Details;
-    }
-
-    #endregion
-
-    private void UpdateControl() {
-      // clear products view
-      List<ListViewItem> productItemsToDelete = new List<ListViewItem>(productsListView.Items.OfType<ListViewItem>());
-      productItemsToDelete.ForEach(item => productsListView.Items.Remove(item));
-
-      // populate products list view
-      foreach (var product in products) {
-        var item = CreateListViewItem(product);
-        productsListView.Items.Add(item);
-      }
-      var allPluginsListViewItem = new ListViewItem();
-      allPluginsListViewItem.Text = "All Plugins";
-      allPluginsListViewItem.ImageIndex = 0;
-      productsListView.Items.Add(allPluginsListViewItem);
-      Util.ResizeColumns(productsListView.Columns.OfType<ColumnHeader>());
-    }
-
-    private void UpdatePluginsList() {
-      pluginsListView.Items.Clear();
-
-      // populate plugins list
-      if (productsListView.SelectedItems.Count > 0) {
-        pluginsListView.SuppressItemCheckedEvents = true;
-
-        var selectedItem = productsListView.SelectedItems[0];
-        if (selectedItem.Text == "All Plugins") {
-          foreach (var plugin in plugins) {
-            var item = CreateListViewItem(plugin);
-            pluginsListView.Items.Add(item);
-          }
-        } else {
-          var selectedProduct = (DeploymentService.ProductDescription)productsListView.SelectedItems[0].Tag;
-          foreach (var plugin in selectedProduct.Plugins) {
-            var item = CreateListViewItem(plugin);
-            pluginsListView.Items.Add(item);
-          }
-        }
-
-        Util.ResizeColumns(pluginsListView.Columns.OfType<ColumnHeader>());
-        pluginsListView.SuppressItemCheckedEvents = false;
-      }
-    }
-
-    private ListViewItem CreateListViewItem(DeploymentService.ProductDescription product) {
-      ListViewItem item = new ListViewItem(new string[] { product.Name, product.Version.ToString() });
-      item.Tag = product;
-      item.ImageIndex = 0;
-      return item;
-    }
-
-    private ListViewItem CreateListViewItem(IPluginDescription plugin) {
-      ListViewItem item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), plugin.Description });
-      item.Tag = plugin;
-      item.ImageIndex = 0;
-      return item;
-    }
-
-    #region products list view events
-    private void productsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      UpdatePluginsList();
-      installProductsButton.Enabled = (productsListView.SelectedItems.Count > 0 &&
-        productsListView.SelectedItems[0].Text != "All Plugins");
-    }
-    #endregion
-
-    #region item checked event handler
-    private void remotePluginsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
-      foreach (ListViewItem item in pluginsListView.SelectedItems) {
-        IPluginDescription plugin = (IPluginDescription)item.Tag;
-        if (e.Item.Checked)
-          HandlePluginChecked(plugin);
-        else
-          HandlePluginUnchecked(plugin);
-      }
-      installPluginsButton.Enabled = pluginsListView.CheckedItems.Count > 0;
-    }
-
-    private void HandlePluginUnchecked(IPluginDescription plugin) {
-      // also uncheck all dependent plugins
-      List<ListViewItem> modifiedItems = new List<ListViewItem>();
-      modifiedItems.AddRange(FindItemsForPlugin(plugin));
-      var dependentPlugins = Util.GetAllDependents(plugin, plugins);
-      foreach (var dependentPlugin in dependentPlugins) {
-        // there can be multiple entries for a single plugin in different groups
-        foreach (var item in FindItemsForPlugin(dependentPlugin)) {
-          if (item != null && item.Checked) {
-            if (!modifiedItems.Contains(item))
-              modifiedItems.Add(item);
-          }
-        }
-      }
-      pluginsListView.UncheckItems(modifiedItems);
-    }
-
-    private void HandlePluginChecked(IPluginDescription plugin) {
-      // also check all dependencies
-      List<ListViewItem> modifiedItems = new List<ListViewItem>();
-      modifiedItems.AddRange(FindItemsForPlugin(plugin));
-      foreach (var dep in Util.GetAllDependencies(plugin)) {
-        // there can be multiple entries for a single plugin in different groups
-        foreach (ListViewItem item in FindItemsForPlugin(dep)) {
-          if (item != null && !item.Checked) {
-            if (!modifiedItems.Contains(item))
-              modifiedItems.Add(item);
-          }
-        }
-      }
-      pluginsListView.CheckItems(modifiedItems);
-    }
-
-    #endregion
-
-    #region helper methods
-    private IEnumerable<ListViewItem> FindItemsForPlugin(IPluginDescription plugin) {
-      return (from item in pluginsListView.Items.OfType<ListViewItem>()
-              let otherPlugin = item.Tag as IPluginDescription
-              where otherPlugin != null && otherPlugin.Name == plugin.Name && otherPlugin.Version == plugin.Version
-              select item);
-    }
-
-    // compares for two plugins with same major and minor version if plugin1 is newer than plugin2
-    private static bool IsNewerThan(IPluginDescription plugin1, IPluginDescription plugin2) {
-      // newer: build version is higher, or if build version is the same revision is higher
-      return plugin1.Version.Build > plugin2.Version.Build ||
-        (plugin1.Version.Build == plugin2.Version.Build && plugin1.Version.Revision > plugin2.Version.Revision);
-    }
-    #endregion
-
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/BasicUpdateView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/BasicUpdateView.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,82 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class BasicUpdateView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.updateAndInstallButton = new System.Windows.Forms.Button();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.SuspendLayout();
-      // 
-      // updateAndInstallButton
-      // 
-      this.updateAndInstallButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.updateAndInstallButton.Image = HeuristicLab.PluginInfrastructure.Resources.Internet;
-      this.updateAndInstallButton.Location = new System.Drawing.Point(3, 2);
-      this.updateAndInstallButton.Name = "updateAndInstallButton";
-      this.updateAndInstallButton.Size = new System.Drawing.Size(155, 50);
-      this.updateAndInstallButton.TabIndex = 0;
-      this.updateAndInstallButton.Text = "Find and Install Updates";
-      this.updateAndInstallButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
-      this.toolTip.SetToolTip(this.updateAndInstallButton, "Find, download and install updates for all installed plugins.");
-      this.updateAndInstallButton.UseVisualStyleBackColor = true;
-      this.updateAndInstallButton.Click += new System.EventHandler(this.updateAndInstallButton_Click);
-      // 
-      // BasicUpdateView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.updateAndInstallButton);
-      this.Name = "BasicUpdateView";
-      this.Size = new System.Drawing.Size(163, 55);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button updateAndInstallButton;
-    private System.Windows.Forms.ToolTip toolTip;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/BasicUpdateView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/BasicUpdateView.cs	(revision 13332)
+++ 	(revision )
@@ -1,108 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using HeuristicLab.PluginInfrastructure.Manager;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class BasicUpdateView : InstallationManagerControl {
-    private BackgroundWorker updatePluginsBackgroundWorker;
-    private const string CheckingPluginsMessage = "Checking for updated plugins...";
-    private const string NoUpdatesAvailableMessage = "No updates available.";
-
-    private PluginManager pluginManager;
-    public PluginManager PluginManager {
-      get { return pluginManager; }
-      set { pluginManager = value; }
-    }
-
-    private InstallationManager installationManager;
-    public InstallationManager InstallationManager {
-      get { return installationManager; }
-      set { installationManager = value; }
-    }
-
-    public BasicUpdateView() {
-      InitializeComponent();
-      updatePluginsBackgroundWorker = new BackgroundWorker();
-      updatePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updatePluginsBackgroundWorker_DoWork);
-      updatePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updatePluginsBackgroundWorker_RunWorkerCompleted);
-    }
-
-    #region event handlers for update plugins backgroundworker
-    void updatePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-           "Please check your connection settings and user credentials.");
-      } else if (e.Cancelled) {
-        StatusView.ShowMessage(NoUpdatesAvailableMessage);
-      }
-      StatusView.RemoveMessage(CheckingPluginsMessage);
-      StatusView.HideProgressIndicator();
-      StatusView.UnlockUI();
-    }
-
-    void updatePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      IEnumerable<IPluginDescription> installedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
-      var remotePlugins = installationManager.GetRemotePluginList();
-      // if there is a local plugin with same name and same major and minor version then it's an update
-      var pluginsToUpdate = from remotePlugin in remotePlugins
-                            let matchingLocalPlugins = from installedPlugin in installedPlugins
-                                                       where installedPlugin.Name == remotePlugin.Name
-                                                       where installedPlugin.Version.Major == remotePlugin.Version.Major
-                                                       where installedPlugin.Version.Minor == remotePlugin.Version.Minor
-                                                       where IsNewerThan(remotePlugin, installedPlugin)
-                                                       select installedPlugin
-                            where matchingLocalPlugins.Count() > 0
-                            select remotePlugin;
-      if (pluginsToUpdate.Count() > 0) {
-        bool cancelled;
-        installationManager.Update(pluginsToUpdate, out cancelled);
-        if (!cancelled)
-          pluginManager.DiscoverAndCheckPlugins();
-        e.Cancel = false;
-      } else {
-        e.Cancel = true;
-      }
-    }
-
-    // compares for two plugins with same major and minor version if plugin1 is newer than plugin2
-    private static bool IsNewerThan(IPluginDescription plugin1, IPluginDescription plugin2) {
-      // newer: build version is higher, or if build version is the same revision is higher
-      return plugin1.Version.Build > plugin2.Version.Build ||
-        (plugin1.Version.Build == plugin2.Version.Build && plugin1.Version.Revision > plugin2.Version.Revision);
-    }
-
-    #endregion
-    private void updateAndInstallButton_Click(object sender, EventArgs e) {
-      var installedPlugins = pluginManager.Plugins.OfType<IPluginDescription>().ToList();
-      updatePluginsBackgroundWorker.RunWorkerAsync(installedPlugins);
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.RemoveMessage(NoUpdatesAvailableMessage);
-      StatusView.ShowMessage(CheckingPluginsMessage);
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConfirmationDialog.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConfirmationDialog.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,163 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class ConfirmationDialog {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfirmationDialog));
-      this.informationTextBox = new System.Windows.Forms.RichTextBox();
-      this.messageLabel = new System.Windows.Forms.Label();
-      this.okButton = new System.Windows.Forms.Button();
-      this.cancelButton = new System.Windows.Forms.Button();
-      this.icon = new System.Windows.Forms.PictureBox();
-      this.panel1 = new System.Windows.Forms.Panel();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.icon)).BeginInit();
-      this.panel1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // informationTextBox
-      // 
-      this.informationTextBox.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.informationTextBox.BackColor = System.Drawing.SystemColors.HighlightText;
-      this.informationTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
-      this.informationTextBox.Location = new System.Drawing.Point(105, 46);
-      this.informationTextBox.Name = "informationTextBox";
-      this.informationTextBox.ReadOnly = true;
-      this.informationTextBox.Size = new System.Drawing.Size(301, 181);
-      this.informationTextBox.TabIndex = 0;
-      this.informationTextBox.Text = "";
-      // 
-      // messageLabel
-      // 
-      this.messageLabel.AutoSize = true;
-      this.messageLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.messageLabel.Location = new System.Drawing.Point(13, 13);
-      this.messageLabel.Name = "messageLabel";
-      this.messageLabel.Size = new System.Drawing.Size(0, 13);
-      this.messageLabel.TabIndex = 1;
-      // 
-      // okButton
-      // 
-      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.Location = new System.Drawing.Point(250, 14);
-      this.okButton.Name = "okButton";
-      this.okButton.Size = new System.Drawing.Size(75, 23);
-      this.okButton.TabIndex = 2;
-      this.okButton.Text = "&OK";
-      this.toolTip.SetToolTip(this.okButton, "Confirm Action");
-      this.okButton.UseVisualStyleBackColor = true;
-      this.okButton.Click += new System.EventHandler(this.okButton_Click);
-      // 
-      // cancelButton
-      // 
-      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(331, 14);
-      this.cancelButton.Name = "cancelButton";
-      this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 3;
-      this.cancelButton.Text = "&Cancel";
-      this.toolTip.SetToolTip(this.cancelButton, "Cancel Action");
-      this.cancelButton.UseVisualStyleBackColor = true;
-      this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
-      // 
-      // icon
-      // 
-      this.icon.Location = new System.Drawing.Point(31, 66);
-      this.icon.Name = "icon";
-      this.icon.Size = new System.Drawing.Size(47, 50);
-      this.icon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
-      this.icon.TabIndex = 4;
-      this.icon.TabStop = false;
-      // 
-      // panel1
-      // 
-      this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.panel1.BackColor = System.Drawing.SystemColors.Control;
-      this.panel1.Controls.Add(this.okButton);
-      this.panel1.Controls.Add(this.cancelButton);
-      this.panel1.Location = new System.Drawing.Point(0, 233);
-      this.panel1.Name = "panel1";
-      this.panel1.Size = new System.Drawing.Size(418, 50);
-      this.panel1.TabIndex = 6;
-      // 
-      // ConfirmationDialog
-      // 
-      this.AcceptButton = this.okButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.BackColor = System.Drawing.SystemColors.HighlightText;
-      this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(418, 282);
-      this.Controls.Add(this.panel1);
-      this.Controls.Add(this.icon);
-      this.Controls.Add(this.messageLabel);
-      this.Controls.Add(this.informationTextBox);
-      this.Icon = HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "ConfirmationDialog";
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "ConfirmationDialog";
-      ((System.ComponentModel.ISupportInitialize)(this.icon)).EndInit();
-      this.panel1.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.RichTextBox informationTextBox;
-    private System.Windows.Forms.Label messageLabel;
-    private System.Windows.Forms.Button okButton;
-    private System.Windows.Forms.Button cancelButton;
-    private System.Windows.Forms.PictureBox icon;
-    private System.Windows.Forms.Panel panel1;
-    private System.Windows.Forms.ToolTip toolTip;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConfirmationDialog.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConfirmationDialog.cs	(revision 13332)
+++ 	(revision )
@@ -1,50 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-using System;
-using System.Windows.Forms;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class ConfirmationDialog : Form {
-    public ConfirmationDialog()
-      : base() {
-      InitializeComponent();
-      icon.Image = System.Drawing.SystemIcons.Exclamation.ToBitmap();
-      DialogResult = DialogResult.Cancel;
-    }
-
-    public ConfirmationDialog(string caption, string message, string text)
-      : this() {
-      this.Text = caption;
-      messageLabel.Text = message;
-      informationTextBox.Text = text;
-    }
-
-    private void okButton_Click(object sender, EventArgs e) {
-      DialogResult = DialogResult.OK;
-      this.Close();
-    }
-
-    private void cancelButton_Click(object sender, EventArgs e) {
-      DialogResult = DialogResult.Cancel;
-      this.Close();
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConnectionSetupView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConnectionSetupView.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,212 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class ConnectionSetupView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectionSetupView));
-      this.urlTextBox = new System.Windows.Forms.TextBox();
-      this.urlLabel = new System.Windows.Forms.Label();
-      this.userLabel = new System.Windows.Forms.Label();
-      this.userTextBox = new System.Windows.Forms.TextBox();
-      this.passwordLabel = new System.Windows.Forms.Label();
-      this.passwordTextBox = new System.Windows.Forms.TextBox();
-      this.applyButton = new System.Windows.Forms.Button();
-      this.savePasswordCheckbox = new System.Windows.Forms.CheckBox();
-      this.cancelButton = new System.Windows.Forms.Button();
-      this.groupBox1 = new System.Windows.Forms.GroupBox();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.groupBox1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // urlTextBox
-      // 
-      this.urlTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.urlTextBox.Location = new System.Drawing.Point(66, 15);
-      this.urlTextBox.Name = "urlTextBox";
-      this.urlTextBox.Size = new System.Drawing.Size(410, 20);
-      this.urlTextBox.TabIndex = 0;
-      this.toolTip.SetToolTip(this.urlTextBox, "URL of HeuristicLab Plugin Deployment Service");
-      // 
-      // urlLabel
-      // 
-      this.urlLabel.AutoSize = true;
-      this.urlLabel.Location = new System.Drawing.Point(12, 18);
-      this.urlLabel.Name = "urlLabel";
-      this.urlLabel.Size = new System.Drawing.Size(48, 13);
-      this.urlLabel.TabIndex = 1;
-      this.urlLabel.Text = "&Address:";
-      // 
-      // userLabel
-      // 
-      this.userLabel.AutoSize = true;
-      this.userLabel.Location = new System.Drawing.Point(6, 22);
-      this.userLabel.Name = "userLabel";
-      this.userLabel.Size = new System.Drawing.Size(58, 13);
-      this.userLabel.TabIndex = 3;
-      this.userLabel.Text = "&Username:";
-      // 
-      // userTextBox
-      // 
-      this.userTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.userTextBox.Location = new System.Drawing.Point(94, 19);
-      this.userTextBox.Name = "userTextBox";
-      this.userTextBox.Size = new System.Drawing.Size(155, 20);
-      this.userTextBox.TabIndex = 0;
-      this.toolTip.SetToolTip(this.userTextBox, "Username used to connect to the HeuristicLab plugin deployment service");
-      // 
-      // passwordLabel
-      // 
-      this.passwordLabel.AutoSize = true;
-      this.passwordLabel.Location = new System.Drawing.Point(6, 48);
-      this.passwordLabel.Name = "passwordLabel";
-      this.passwordLabel.Size = new System.Drawing.Size(56, 13);
-      this.passwordLabel.TabIndex = 5;
-      this.passwordLabel.Text = "&Password:";
-      // 
-      // passwordTextBox
-      // 
-      this.passwordTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.passwordTextBox.Location = new System.Drawing.Point(94, 45);
-      this.passwordTextBox.Name = "passwordTextBox";
-      this.passwordTextBox.Size = new System.Drawing.Size(155, 20);
-      this.passwordTextBox.TabIndex = 1;
-      this.toolTip.SetToolTip(this.passwordTextBox, "Passwort used to connect to the HeuristicLab plugin deployment service");
-      this.passwordTextBox.UseSystemPasswordChar = true;
-      // 
-      // applyButton
-      // 
-      this.applyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.applyButton.Location = new System.Drawing.Point(320, 148);
-      this.applyButton.Name = "applyButton";
-      this.applyButton.Size = new System.Drawing.Size(75, 23);
-      this.applyButton.TabIndex = 2;
-      this.applyButton.Text = "&OK";
-      this.toolTip.SetToolTip(this.applyButton, "Apply and save changes");
-      this.applyButton.UseVisualStyleBackColor = true;
-      this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
-      // 
-      // savePasswordCheckbox
-      // 
-      this.savePasswordCheckbox.AutoSize = true;
-      this.savePasswordCheckbox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
-      this.savePasswordCheckbox.Location = new System.Drawing.Point(6, 71);
-      this.savePasswordCheckbox.Name = "savePasswordCheckbox";
-      this.savePasswordCheckbox.Size = new System.Drawing.Size(103, 17);
-      this.savePasswordCheckbox.TabIndex = 2;
-      this.savePasswordCheckbox.Text = "&Save Password:";
-      this.toolTip.SetToolTip(this.savePasswordCheckbox, "Check to save the user credentials to disk");
-      this.savePasswordCheckbox.UseVisualStyleBackColor = true;
-      // 
-      // cancelButton
-      // 
-      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(401, 148);
-      this.cancelButton.Name = "cancelButton";
-      this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 3;
-      this.cancelButton.Text = "&Cancel";
-      this.toolTip.SetToolTip(this.cancelButton, "Cancel and revert changes");
-      this.cancelButton.UseVisualStyleBackColor = true;
-      this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
-      // 
-      // groupBox1
-      // 
-      this.groupBox1.Controls.Add(this.userTextBox);
-      this.groupBox1.Controls.Add(this.userLabel);
-      this.groupBox1.Controls.Add(this.savePasswordCheckbox);
-      this.groupBox1.Controls.Add(this.passwordTextBox);
-      this.groupBox1.Controls.Add(this.passwordLabel);
-      this.groupBox1.Location = new System.Drawing.Point(12, 41);
-      this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(255, 96);
-      this.groupBox1.TabIndex = 1;
-      this.groupBox1.TabStop = false;
-      this.groupBox1.Text = "User Credentials";
-      // 
-      // ConnectionSetupView
-      // 
-      this.AcceptButton = this.applyButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(488, 183);
-      this.Controls.Add(this.groupBox1);
-      this.Controls.Add(this.cancelButton);
-      this.Controls.Add(this.applyButton);
-      this.Controls.Add(this.urlLabel);
-      this.Controls.Add(this.urlTextBox);
-      this.Icon = HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "ConnectionSetupView";
-      this.ShowInTaskbar = false;
-      this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "Edit Connection Settings";
-      this.groupBox1.ResumeLayout(false);
-      this.groupBox1.PerformLayout();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox urlTextBox;
-    private System.Windows.Forms.Label urlLabel;
-    private System.Windows.Forms.Label userLabel;
-    private System.Windows.Forms.TextBox userTextBox;
-    private System.Windows.Forms.Label passwordLabel;
-    private System.Windows.Forms.TextBox passwordTextBox;
-    private System.Windows.Forms.Button applyButton;
-    private System.Windows.Forms.CheckBox savePasswordCheckbox;
-    private System.Windows.Forms.Button cancelButton;
-    private System.Windows.Forms.GroupBox groupBox1;
-    private System.Windows.Forms.ToolTip toolTip;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConnectionSetupView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/ConnectionSetupView.cs	(revision 13332)
+++ 	(revision )
@@ -1,58 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-using System;
-using System.Windows.Forms;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class ConnectionSetupView : Form {
-    public ConnectionSetupView() {
-      InitializeComponent();
-
-      urlTextBox.Text = HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocation;
-      userTextBox.Text = HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationUserName;
-      passwordTextBox.Text = HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationPassword;
-      savePasswordCheckbox.Checked = !string.IsNullOrEmpty(passwordTextBox.Text);
-    }
-
-    private void applyButton_Click(object sender, EventArgs e) {
-      HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocation = urlTextBox.Text;
-      if (!savePasswordCheckbox.Checked) {
-        // make sure we don't save username or password
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationUserName = string.Empty;
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationPassword = string.Empty;
-        // save
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.Save();
-        // set user name and password for current process
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationUserName = userTextBox.Text;
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationPassword = passwordTextBox.Text;
-      } else {
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationUserName = userTextBox.Text;
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationPassword = passwordTextBox.Text;
-        HeuristicLab.PluginInfrastructure.Properties.Settings.Default.Save();
-      }
-      Close();
-    }
-
-    private void cancelButton_Click(object sender, EventArgs e) {
-      Close();
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/EditProductsView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/EditProductsView.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,367 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class EditProductsView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.refreshButton = new System.Windows.Forms.Button();
-      this.uploadButton = new System.Windows.Forms.Button();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.productsGroupBox = new System.Windows.Forms.GroupBox();
-      this.deleteProductButton = new System.Windows.Forms.Button();
-      this.newProductButton = new System.Windows.Forms.Button();
-      this.productsListView = new System.Windows.Forms.ListView();
-      this.productNameHeader = new System.Windows.Forms.ColumnHeader();
-      this.productVersionHeader = new System.Windows.Forms.ColumnHeader();
-      this.productImageList = new System.Windows.Forms.ImageList(this.components);
-      this.detailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.pluginsGroupBox = new System.Windows.Forms.GroupBox();
-      this.pluginListView = new HeuristicLab.PluginInfrastructure.Advanced.MultiSelectListView();
-      this.pluginNameHeader = new System.Windows.Forms.ColumnHeader();
-      this.pluginVersionHeader = new System.Windows.Forms.ColumnHeader();
-      this.pluginDescriptionHeader = new System.Windows.Forms.ColumnHeader();
-      this.pluginImageList = new System.Windows.Forms.ImageList(this.components);
-      this.versionTextBox = new System.Windows.Forms.TextBox();
-      this.nameLabel = new System.Windows.Forms.Label();
-      this.nameTextBox = new System.Windows.Forms.TextBox();
-      this.versionLabel = new System.Windows.Forms.Label();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.productsGroupBox.SuspendLayout();
-      this.detailsGroupBox.SuspendLayout();
-      this.pluginsGroupBox.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // refreshButton
-      // 
-      this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.refreshButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Internet;
-      this.refreshButton.Location = new System.Drawing.Point(6, 394);
-      this.refreshButton.Name = "refreshButton";
-      this.refreshButton.Size = new System.Drawing.Size(73, 26);
-      this.refreshButton.TabIndex = 1;
-      this.refreshButton.Text = "Refresh";
-      this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.refreshButton, "Refresh list of plugins and products from server");
-      this.refreshButton.UseVisualStyleBackColor = true;
-      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
-      // 
-      // uploadButton
-      // 
-      this.uploadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.uploadButton.Enabled = false;
-      this.uploadButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.PublishToWeb;
-      this.uploadButton.Location = new System.Drawing.Point(85, 394);
-      this.uploadButton.Name = "uploadButton";
-      this.uploadButton.Size = new System.Drawing.Size(120, 26);
-      this.uploadButton.TabIndex = 2;
-      this.uploadButton.Text = "Upload Products";
-      this.uploadButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.uploadButton, "Upload changed products to server");
-      this.uploadButton.UseVisualStyleBackColor = true;
-      this.uploadButton.Click += new System.EventHandler(this.saveButton_Click);
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.productsGroupBox);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox);
-      this.splitContainer.Size = new System.Drawing.Size(665, 426);
-      this.splitContainer.SplitterDistance = 321;
-      this.splitContainer.TabIndex = 4;
-      // 
-      // productsGroupBox
-      // 
-      this.productsGroupBox.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.productsGroupBox.Controls.Add(this.deleteProductButton);
-      this.productsGroupBox.Controls.Add(this.uploadButton);
-      this.productsGroupBox.Controls.Add(this.newProductButton);
-      this.productsGroupBox.Controls.Add(this.productsListView);
-      this.productsGroupBox.Controls.Add(this.refreshButton);
-      this.productsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.productsGroupBox.Name = "productsGroupBox";
-      this.productsGroupBox.Size = new System.Drawing.Size(321, 426);
-      this.productsGroupBox.TabIndex = 5;
-      this.productsGroupBox.TabStop = false;
-      this.productsGroupBox.Text = "Products";
-      // 
-      // deleteProductButton
-      // 
-      this.deleteProductButton.Enabled = false;
-      this.deleteProductButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Remove;
-      this.deleteProductButton.Location = new System.Drawing.Point(116, 19);
-      this.deleteProductButton.Name = "deleteProductButton";
-      this.deleteProductButton.Size = new System.Drawing.Size(104, 26);
-      this.deleteProductButton.TabIndex = 5;
-      this.deleteProductButton.Text = "Delete Product";
-      this.deleteProductButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.deleteProductButton, "Deletes the selected product");
-      this.deleteProductButton.UseVisualStyleBackColor = true;
-      this.deleteProductButton.Click += new System.EventHandler(this.deleteProductButton_Click);
-      // 
-      // newProductButton
-      // 
-      this.newProductButton.Enabled = false;
-      this.newProductButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Add;
-      this.newProductButton.Location = new System.Drawing.Point(6, 19);
-      this.newProductButton.Name = "newProductButton";
-      this.newProductButton.Size = new System.Drawing.Size(104, 26);
-      this.newProductButton.TabIndex = 3;
-      this.newProductButton.Text = "Create Product";
-      this.newProductButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.newProductButton, "Create a new product");
-      this.newProductButton.UseVisualStyleBackColor = true;
-      this.newProductButton.Click += new System.EventHandler(this.newProductButton_Click);
-      // 
-      // productsListView
-      // 
-      this.productsListView.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.productsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.productNameHeader,
-            this.productVersionHeader});
-      this.productsListView.Enabled = false;
-      this.productsListView.FullRowSelect = true;
-      this.productsListView.HideSelection = false;
-      this.productsListView.Location = new System.Drawing.Point(6, 51);
-      this.productsListView.MultiSelect = false;
-      this.productsListView.Name = "productsListView";
-      this.productsListView.Size = new System.Drawing.Size(309, 337);
-      this.productsListView.SmallImageList = this.productImageList;
-      this.productsListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.productsListView.TabIndex = 4;
-      this.productsListView.UseCompatibleStateImageBehavior = false;
-      this.productsListView.View = System.Windows.Forms.View.Details;
-      this.productsListView.SelectedIndexChanged += new System.EventHandler(this.productsListBox_SelectedIndexChanged);
-      // 
-      // productNameHeader
-      // 
-      this.productNameHeader.Text = "Name";
-      this.productNameHeader.Width = 40;
-      // 
-      // productVersionHeader
-      // 
-      this.productVersionHeader.Text = "Version";
-      this.productVersionHeader.Width = 265;
-      // 
-      // productImageList
-      // 
-      this.productImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.productImageList.ImageSize = new System.Drawing.Size(16, 16);
-      this.productImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // detailsGroupBox
-      // 
-      this.detailsGroupBox.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.detailsGroupBox.Controls.Add(this.pluginsGroupBox);
-      this.detailsGroupBox.Controls.Add(this.versionTextBox);
-      this.detailsGroupBox.Controls.Add(this.nameLabel);
-      this.detailsGroupBox.Controls.Add(this.nameTextBox);
-      this.detailsGroupBox.Controls.Add(this.versionLabel);
-      this.detailsGroupBox.Enabled = false;
-      this.detailsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.detailsGroupBox.Name = "detailsGroupBox";
-      this.detailsGroupBox.Size = new System.Drawing.Size(340, 426);
-      this.detailsGroupBox.TabIndex = 8;
-      this.detailsGroupBox.TabStop = false;
-      this.detailsGroupBox.Text = "Details";
-      // 
-      // pluginsGroupBox
-      // 
-      this.pluginsGroupBox.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.pluginsGroupBox.Controls.Add(this.pluginListView);
-      this.pluginsGroupBox.Location = new System.Drawing.Point(6, 71);
-      this.pluginsGroupBox.Name = "pluginsGroupBox";
-      this.pluginsGroupBox.Size = new System.Drawing.Size(328, 349);
-      this.pluginsGroupBox.TabIndex = 6;
-      this.pluginsGroupBox.TabStop = false;
-      this.pluginsGroupBox.Text = "Plugins";
-      // 
-      // pluginListView
-      // 
-      this.pluginListView.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.pluginListView.CheckBoxes = true;
-      this.pluginListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.pluginNameHeader,
-            this.pluginVersionHeader,
-            this.pluginDescriptionHeader});
-      this.pluginListView.Location = new System.Drawing.Point(3, 16);
-      this.pluginListView.Name = "pluginListView";
-      this.pluginListView.Size = new System.Drawing.Size(322, 330);
-      this.pluginListView.SmallImageList = this.pluginImageList;
-      this.pluginListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.pluginListView.SuppressItemCheckedEvents = false;
-      this.pluginListView.TabIndex = 7;
-      this.pluginListView.UseCompatibleStateImageBehavior = false;
-      this.pluginListView.View = System.Windows.Forms.View.Details;
-      this.pluginListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listView_ItemChecked);
-      // 
-      // pluginNameHeader
-      // 
-      this.pluginNameHeader.Text = "Name";
-      // 
-      // pluginVersionHeader
-      // 
-      this.pluginVersionHeader.Text = "Version";
-      // 
-      // pluginDescriptionHeader
-      // 
-      this.pluginDescriptionHeader.Text = "Description";
-      // 
-      // pluginImageList
-      // 
-      this.pluginImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.pluginImageList.ImageSize = new System.Drawing.Size(16, 16);
-      this.pluginImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // versionTextBox
-      // 
-      this.versionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.versionTextBox.Location = new System.Drawing.Point(57, 45);
-      this.versionTextBox.Name = "versionTextBox";
-      this.versionTextBox.Size = new System.Drawing.Size(243, 20);
-      this.versionTextBox.TabIndex = 5;
-      this.versionTextBox.TextChanged += new System.EventHandler(this.versionTextBox_TextChanged);
-      // 
-      // nameLabel
-      // 
-      this.nameLabel.AutoSize = true;
-      this.nameLabel.Location = new System.Drawing.Point(13, 22);
-      this.nameLabel.Name = "nameLabel";
-      this.nameLabel.Size = new System.Drawing.Size(38, 13);
-      this.nameLabel.TabIndex = 2;
-      this.nameLabel.Text = "Name:";
-      // 
-      // nameTextBox
-      // 
-      this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.nameTextBox.Location = new System.Drawing.Point(57, 19);
-      this.nameTextBox.Name = "nameTextBox";
-      this.nameTextBox.Size = new System.Drawing.Size(243, 20);
-      this.nameTextBox.TabIndex = 3;
-      this.nameTextBox.TextChanged += new System.EventHandler(this.nameTextBox_TextChanged);
-      // 
-      // versionLabel
-      // 
-      this.versionLabel.AutoSize = true;
-      this.versionLabel.Location = new System.Drawing.Point(6, 48);
-      this.versionLabel.Name = "versionLabel";
-      this.versionLabel.Size = new System.Drawing.Size(45, 13);
-      this.versionLabel.TabIndex = 4;
-      this.versionLabel.Text = "Version:";
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.ContainerControl = this;
-      // 
-      // ProductEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.splitContainer);
-      this.Name = "ProductEditor";
-      this.Size = new System.Drawing.Size(665, 426);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.ResumeLayout(false);
-      this.productsGroupBox.ResumeLayout(false);
-      this.detailsGroupBox.ResumeLayout(false);
-      this.detailsGroupBox.PerformLayout();
-      this.pluginsGroupBox.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button refreshButton;
-    private System.Windows.Forms.Button uploadButton;
-    private System.Windows.Forms.Button newProductButton;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.TextBox versionTextBox;
-    private System.Windows.Forms.Label versionLabel;
-    private System.Windows.Forms.TextBox nameTextBox;
-    private System.Windows.Forms.Label nameLabel;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.ListView productsListView;
-    private System.Windows.Forms.ColumnHeader productNameHeader;
-    private System.Windows.Forms.ColumnHeader productVersionHeader;
-    private System.Windows.Forms.ImageList productImageList;
-    private System.Windows.Forms.ImageList pluginImageList;
-    private MultiSelectListView pluginListView;
-    private System.Windows.Forms.GroupBox productsGroupBox;
-    private System.Windows.Forms.GroupBox detailsGroupBox;
-    private System.Windows.Forms.GroupBox pluginsGroupBox;
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.Button deleteProductButton;
-    private System.Windows.Forms.ColumnHeader pluginNameHeader;
-    private System.Windows.Forms.ColumnHeader pluginVersionHeader;
-    private System.Windows.Forms.ColumnHeader pluginDescriptionHeader;
-
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/EditProductsView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/EditProductsView.cs	(revision 13332)
+++ 	(revision )
@@ -1,455 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.ServiceModel;
-using System.Windows.Forms;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class EditProductsView : InstallationManagerControl {
-    private const string RefreshMessage = "Downloading product and plugin information...";
-    private const string UploadMessage = "Uploading product and plugin information...";
-    private const string DeleteProductMessage = "Deleting product...";
-
-    private BackgroundWorker refreshProductsWorker;
-    private BackgroundWorker uploadChangedProductsWorker;
-    private BackgroundWorker deleteProductWorker;
-
-    private List<DeploymentService.ProductDescription> products;
-    private List<DeploymentService.PluginDescription> plugins;
-    private HashSet<DeploymentService.ProductDescription> dirtyProducts;
-
-    public EditProductsView() {
-      InitializeComponent();
-
-      productImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Setup_Install);
-      productImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.ArrowUp);
-      pluginImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Plugin);
-
-      dirtyProducts = new HashSet<DeploymentService.ProductDescription>();
-      refreshProductsWorker = new BackgroundWorker();
-      refreshProductsWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(refreshProductsWorker_RunWorkerCompleted);
-      refreshProductsWorker.DoWork += new DoWorkEventHandler(refreshProductsWorker_DoWork);
-
-      uploadChangedProductsWorker = new BackgroundWorker();
-      uploadChangedProductsWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(uploadChangedProductsWorker_RunWorkerCompleted);
-      uploadChangedProductsWorker.DoWork += new DoWorkEventHandler(uploadChangedProductsWorker_DoWork);
-
-      deleteProductWorker = new BackgroundWorker();
-      deleteProductWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(deleteProductWorker_RunWorkerCompleted);
-      deleteProductWorker.DoWork += new DoWorkEventHandler(deleteProductWorker_DoWork);
-    }
-
-    #region event handlers for delete product background worker
-    void deleteProductWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var products = (IEnumerable<DeploymentService.ProductDescription>)e.Argument;
-      var adminClient = DeploymentService.AdminServiceClientFactory.CreateClient();
-      // upload
-      try {
-        foreach (var product in products) {
-          adminClient.DeleteProduct(product);
-        }
-        adminClient.Close();
-      }
-      catch (TimeoutException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        adminClient.Abort();
-        throw;
-      }
-      // refresh      
-      var updateClient = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        e.Result = new object[] { updateClient.GetProducts(), updateClient.GetPlugins() };
-        updateClient.Close();
-      }
-      catch (TimeoutException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        updateClient.Abort();
-        throw;
-      }
-    }
-
-    void deleteProductWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-        "There was an error while connecting to the server." + Environment.NewLine +
-           "Please check your connection settings and user credentials.");
-        this.products.Clear();
-        this.plugins.Clear();
-      } else {
-        this.products = new List<DeploymentService.ProductDescription>(
-  (DeploymentService.ProductDescription[])((object[])e.Result)[0]);
-        this.plugins = new List<DeploymentService.PluginDescription>(
-          (DeploymentService.PluginDescription[])((object[])e.Result)[1]);
-
-        EnableControls();
-      }
-      UpdateProductsList();
-      dirtyProducts.Clear();
-      StatusView.HideProgressIndicator();
-      StatusView.RemoveMessage(DeleteProductMessage);
-      StatusView.UnlockUI();
-    }
-    #endregion
-
-    #region event handlers for upload products background worker
-    private void uploadChangedProductsWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var products = (IEnumerable<DeploymentService.ProductDescription>)e.Argument;
-      var adminClient = DeploymentService.AdminServiceClientFactory.CreateClient();
-      // upload
-      try {
-        foreach (var product in products) {
-          adminClient.DeployProduct(product);
-        }
-        adminClient.Close();
-      }
-      catch (TimeoutException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        adminClient.Abort();
-        throw;
-      }
-      // refresh      
-      var updateClient = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        e.Result = new object[] { updateClient.GetProducts(), updateClient.GetPlugins() };
-        updateClient.Close();
-      }
-      catch (TimeoutException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        updateClient.Abort();
-        throw;
-      }
-    }
-
-    private void uploadChangedProductsWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-        "There was an error while connecting to the server." + Environment.NewLine +
-           "Please check your connection settings and user credentials.");
-        this.products.Clear();
-        this.plugins.Clear();
-      } else {
-        this.products = new List<DeploymentService.ProductDescription>(
-  (DeploymentService.ProductDescription[])((object[])e.Result)[0]);
-        this.plugins = new List<DeploymentService.PluginDescription>(
-          (DeploymentService.PluginDescription[])((object[])e.Result)[1]);
-
-      }
-      UpdateProductsList();
-      dirtyProducts.Clear();
-      EnableControls();
-      StatusView.HideProgressIndicator();
-      StatusView.RemoveMessage(UploadMessage);
-      StatusView.UnlockUI();
-    }
-    #endregion
-
-    #region event handlers for refresh products background worker
-    private void refreshProductsWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var updateClient = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        e.Result = new object[] { updateClient.GetProducts(), updateClient.GetPlugins() };
-        updateClient.Close();
-      }
-      catch (TimeoutException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        updateClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        updateClient.Abort();
-        throw;
-      }
-    }
-
-    private void refreshProductsWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-                   "Please check your connection settings and user credentials.");
-        this.products.Clear();
-        this.plugins.Clear();
-
-      } else {
-        this.products = new List<DeploymentService.ProductDescription>(
-          (DeploymentService.ProductDescription[])((object[])e.Result)[0]);
-        this.plugins = new List<DeploymentService.PluginDescription>(
-          (DeploymentService.PluginDescription[])((object[])e.Result)[1]);
-      }
-      UpdateProductsList();
-      dirtyProducts.Clear();
-      EnableControls();
-      StatusView.HideProgressIndicator();
-      StatusView.RemoveMessage(RefreshMessage);
-      StatusView.UnlockUI();
-    }
-    #endregion
-
-    private void UpdateProductsList() {
-      productsListView.SelectedItems.Clear();
-      productsListView.Items.Clear();
-      foreach (var prodDesc in products) {
-        productsListView.Items.Add(CreateListViewItem(prodDesc));
-      }
-      Util.ResizeColumns(productsListView.Columns.OfType<ColumnHeader>());
-    }
-
-    private void productsListBox_SelectedIndexChanged(object sender, EventArgs e) {
-      bool productSelected = productsListView.SelectedItems.Count > 0;
-      detailsGroupBox.Enabled = productSelected;
-      UpdateProductButtons();
-      if (productSelected) {
-        DeploymentService.ProductDescription activeProduct = (DeploymentService.ProductDescription)((ListViewItem)productsListView.SelectedItems[0]).Tag;
-        nameTextBox.Text = activeProduct.Name;
-        versionTextBox.Text = activeProduct.Version.ToString();
-
-        // populate plugins list view
-        pluginListView.SuppressItemCheckedEvents = true;
-        foreach (var plugin in plugins.OfType<IPluginDescription>()) {
-          pluginListView.Items.Add(CreateListViewItem(plugin));
-        }
-        pluginListView.SuppressItemCheckedEvents = false;
-        foreach (var plugin in activeProduct.Plugins) {
-          pluginListView.CheckItems(FindItemsForPlugin(plugin));
-        }
-      } else {
-        nameTextBox.Text = string.Empty;
-        versionTextBox.Text = string.Empty;
-        pluginListView.Items.Clear();
-      }
-      Util.ResizeColumns(pluginListView.Columns.OfType<ColumnHeader>());
-    }
-
-    private void UpdateProductButtons() {
-      uploadButton.Enabled = dirtyProducts.Count > 0;
-      if (productsListView.SelectedItems.Count > 0) {
-        var selectedProduct = (DeploymentService.ProductDescription)productsListView.SelectedItems[0].Tag;
-        deleteProductButton.Enabled = !dirtyProducts.Contains(selectedProduct);
-      } else {
-        deleteProductButton.Enabled = false;
-      }
-    }
-
-
-    #region button event handlers
-    private void newProductButton_Click(object sender, EventArgs e) {
-      var newProduct = new DeploymentService.ProductDescription("New product", new Version("0.0.0.0"));
-      products.Add(newProduct);
-      UpdateProductsList();
-      MarkProductDirty(newProduct);
-    }
-
-    private void saveButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.ShowMessage(UploadMessage);
-      uploadChangedProductsWorker.RunWorkerAsync(dirtyProducts);
-    }
-    private void refreshButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.ShowMessage(RefreshMessage);
-      refreshProductsWorker.RunWorkerAsync();
-    }
-    private void deleteProductButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.ShowMessage(DeleteProductMessage);
-      var selectedProducts = from item in productsListView.SelectedItems.OfType<ListViewItem>()
-                             select (DeploymentService.ProductDescription)item.Tag;
-      deleteProductWorker.RunWorkerAsync(selectedProducts.ToList());
-    }
-
-    #endregion
-
-    #region textbox changed event handlers
-    private void nameTextBox_TextChanged(object sender, EventArgs e) {
-      if (productsListView.SelectedItems.Count > 0) {
-        ListViewItem activeItem = (ListViewItem)productsListView.SelectedItems[0];
-        DeploymentService.ProductDescription activeProduct = (DeploymentService.ProductDescription)activeItem.Tag;
-        if (string.IsNullOrEmpty(nameTextBox.Name)) {
-          errorProvider.SetError(nameTextBox, "Invalid value");
-        } else {
-          if (activeProduct.Name != nameTextBox.Text) {
-            activeProduct.Name = nameTextBox.Text;
-            activeItem.SubItems[0].Text = activeProduct.Name;
-            errorProvider.SetError(nameTextBox, string.Empty);
-            MarkProductDirty(activeProduct);
-          }
-        }
-      }
-    }
-
-
-    private void versionTextBox_TextChanged(object sender, EventArgs e) {
-      if (productsListView.SelectedItems.Count > 0) {
-        ListViewItem activeItem = (ListViewItem)productsListView.SelectedItems[0];
-        DeploymentService.ProductDescription activeProduct = (DeploymentService.ProductDescription)activeItem.Tag;
-        try {
-          var newVersion = new Version(versionTextBox.Text);
-          if (activeProduct.Version != newVersion) {
-            activeProduct.Version = newVersion;
-            activeItem.SubItems[1].Text = versionTextBox.Text;
-            errorProvider.SetError(versionTextBox, string.Empty);
-            MarkProductDirty(activeProduct);
-          }
-        }
-        catch (OverflowException) {
-          errorProvider.SetError(versionTextBox, "Invalid value");
-        }
-
-        catch (ArgumentException) {
-          errorProvider.SetError(versionTextBox, "Invalid value");
-        }
-        catch (FormatException) {
-          errorProvider.SetError(versionTextBox, "Invalid value");
-        }
-      }
-    }
-    #endregion
-
-
-    #region plugin list view
-    private void OnItemChecked(ItemCheckedEventArgs e) {
-      ListViewItem activeItem = (ListViewItem)productsListView.SelectedItems[0];
-      DeploymentService.ProductDescription activeProduct = (DeploymentService.ProductDescription)activeItem.Tag;
-      activeProduct.Plugins = (from item in pluginListView.CheckedItems.OfType<ListViewItem>()
-                               select (DeploymentService.PluginDescription)item.Tag).ToArray();
-      MarkProductDirty(activeProduct);
-    }
-
-    private void listView_ItemChecked(object sender, ItemCheckedEventArgs e) {
-      List<IPluginDescription> modifiedPlugins = new List<IPluginDescription>();
-      if (e.Item.Checked) {
-        foreach (ListViewItem item in pluginListView.SelectedItems) {
-          var plugin = (IPluginDescription)item.Tag;
-          // also check all dependencies
-          if (!modifiedPlugins.Contains(plugin))
-            modifiedPlugins.Add(plugin);
-          foreach (var dep in Util.GetAllDependencies(plugin)) {
-            if (!modifiedPlugins.Contains(dep))
-              modifiedPlugins.Add(dep);
-          }
-        }
-        pluginListView.CheckItems(modifiedPlugins.Select(x => FindItemsForPlugin(x).Single()));
-        OnItemChecked(e);
-      } else {
-        foreach (ListViewItem item in pluginListView.SelectedItems) {
-          var plugin = (IPluginDescription)item.Tag;
-          // also uncheck all dependent plugins
-          if (!modifiedPlugins.Contains(plugin))
-            modifiedPlugins.Add(plugin);
-          foreach (var dep in Util.GetAllDependents(plugin, plugins.Cast<IPluginDescription>())) {
-            if (!modifiedPlugins.Contains(dep))
-              modifiedPlugins.Add(dep);
-          }
-
-        }
-        pluginListView.UncheckItems(modifiedPlugins.Select(x => FindItemsForPlugin(x).Single()));
-        OnItemChecked(e);
-      }
-    }
-
-
-    #endregion
-
-    #region helper
-    private void MarkProductDirty(HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.ProductDescription activeProduct) {
-      if (!dirtyProducts.Contains(activeProduct)) {
-        dirtyProducts.Add(activeProduct);
-        var item = FindItemForProduct(activeProduct);
-        item.ImageIndex = 1;
-        UpdateProductButtons();
-      }
-    }
-    private ListViewItem CreateListViewItem(DeploymentService.ProductDescription productDescription) {
-      ListViewItem item = new ListViewItem(new string[] { productDescription.Name, productDescription.Version.ToString() });
-      item.Tag = productDescription;
-      item.ImageIndex = 0;
-      return item;
-    }
-
-    private ListViewItem CreateListViewItem(IPluginDescription plugin) {
-      ListViewItem item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), 
-          string.Empty, plugin.Description });
-      item.Tag = plugin;
-      item.ImageIndex = 0;
-      item.Checked = false;
-      return item;
-    }
-
-    private ListViewItem FindItemForProduct(HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.ProductDescription activeProduct) {
-      return (from item in productsListView.Items.OfType<ListViewItem>()
-              let product = item.Tag as DeploymentService.ProductDescription
-              where product != null
-              where product == activeProduct
-              select item).Single();
-    }
-    private IEnumerable<ListViewItem> FindItemsForPlugin(IPluginDescription plugin) {
-      return from item in pluginListView.Items.OfType<ListViewItem>()
-             let p = item.Tag as IPluginDescription
-             where p.Name == plugin.Name
-             where p.Version == plugin.Version
-             select item;
-    }
-
-    private void EnableControls() {
-      newProductButton.Enabled = true;
-      productsListView.Enabled = true;
-    }
-    #endregion
-
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManager.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManager.cs	(revision 13332)
+++ 	(revision )
@@ -1,244 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Compression;
-using System.Linq;
-using System.ServiceModel;
-using HeuristicLab.PluginInfrastructure.Manager;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal class InstallationManager {
-
-    internal event EventHandler<PluginInfrastructureCancelEventArgs> PreUpdatePlugin;
-    internal event EventHandler<PluginInfrastructureCancelEventArgs> PreRemovePlugin;
-    internal event EventHandler<PluginInfrastructureCancelEventArgs> PreInstallPlugin;
-
-    internal event EventHandler<PluginInfrastructureEventArgs> PluginUpdated;
-    internal event EventHandler<PluginInfrastructureEventArgs> PluginRemoved;
-    internal event EventHandler<PluginInfrastructureEventArgs> PluginInstalled;
-
-    private string pluginDir;
-    public InstallationManager(string pluginDir) {
-      this.pluginDir = pluginDir;
-    }
-
-    /// <summary>
-    /// Retrieves a list of plugins available at the remote server
-    /// </summary>
-    /// <returns></returns>
-    public IEnumerable<IPluginDescription> GetRemotePluginList() {
-      var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        List<IPluginDescription> plugins = new List<IPluginDescription>(client.GetPlugins());
-        client.Close();
-        return plugins;
-      }
-      catch (TimeoutException e) {
-        client.Abort();
-        throw new InstallationManagerException("Time out while connecting to server.", e);
-      }
-      catch (FaultException e) {
-        client.Abort();
-        throw new InstallationManagerException("Fault in connection to server.", e);
-      }
-      catch (CommunicationException e) {
-        client.Abort();
-        throw new InstallationManagerException("General communication exception in connection to server.", e);
-      }
-    }
-
-    /// <summary>
-    /// Retrieves the list of products available at the remote server
-    /// </summary>
-    /// <returns></returns>
-    public IEnumerable<DeploymentService.ProductDescription> GetRemoteProductList() {
-      var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        List<DeploymentService.ProductDescription> products = new List<DeploymentService.ProductDescription>(client.GetProducts());
-        client.Close();
-        return products;
-      }
-      catch (TimeoutException e) {
-        client.Abort();
-        throw new InstallationManagerException("Time out while connecting to server.", e);
-      }
-      catch (FaultException e) {
-        client.Abort();
-        throw new InstallationManagerException("Fault in connection to server.", e);
-      }
-      catch (CommunicationException e) {
-        client.Abort();
-        throw new InstallationManagerException("General communication exception in connection to server.", e);
-      }
-    }
-
-    /// <summary>
-    ///  Installs plugins from remote server
-    /// </summary>
-    /// <param name="plugins"></param>
-    public void Install(IEnumerable<IPluginDescription> plugins, out bool cancelled) {
-      var args = new PluginInfrastructureCancelEventArgs(plugins);
-      OnPreInstall(args);
-      if (!args.Cancel) {
-        cancelled = false;
-        var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-        try {
-          foreach (DeploymentService.PluginDescription plugin in plugins) {
-            byte[] zippedPackage = client.GetPlugin(plugin);
-            Unpack(zippedPackage);
-            OnInstalled(new PluginInfrastructureEventArgs(plugin));
-          }
-          client.Close();
-        }
-        catch (TimeoutException e) {
-          client.Abort();
-          throw new InstallationManagerException("Time out while connecting to server.", e);
-        }
-        catch (FaultException e) {
-          client.Abort();
-          throw new InstallationManagerException("Fault in connection to server.", e);
-        }
-        catch (CommunicationException e) {
-          client.Abort();
-          throw new InstallationManagerException("General communication exception in connection to server.", e);
-        }
-      } else {
-        cancelled = true;
-      }
-    }
-
-    /// <summary>
-    /// Updates plugins from remote server
-    /// </summary>
-    /// <param name="plugins"></param>
-    public void Update(IEnumerable<IPluginDescription> plugins, out bool cancelled) {
-      PluginInfrastructureCancelEventArgs args = new PluginInfrastructureCancelEventArgs(plugins);
-      OnPreUpdate(args);
-      if (!args.Cancel) {
-        cancelled = false;
-        var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-        try {
-          foreach (DeploymentService.PluginDescription plugin in plugins) {
-            byte[] zippedPackage = client.GetPlugin(plugin);
-            Unpack(zippedPackage);
-            OnUpdated(new PluginInfrastructureEventArgs(plugin));
-          }
-          client.Close();
-        }
-        catch (TimeoutException e) {
-          client.Abort();
-          throw new InstallationManagerException("Time out while connecting to server.", e);
-        }
-        catch (FaultException e) {
-          client.Abort();
-          throw new InstallationManagerException("Fault in connection to server.", e);
-        }
-        catch (CommunicationException e) {
-          client.Abort();
-          throw new InstallationManagerException("General communication exception in connection to server.", e);
-        }
-      } else {
-        cancelled = true;
-      }
-    }
-
-    /// <summary>
-    /// Deletes all plugin files from local installation
-    /// </summary>
-    /// <param name="plugins"></param>
-    public void Remove(IEnumerable<IPluginDescription> plugins) {
-      var fileNames = from pluginToDelete in plugins
-                      from file in pluginToDelete.Files
-                      select Path.Combine(pluginDir, file.Name);
-      var args = new PluginInfrastructureCancelEventArgs(plugins);
-      OnPreDelete(args);
-      if (!args.Cancel) {
-        foreach (string fileName in fileNames) {
-          File.Delete(fileName);
-          OnDeleted(new PluginInfrastructureEventArgs(fileName));
-        }
-      }
-    }
-
-    private void Unpack(byte[] zippedPackage) {
-      using (MemoryStream memStream = new MemoryStream(zippedPackage)) {
-        using (ZipArchive zip = new ZipArchive(memStream, ZipArchiveMode.Read)) {
-          foreach (var theEntry in zip.Entries) {
-            string directoryName = pluginDir;
-            string fileName = Path.GetFileName(theEntry.Name);
-            // create directory 
-            if (!string.IsNullOrEmpty(directoryName)) {
-              Directory.CreateDirectory(directoryName);
-            }
-            if (!string.IsNullOrEmpty(fileName)) {
-              string fullPath = Path.Combine(directoryName, fileName);
-              string fullDirPath = Path.GetDirectoryName(fullPath);
-              if (!Directory.Exists(fullDirPath)) Directory.CreateDirectory(fullDirPath);
-              using (FileStream streamWriter = File.Create(fullPath)) {
-                int size = 2048;
-                byte[] data = new byte[2048];
-
-                using (BinaryReader reader = new BinaryReader(theEntry.Open())) {
-                  while (true) {
-                    size = reader.Read(data, 0, data.Length);
-                    if (size > 0) {
-                      streamWriter.Write(data, 0, size);
-                    } else {
-                      break;
-                    }
-                  }
-                }
-                streamWriter.Close();
-              }
-            }
-          }
-        }
-      }
-    }
-
-    private void OnPreUpdate(PluginInfrastructureCancelEventArgs args) {
-      if (PreUpdatePlugin != null) PreUpdatePlugin(this, args);
-    }
-
-    private void OnUpdated(PluginInfrastructureEventArgs args) {
-      if (PluginUpdated != null) PluginUpdated(this, args);
-    }
-
-    private void OnPreDelete(PluginInfrastructureCancelEventArgs args) {
-      if (PreRemovePlugin != null) PreRemovePlugin(this, args);
-    }
-
-    private void OnDeleted(PluginInfrastructureEventArgs args) {
-      if (PluginRemoved != null) PluginRemoved(this, args);
-    }
-
-    private void OnPreInstall(PluginInfrastructureCancelEventArgs args) {
-      if (PreInstallPlugin != null) PreInstallPlugin(this, args);
-    }
-
-    private void OnInstalled(PluginInfrastructureEventArgs args) {
-      if (PluginInstalled != null) PluginInstalled(this, args);
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerException.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerException.cs	(revision 13332)
+++ 	(revision )
@@ -1,33 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  [Serializable]
-  public class InstallationManagerException : Exception {
-    public InstallationManagerException() : base() { }
-    public InstallationManagerException(string msg) : base(msg) { }
-    public InstallationManagerException(string msg, Exception e) : base(msg, e) { }
-    protected InstallationManagerException(SerializationInfo info, StreamingContext context) : base(info, context) { }
-  }
-}
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.Designer.cs	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.Designer.cs	(revision 13333)
@@ -51,24 +51,11 @@
       this.localPluginsTabPage = new System.Windows.Forms.TabPage();
       this.localPluginsView = new HeuristicLab.PluginInfrastructure.Advanced.InstalledPluginsView();
-      this.availablePluginsTabPage = new System.Windows.Forms.TabPage();
-      this.remotePluginInstaller = new HeuristicLab.PluginInfrastructure.Advanced.AvailablePluginsView();
-      this.uploadPluginsTabPage = new System.Windows.Forms.TabPage();
-      this.pluginEditor = new HeuristicLab.PluginInfrastructure.Advanced.UploadPluginsView();
-      this.manageProductsTabPage = new System.Windows.Forms.TabPage();
-      this.productEditor = new HeuristicLab.PluginInfrastructure.Advanced.EditProductsView();
       this.logTabPage = new System.Windows.Forms.TabPage();
       this.logTextBox = new System.Windows.Forms.TextBox();
-      this.menuStrip = new System.Windows.Forms.MenuStrip();
-      this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.connectionSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       this.statusStrip.SuspendLayout();
       this.tabControl.SuspendLayout();
       this.localPluginsTabPage.SuspendLayout();
-      this.availablePluginsTabPage.SuspendLayout();
-      this.uploadPluginsTabPage.SuspendLayout();
-      this.manageProductsTabPage.SuspendLayout();
       this.logTabPage.SuspendLayout();
-      this.menuStrip.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -102,7 +89,4 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.tabControl.Controls.Add(this.localPluginsTabPage);
-      this.tabControl.Controls.Add(this.availablePluginsTabPage);
-      this.tabControl.Controls.Add(this.uploadPluginsTabPage);
-      this.tabControl.Controls.Add(this.manageProductsTabPage);
       this.tabControl.Controls.Add(this.logTabPage);
       this.tabControl.Location = new System.Drawing.Point(12, 27);
@@ -130,5 +114,5 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.localPluginsView.InstallationManager = null;
+//       this.localPluginsView.InstallationManager = null;
       this.localPluginsView.Location = new System.Drawing.Point(6, 6);
       this.localPluginsView.Name = "localPluginsView";
@@ -137,76 +121,4 @@
       this.localPluginsView.StatusView = null;
       this.localPluginsView.TabIndex = 0;
-      // 
-      // availablePluginsTabPage
-      // 
-      this.availablePluginsTabPage.Controls.Add(this.remotePluginInstaller);
-      this.availablePluginsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.availablePluginsTabPage.Name = "availablePluginsTabPage";
-      this.availablePluginsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.availablePluginsTabPage.Size = new System.Drawing.Size(590, 366);
-      this.availablePluginsTabPage.TabIndex = 1;
-      this.availablePluginsTabPage.Text = "Available Plugins";
-      this.toolTip.SetToolTip(this.availablePluginsTabPage, "Download and install new plugins");
-      this.availablePluginsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // remotePluginInstaller
-      // 
-      this.remotePluginInstaller.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.remotePluginInstaller.InstallationManager = null;
-      this.remotePluginInstaller.Location = new System.Drawing.Point(6, 6);
-      this.remotePluginInstaller.Name = "remotePluginInstaller";
-      this.remotePluginInstaller.PluginManager = null;
-      this.remotePluginInstaller.Size = new System.Drawing.Size(578, 354);
-      this.remotePluginInstaller.StatusView = null;
-      this.remotePluginInstaller.TabIndex = 14;
-      // 
-      // uploadPluginsTabPage
-      // 
-      this.uploadPluginsTabPage.Controls.Add(this.pluginEditor);
-      this.uploadPluginsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.uploadPluginsTabPage.Name = "uploadPluginsTabPage";
-      this.uploadPluginsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.uploadPluginsTabPage.Size = new System.Drawing.Size(590, 366);
-      this.uploadPluginsTabPage.TabIndex = 3;
-      this.uploadPluginsTabPage.Text = "Upload Plugins";
-      this.toolTip.SetToolTip(this.uploadPluginsTabPage, "Upload plugins");
-      this.uploadPluginsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // pluginEditor
-      // 
-      this.pluginEditor.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.pluginEditor.Location = new System.Drawing.Point(6, 6);
-      this.pluginEditor.Name = "pluginEditor";
-      this.pluginEditor.PluginManager = null;
-      this.pluginEditor.Size = new System.Drawing.Size(578, 354);
-      this.pluginEditor.StatusView = null;
-      this.pluginEditor.TabIndex = 0;
-      // 
-      // manageProductsTabPage
-      // 
-      this.manageProductsTabPage.Controls.Add(this.productEditor);
-      this.manageProductsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.manageProductsTabPage.Name = "manageProductsTabPage";
-      this.manageProductsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.manageProductsTabPage.Size = new System.Drawing.Size(590, 366);
-      this.manageProductsTabPage.TabIndex = 4;
-      this.manageProductsTabPage.Text = "Manage Products";
-      this.toolTip.SetToolTip(this.manageProductsTabPage, "Create and manage products");
-      this.manageProductsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // productEditor
-      // 
-      this.productEditor.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.productEditor.Location = new System.Drawing.Point(6, 6);
-      this.productEditor.Name = "productEditor";
-      this.productEditor.Size = new System.Drawing.Size(578, 354);
-      this.productEditor.StatusView = null;
-      this.productEditor.TabIndex = 0;
       // 
       // logTabPage
@@ -234,30 +146,4 @@
       this.logTextBox.TabIndex = 0;
       // 
-      // menuStrip
-      // 
-      this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.optionsToolStripMenuItem});
-      this.menuStrip.Location = new System.Drawing.Point(0, 0);
-      this.menuStrip.Name = "menuStrip";
-      this.menuStrip.Size = new System.Drawing.Size(622, 24);
-      this.menuStrip.TabIndex = 17;
-      this.menuStrip.Text = "menuStrip1";
-      // 
-      // optionsToolStripMenuItem
-      // 
-      this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.connectionSettingsToolStripMenuItem});
-      this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
-      this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
-      this.optionsToolStripMenuItem.Text = "Options";
-      // 
-      // connectionSettingsToolStripMenuItem
-      // 
-      this.connectionSettingsToolStripMenuItem.Image = global::HeuristicLab.PluginInfrastructure.Resources.NetworkConnections;
-      this.connectionSettingsToolStripMenuItem.Name = "connectionSettingsToolStripMenuItem";
-      this.connectionSettingsToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
-      this.connectionSettingsToolStripMenuItem.Text = "Connection Settings...";
-      this.connectionSettingsToolStripMenuItem.Click += new System.EventHandler(this.connectionSettingsToolStripMenuItem_Click);
-      // 
       // InstallationManagerForm
       // 
@@ -267,7 +153,5 @@
       this.Controls.Add(this.tabControl);
       this.Controls.Add(this.statusStrip);
-      this.Controls.Add(this.menuStrip);
       this.Icon = global::HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
-      this.MainMenuStrip = this.menuStrip;
       this.Name = "InstallationManagerForm";
       this.Text = "Plugin Manager";
@@ -276,11 +160,6 @@
       this.tabControl.ResumeLayout(false);
       this.localPluginsTabPage.ResumeLayout(false);
-      this.availablePluginsTabPage.ResumeLayout(false);
-      this.uploadPluginsTabPage.ResumeLayout(false);
-      this.manageProductsTabPage.ResumeLayout(false);
       this.logTabPage.ResumeLayout(false);
       this.logTabPage.PerformLayout();
-      this.menuStrip.ResumeLayout(false);
-      this.menuStrip.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -293,17 +172,8 @@
     private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar;
     private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
-    private AvailablePluginsView remotePluginInstaller;
     private System.Windows.Forms.TabControl tabControl;
     private System.Windows.Forms.TabPage localPluginsTabPage;
-    private System.Windows.Forms.TabPage availablePluginsTabPage;
     private System.Windows.Forms.TabPage logTabPage;
     private System.Windows.Forms.TextBox logTextBox;
-    private System.Windows.Forms.MenuStrip menuStrip;
-    private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem connectionSettingsToolStripMenuItem;
-    private System.Windows.Forms.TabPage uploadPluginsTabPage;
-    private System.Windows.Forms.TabPage manageProductsTabPage;
-    private UploadPluginsView pluginEditor;
-    private EditProductsView productEditor;
     private InstalledPluginsView localPluginsView;
     private System.Windows.Forms.ToolTip toolTip;
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.cs	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.cs	(revision 13333)
@@ -30,5 +30,4 @@
 namespace HeuristicLab.PluginInfrastructure.Advanced {
   internal partial class InstallationManagerForm : Form, IStatusView {
-    private InstallationManager installationManager;
     private string pluginDir;
 
@@ -45,32 +44,7 @@
       pluginDir = Application.StartupPath;
 
-      installationManager = new InstallationManager(pluginDir);
-      installationManager.PluginInstalled += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
-      installationManager.PluginRemoved += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
-      installationManager.PluginUpdated += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
-      installationManager.PreInstallPlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
-      installationManager.PreRemovePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
-      installationManager.PreUpdatePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
-
-      // show or hide controls for uploading plugins based on setting
-      if (!HeuristicLab.PluginInfrastructure.Properties.Settings.Default.ShowPluginUploadControls) {
-        tabControl.Controls.Remove(uploadPluginsTabPage);
-        tabControl.Controls.Remove(manageProductsTabPage);
-      } else {
-        pluginEditor.PluginManager = pluginManager;
-      }
-
       localPluginsView.StatusView = this;
       localPluginsView.PluginManager = pluginManager;
-      localPluginsView.InstallationManager = installationManager;
-
-      remotePluginInstaller.StatusView = this;
-      remotePluginInstaller.InstallationManager = installationManager;
-      remotePluginInstaller.PluginManager = pluginManager;
-
-      pluginEditor.StatusView = this;
-      pluginEditor.PluginManager = pluginManager;
-
-      productEditor.StatusView = this;
+      // localPluginsView.InstallationManager = installationManager;
     }
 
@@ -94,88 +68,9 @@
     #endregion
 
-    #region installation manager event handlers
-    private void installationManager_PreUpdatePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0) {
-        e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmUpdateAction, e.Plugins) == false;
-      }
-    }
-
-    private void installationManager_PreRemovePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0) {
-        e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmRemoveAction, e.Plugins) == false;
-      }
-    }
-
-    private void installationManager_PreInstallPlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0)
-        if ((bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmInstallAction, e.Plugins) == true) {
-          SetStatusStrip("Installing " + e.Plugins.Aggregate("", (a, b) => a.ToString() + "; " + b.ToString()));
-          e.Cancel = false;
-        } else {
-          e.Cancel = true;
-          SetStatusStrip("Install canceled");
-        }
-    }
-
-    private void installationManager_PluginUpdated(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Updated " + e.Entity);
-    }
-
-    private void installationManager_PluginRemoved(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Removed " + e.Entity);
-    }
-
-    private void installationManager_PluginInstalled(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Installed " + e.Entity);
-    }
-    #endregion
 
     #region button events
-    private void connectionSettingsToolStripMenuItem_Click(object sender, EventArgs e) {
-      using (var conSetupView = new ConnectionSetupView()) {
-        conSetupView.ShowDialog(this);
-      }
-    }
     private void tabControl_SelectedIndexChanged(object sender, EventArgs e) {
       toolStripStatusLabel.Text = string.Empty;
     }
-    #endregion
-
-    #region confirmation dialogs
-    private bool ConfirmRemoveAction(IEnumerable<IPluginDescription> plugins) {
-      StringBuilder strBuilder = new StringBuilder();
-      foreach (var plugin in plugins) {
-        foreach (var file in plugin.Files) {
-          strBuilder.AppendLine(Path.GetFileName(file.Name));
-        }
-      }
-      using (var confirmationDialog = new ConfirmationDialog("Confirm Delete", "Do you want to delete following files?", strBuilder.ToString())) {
-        return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
-      }
-    }
-
-    private bool ConfirmUpdateAction(IEnumerable<IPluginDescription> plugins) {
-      StringBuilder strBuilder = new StringBuilder();
-      foreach (var plugin in plugins) {
-        strBuilder.AppendLine(plugin.ToString());
-      }
-      using (var confirmationDialog = new ConfirmationDialog("Confirm Update", "Do you want to update following plugins?", strBuilder.ToString())) {
-        return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
-      }
-    }
-
-    private bool ConfirmInstallAction(IEnumerable<IPluginDescription> plugins) {
-      foreach (var plugin in plugins) {
-        if (!string.IsNullOrEmpty(plugin.LicenseText)) {
-          using (var licenseConfirmationBox = new LicenseConfirmationDialog(plugin)) {
-            if (licenseConfirmationBox.ShowDialog(this) != DialogResult.OK)
-              return false;
-          }
-        }
-      }
-      return true;
-    }
-
-
     #endregion
 
@@ -191,14 +86,4 @@
     #endregion
 
-
-    protected override void OnClosing(CancelEventArgs e) {
-      installationManager.PluginInstalled -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
-      installationManager.PluginRemoved -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
-      installationManager.PluginUpdated -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
-      installationManager.PreInstallPlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
-      installationManager.PreRemovePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
-      installationManager.PreUpdatePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
-      base.OnClosing(e);
-    }
 
     #region IStatusView Members
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.Designer.cs	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.Designer.cs	(revision 13333)
@@ -54,7 +54,4 @@
       this.pluginImageList = new System.Windows.Forms.ImageList(this.components);
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.refreshButton = new System.Windows.Forms.Button();
-      this.removeButton = new System.Windows.Forms.Button();
-      this.updateSelectedButton = new System.Windows.Forms.Button();
       this.SuspendLayout();
       // 
@@ -86,5 +83,4 @@
       this.localPluginsListView.View = System.Windows.Forms.View.Details;
       this.localPluginsListView.ItemActivate += new System.EventHandler(this.localPluginsListView_ItemActivate);
-      this.localPluginsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.pluginsListView_ItemChecked);
       // 
       // nameHeader
@@ -109,56 +105,9 @@
       this.pluginImageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
-      // refreshButton
-      // 
-      this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.refreshButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Repeat;
-      this.refreshButton.Location = new System.Drawing.Point(0, 483);
-      this.refreshButton.Name = "refreshButton";
-      this.refreshButton.Size = new System.Drawing.Size(96, 25);
-      this.refreshButton.TabIndex = 14;
-      this.refreshButton.Text = "Refresh List";
-      this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.refreshButton, "Refresh List of Installed Plugins");
-      this.refreshButton.UseVisualStyleBackColor = true;
-      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
-      // 
-      // removeButton
-      // 
-      this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.removeButton.Enabled = false;
-      this.removeButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Remove;
-      this.removeButton.Location = new System.Drawing.Point(222, 483);
-      this.removeButton.Name = "removeButton";
-      this.removeButton.Size = new System.Drawing.Size(110, 25);
-      this.removeButton.TabIndex = 12;
-      this.removeButton.Text = "Delete Selected";
-      this.removeButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.removeButton, "Delete all selected plugins from disk");
-      this.removeButton.UseVisualStyleBackColor = true;
-      this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
-      // 
-      // updateSelectedButton
-      // 
-      this.updateSelectedButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.updateSelectedButton.Enabled = false;
-      this.updateSelectedButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Internet;
-      this.updateSelectedButton.Location = new System.Drawing.Point(102, 483);
-      this.updateSelectedButton.Name = "updateSelectedButton";
-      this.updateSelectedButton.Size = new System.Drawing.Size(114, 25);
-      this.updateSelectedButton.TabIndex = 6;
-      this.updateSelectedButton.Text = "Update Selected";
-      this.updateSelectedButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.updateSelectedButton, "Update all selected plugins");
-      this.updateSelectedButton.UseVisualStyleBackColor = true;
-      this.updateSelectedButton.Click += new System.EventHandler(this.updateSelectedButton_Click);
-      // 
       // LocalPluginsView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.refreshButton);
       this.Controls.Add(this.localPluginsListView);
-      this.Controls.Add(this.removeButton);
-      this.Controls.Add(this.updateSelectedButton);
       this.Name = "LocalPluginsView";
       this.Size = new System.Drawing.Size(539, 508);
@@ -169,6 +118,4 @@
     #endregion
 
-    private System.Windows.Forms.Button updateSelectedButton;
-    private System.Windows.Forms.Button removeButton;
     private MultiSelectListView localPluginsListView;
     private System.Windows.Forms.ColumnHeader nameHeader;
@@ -177,5 +124,4 @@
     private System.Windows.Forms.ToolTip toolTip;
     private System.Windows.Forms.ImageList pluginImageList;
-    private System.Windows.Forms.Button refreshButton;
     // private LocalPluginManagerView localPluginManagerView;
   }
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.cs	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.cs	(revision 13333)
@@ -31,6 +31,4 @@
     private const string CheckingPluginsMessage = "Checking for updated plugins...";
     private const string NoUpdatesAvailableMessage = "No updates available.";
-    private BackgroundWorker removePluginsBackgroundWorker;
-    private BackgroundWorker updatePluginsBackgroundWorker;
 
     private ListViewGroup enabledPluginsGroup;
@@ -46,9 +44,9 @@
     }
 
-    private InstallationManager installationManager;
-    public InstallationManager InstallationManager {
-      get { return installationManager; }
-      set { installationManager = value; }
-    }
+    // private InstallationManager installationManager;
+    // public InstallationManager InstallationManager {
+    //   get { return installationManager; }
+    //   set { installationManager = value; }
+    // }
 
     public InstalledPluginsView()
@@ -58,68 +56,9 @@
       disabledPluginsGroup = localPluginsListView.Groups["disabledPluginsGroup"];
       pluginImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Plugin);
-      removePluginsBackgroundWorker = new BackgroundWorker();
-      removePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(removePluginsBackgroundWorker_DoWork);
-      removePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(removePluginsBackgroundWorker_RunWorkerCompleted);
-      updatePluginsBackgroundWorker = new BackgroundWorker();
-      updatePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updatePluginsBackgroundWorker_DoWork);
-      updatePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updatePluginsBackgroundWorker_RunWorkerCompleted);
-
       UpdateControl();
     }
 
 
-
-    #region event handlers for plugin removal background worker
-    void removePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("File Deletion Error", "There was problem while deleting files." + Environment.NewLine + e.Error.Message);
-      }
-      UpdateControl();
-      StatusView.HideProgressIndicator();
-      StatusView.UnlockUI();
-    }
-
-    void removePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      IEnumerable<IPluginDescription> pluginsToRemove = (IEnumerable<IPluginDescription>)e.Argument;
-      if (pluginsToRemove.Count() > 0) {
-        installationManager.Remove(pluginsToRemove);
-        pluginManager.DiscoverAndCheckPlugins();
-      }
-    }
-    #endregion
-
     #region event handlers for update plugins backgroundworker
-    void updatePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-           "Please check your connection settings and user credentials.");
-      }
-      StatusView.RemoveMessage(CheckingPluginsMessage);
-      StatusView.HideProgressIndicator();
-      UpdateControl();
-      StatusView.UnlockUI();
-    }
-
-    void updatePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      IEnumerable<IPluginDescription> selectedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
-      var remotePlugins = installationManager.GetRemotePluginList();
-      // if there is a local plugin with same name and same major and minor version then it's an update
-      var pluginsToUpdate = from remotePlugin in remotePlugins
-                            let matchingLocalPlugins = from installedPlugin in selectedPlugins
-                                                       where installedPlugin.Name == remotePlugin.Name
-                                                       where installedPlugin.Version.Major == remotePlugin.Version.Major
-                                                       where installedPlugin.Version.Minor == remotePlugin.Version.Minor
-                                                       where IsNewerThan(remotePlugin, installedPlugin)
-                                                       select installedPlugin
-                            where matchingLocalPlugins.Count() > 0
-                            select remotePlugin;
-      if (pluginsToUpdate.Count() > 0) {
-        bool cancelled;
-        installationManager.Update(pluginsToUpdate, out cancelled);
-        if (!cancelled) pluginManager.DiscoverAndCheckPlugins();
-      }
-    }
-
     // compares for two plugins with same major and minor version if plugin1 is newer than plugin2
     private static bool IsNewerThan(IPluginDescription plugin1, IPluginDescription plugin2) {
@@ -145,6 +84,4 @@
         localPluginsListView.SuppressItemCheckedEvents = false;
       }
-      removeButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
-      updateSelectedButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
       Util.ResizeColumns(localPluginsListView.Columns.OfType<ColumnHeader>());
     }
@@ -162,40 +99,4 @@
     }
 
-    private void pluginsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
-      // checked items are marked for removal
-      if (e.Item.Checked) {
-        List<ListViewItem> modifiedItems = new List<ListViewItem>();
-        foreach (ListViewItem item in localPluginsListView.SelectedItems) {
-          modifiedItems.Add(item);
-          int oldItemsCount = 0;
-          while (oldItemsCount < modifiedItems.Count) {
-            oldItemsCount = modifiedItems.Count;
-            var oldModifiedItems = new List<ListViewItem>(modifiedItems);
-            foreach (var modifiedItem in oldModifiedItems) {
-              var plugin = (IPluginDescription)modifiedItem.Tag;
-              // also check all dependent plugins
-              foreach (ListViewItem dependentItem in localPluginsListView.Items) {
-                var dependent = (IPluginDescription)dependentItem.Tag;
-                if (!modifiedItems.Contains(dependentItem) &&
-                  !dependentItem.Checked && (from dep in dependent.Dependencies
-                                             where dep.Name == plugin.Name
-                                             where dep.Version == plugin.Version
-                                             select dep).Any()) {
-                  modifiedItems.Add(dependentItem);
-                }
-              }
-            }
-          }
-        }
-        localPluginsListView.CheckItems(modifiedItems);
-      } else {
-        List<ListViewItem> modifiedItems = new List<ListViewItem>();
-        foreach (ListViewItem item in localPluginsListView.SelectedItems) {
-          modifiedItems.Add(item);
-        }
-        localPluginsListView.UncheckItems(modifiedItems);
-      }
-      OnItemsCheckedChanged(EventArgs.Empty);
-    }
 
     private void localPluginsListView_ItemActivate(object sender, EventArgs e) {
@@ -206,38 +107,4 @@
       }
     }
-
-    private void OnItemsCheckedChanged(EventArgs eventArgs) {
-      removeButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
-      updateSelectedButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
-    }
-
-    private void updateSelectedButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.RemoveMessage(NoUpdatesAvailableMessage);
-      StatusView.ShowMessage(CheckingPluginsMessage);
-      var checkedPlugins = localPluginsListView.CheckedItems.OfType<ListViewItem>()
-        .Select(item => item.Tag)
-        .OfType<IPluginDescription>()
-        .ToList();
-      updatePluginsBackgroundWorker.RunWorkerAsync(checkedPlugins);
-    }
-
-    private void removeButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      var checkedPlugins = localPluginsListView.CheckedItems.OfType<ListViewItem>()
-        .Select(item => item.Tag)
-        .OfType<IPluginDescription>()
-        .ToList();
-      removePluginsBackgroundWorker.RunWorkerAsync(checkedPlugins);
-    }
-
-    private void refreshButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      // refresh = update empty list of plugins (plugins are reloaded)
-      updatePluginsBackgroundWorker.RunWorkerAsync(new IPluginDescription[0]);
-    }
   }
 }
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/LicenseConfirmationDialog.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/LicenseConfirmationDialog.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,205 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class LicenseConfirmationDialog {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.richTextBox = new System.Windows.Forms.RichTextBox();
-      this.acceptButton = new System.Windows.Forms.Button();
-      this.rejectButton = new System.Windows.Forms.Button();
-      this.licenseLabel = new System.Windows.Forms.Label();
-      this.label1 = new System.Windows.Forms.Label();
-      this.radioButtonGroupBox = new System.Windows.Forms.GroupBox();
-      this.rejectRadioButton = new System.Windows.Forms.RadioButton();
-      this.acceptRadioButton = new System.Windows.Forms.RadioButton();
-      this.panel1 = new System.Windows.Forms.Panel();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.radioButtonGroupBox.SuspendLayout();
-      this.panel1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // richTextBox
-      // 
-      this.richTextBox.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.richTextBox.BackColor = System.Drawing.SystemColors.HighlightText;
-      this.richTextBox.Location = new System.Drawing.Point(12, 48);
-      this.richTextBox.Name = "richTextBox";
-      this.richTextBox.ReadOnly = true;
-      this.richTextBox.Size = new System.Drawing.Size(494, 287);
-      this.richTextBox.TabIndex = 0;
-      this.richTextBox.Text = "";
-      // 
-      // acceptButton
-      // 
-      this.acceptButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.acceptButton.Enabled = false;
-      this.acceptButton.Location = new System.Drawing.Point(347, 53);
-      this.acceptButton.Name = "acceptButton";
-      this.acceptButton.Size = new System.Drawing.Size(75, 23);
-      this.acceptButton.TabIndex = 1;
-      this.acceptButton.Text = "Next >";
-      this.toolTip.SetToolTip(this.acceptButton, "Accept license agreement and continue installation");
-      this.acceptButton.UseVisualStyleBackColor = true;
-      this.acceptButton.Click += new System.EventHandler(this.acceptButton_Click);
-      // 
-      // rejectButton
-      // 
-      this.rejectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.rejectButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.rejectButton.Location = new System.Drawing.Point(428, 53);
-      this.rejectButton.Name = "rejectButton";
-      this.rejectButton.Size = new System.Drawing.Size(79, 23);
-      this.rejectButton.TabIndex = 2;
-      this.rejectButton.Text = "Cancel";
-      this.toolTip.SetToolTip(this.rejectButton, "Cancel installation");
-      this.rejectButton.UseVisualStyleBackColor = true;
-      this.rejectButton.Click += new System.EventHandler(this.rejectButton_Click);
-      // 
-      // licenseLabel
-      // 
-      this.licenseLabel.AutoSize = true;
-      this.licenseLabel.Location = new System.Drawing.Point(12, 32);
-      this.licenseLabel.Name = "licenseLabel";
-      this.licenseLabel.Size = new System.Drawing.Size(241, 13);
-      this.licenseLabel.TabIndex = 3;
-      this.licenseLabel.Text = "Please read following license agreement carefully.";
-      // 
-      // label1
-      // 
-      this.label1.AutoSize = true;
-      this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.label1.Location = new System.Drawing.Point(12, 9);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(115, 13);
-      this.label1.TabIndex = 4;
-      this.label1.Text = "License Agreement";
-      // 
-      // radioButtonGroupBox
-      // 
-      this.radioButtonGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.radioButtonGroupBox.Controls.Add(this.rejectRadioButton);
-      this.radioButtonGroupBox.Controls.Add(this.acceptRadioButton);
-      this.radioButtonGroupBox.Location = new System.Drawing.Point(13, 5);
-      this.radioButtonGroupBox.Name = "radioButtonGroupBox";
-      this.radioButtonGroupBox.Size = new System.Drawing.Size(281, 71);
-      this.radioButtonGroupBox.TabIndex = 5;
-      this.radioButtonGroupBox.TabStop = false;
-      // 
-      // rejectRadioButton
-      // 
-      this.rejectRadioButton.AutoSize = true;
-      this.rejectRadioButton.Location = new System.Drawing.Point(6, 42);
-      this.rejectRadioButton.Name = "rejectRadioButton";
-      this.rejectRadioButton.Size = new System.Drawing.Size(264, 17);
-      this.rejectRadioButton.TabIndex = 1;
-      this.rejectRadioButton.TabStop = true;
-      this.rejectRadioButton.Text = "I do not accept the terms in the license agreement.";
-      this.rejectRadioButton.UseVisualStyleBackColor = true;
-      this.rejectRadioButton.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
-      // 
-      // acceptRadioButton
-      // 
-      this.acceptRadioButton.AutoSize = true;
-      this.acceptRadioButton.Location = new System.Drawing.Point(6, 19);
-      this.acceptRadioButton.Name = "acceptRadioButton";
-      this.acceptRadioButton.Size = new System.Drawing.Size(231, 17);
-      this.acceptRadioButton.TabIndex = 0;
-      this.acceptRadioButton.TabStop = true;
-      this.acceptRadioButton.Text = "I accept the terms in the license agreement.";
-      this.acceptRadioButton.UseVisualStyleBackColor = true;
-      this.acceptRadioButton.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
-      // 
-      // panel1
-      // 
-      this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.panel1.BackColor = System.Drawing.SystemColors.Control;
-      this.panel1.Controls.Add(this.acceptButton);
-      this.panel1.Controls.Add(this.radioButtonGroupBox);
-      this.panel1.Controls.Add(this.rejectButton);
-      this.panel1.Location = new System.Drawing.Point(-1, 341);
-      this.panel1.Name = "panel1";
-      this.panel1.Size = new System.Drawing.Size(520, 88);
-      this.panel1.TabIndex = 6;
-      // 
-      // LicenseConfirmationDialog
-      // 
-      this.AcceptButton = this.acceptButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.BackColor = System.Drawing.SystemColors.HighlightText;
-      this.CancelButton = this.rejectButton;
-      this.ClientSize = new System.Drawing.Size(518, 429);
-      this.Controls.Add(this.panel1);
-      this.Controls.Add(this.label1);
-      this.Controls.Add(this.licenseLabel);
-      this.Controls.Add(this.richTextBox);
-      this.Icon = HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "LicenseConfirmationDialog";
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.radioButtonGroupBox.ResumeLayout(false);
-      this.radioButtonGroupBox.PerformLayout();
-      this.panel1.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.RichTextBox richTextBox;
-    private System.Windows.Forms.Button acceptButton;
-    private System.Windows.Forms.Button rejectButton;
-    private System.Windows.Forms.Label licenseLabel;
-    private System.Windows.Forms.Label label1;
-    private System.Windows.Forms.GroupBox radioButtonGroupBox;
-    private System.Windows.Forms.RadioButton rejectRadioButton;
-    private System.Windows.Forms.RadioButton acceptRadioButton;
-    private System.Windows.Forms.Panel panel1;
-    private System.Windows.Forms.ToolTip toolTip;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/LicenseConfirmationDialog.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/LicenseConfirmationDialog.cs	(revision 13332)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-using System;
-using System.Windows.Forms;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class LicenseConfirmationDialog : Form {
-    public LicenseConfirmationDialog()
-      : base() {
-      InitializeComponent();
-    }
-
-    public LicenseConfirmationDialog(IPluginDescription plugin)
-      : base() {
-      InitializeComponent();
-      richTextBox.Text = plugin.LicenseText;
-      this.Text = plugin.ToString();
-      this.DialogResult = DialogResult.Cancel;
-    }
-
-    private void acceptButton_Click(object sender, EventArgs e) {
-      DialogResult = DialogResult.OK;
-      this.Close();
-    }
-
-    private void rejectButton_Click(object sender, EventArgs e) {
-      DialogResult = DialogResult.Cancel;
-      this.Close();
-    }
-
-    private void radioButton1_CheckedChanged(object sender, EventArgs e) {
-      acceptButton.Enabled = acceptRadioButton.Checked;
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/PluginUpdaterForm.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/PluginUpdaterForm.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,122 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class PluginUpdaterForm {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.progressBar = new System.Windows.Forms.ProgressBar();
-      this.statusLabel = new System.Windows.Forms.Label();
-      this.okButton = new System.Windows.Forms.Button();
-      this.SuspendLayout();
-      // 
-      // progressBar
-      // 
-      this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.progressBar.Location = new System.Drawing.Point(12, 73);
-      this.progressBar.Name = "progressBar";
-      this.progressBar.Size = new System.Drawing.Size(350, 23);
-      this.progressBar.TabIndex = 1;
-      this.progressBar.UseWaitCursor = true;
-      // 
-      // statusLabel
-      // 
-      this.statusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.statusLabel.AutoSize = true;
-      this.statusLabel.Location = new System.Drawing.Point(13, 13);
-      this.statusLabel.Name = "statusLabel";
-      this.statusLabel.Size = new System.Drawing.Size(61, 13);
-      this.statusLabel.TabIndex = 2;
-      this.statusLabel.Text = "statusLabel";
-      this.statusLabel.UseWaitCursor = true;
-      // 
-      // okButton
-      // 
-      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.Location = new System.Drawing.Point(12, 73);
-      this.okButton.Name = "okButton";
-      this.okButton.Size = new System.Drawing.Size(78, 23);
-      this.okButton.TabIndex = 3;
-      this.okButton.Text = "Ok";
-      this.okButton.UseVisualStyleBackColor = true;
-      this.okButton.UseWaitCursor = true;
-      this.okButton.Visible = false;
-      this.okButton.Click += new System.EventHandler(this.okButton_Click);
-      // 
-      // PluginUpdaterForm
-      // 
-      this.AcceptButton = this.okButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.ClientSize = new System.Drawing.Size(374, 108);
-      this.Controls.Add(this.okButton);
-      this.Controls.Add(this.statusLabel);
-      this.Controls.Add(this.progressBar);
-      this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
-      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-      this.Icon = global::HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "PluginUpdaterForm";
-      this.ShowInTaskbar = false;
-      this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "Plugin Updater";
-      this.UseWaitCursor = true;
-      this.Load += new System.EventHandler(this.PluginUpdaterForm_Load);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.ProgressBar progressBar;
-    private System.Windows.Forms.Label statusLabel;
-    private System.Windows.Forms.Button okButton;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/PluginUpdaterForm.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/PluginUpdaterForm.cs	(revision 13332)
+++ 	(revision )
@@ -1,261 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure.Manager;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class PluginUpdaterForm : Form, IStatusView {
-    private InstallationManager installationManager;
-    private PluginManager pluginManager;
-    private string pluginDir;
-    private BackgroundWorker updatePluginsBackgroundWorker;
-
-    public PluginUpdaterForm(PluginManager pluginManager)
-      : base() {
-      InitializeComponent();
-      Text = "HeuristicLab Plugin Manager " + AssemblyHelpers.GetFileVersion(GetType().Assembly);
-      pluginManager.PluginLoaded += pluginManager_PluginLoaded;
-      pluginManager.PluginUnloaded += pluginManager_PluginUnloaded;
-      pluginManager.Initializing += pluginManager_Initializing;
-      pluginManager.Initialized += pluginManager_Initialized;
-
-      pluginDir = Application.StartupPath;
-
-      installationManager = new InstallationManager(pluginDir);
-      installationManager.PluginInstalled += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
-      installationManager.PluginRemoved += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
-      installationManager.PluginUpdated += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
-      installationManager.PreInstallPlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
-      installationManager.PreRemovePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
-      installationManager.PreUpdatePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
-
-      this.pluginManager = pluginManager;
-
-      updatePluginsBackgroundWorker = new BackgroundWorker();
-      updatePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updatePluginsBackgroundWorker_DoWork);
-      updatePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updatePluginsBackgroundWorker_RunWorkerCompleted);
-    }
-
-
-    private void PluginUpdaterForm_Load(object sender, EventArgs e) {
-      updatePluginsBackgroundWorker.RunWorkerAsync();
-      ShowProgressIndicator();
-      ShowMessage("Downloading and installing plugins...");
-    }
-
-    #region event handlers for update plugins backgroundworker
-    void updatePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        ShowError("Installation Error", "There was a problem while downloading and installing updates." + Environment.NewLine + "Please check your connection settings.");
-      } else {
-        Close();
-      }
-    }
-
-    void updatePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      IEnumerable<IPluginDescription> installedPlugins = pluginManager.Plugins.OfType<IPluginDescription>().ToList();
-      var remotePlugins = installationManager.GetRemotePluginList();
-      // if there is a local plugin with same name and same major and minor version then it's an update
-      var pluginsToUpdate = from remotePlugin in remotePlugins
-                            let matchingLocalPlugins = from installedPlugin in installedPlugins
-                                                       where installedPlugin.Name == remotePlugin.Name
-                                                       where installedPlugin.Version.Major == remotePlugin.Version.Major
-                                                       where installedPlugin.Version.Minor == remotePlugin.Version.Minor
-                                                       where Util.IsNewerThan(remotePlugin, installedPlugin)
-                                                       select installedPlugin
-                            where matchingLocalPlugins.Count() > 0
-                            select remotePlugin;
-      if (pluginsToUpdate.Count() > 0) {
-        bool canceled;
-        installationManager.Update(pluginsToUpdate, out canceled);
-        if (!canceled)
-          pluginManager.DiscoverAndCheckPlugins();
-        e.Cancel = false;
-      }
-    }
-    #endregion
-
-    #region plugin manager event handlers
-    private void pluginManager_Initialized(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Initialized PluginInfrastructure");
-    }
-
-    private void pluginManager_Initializing(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Initializing PluginInfrastructure");
-    }
-
-    private void pluginManager_PluginUnloaded(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Unloaded " + e.Entity);
-    }
-
-    private void pluginManager_PluginLoaded(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Loaded " + e.Entity);
-    }
-    #endregion
-
-    #region installation manager event handlers
-    private void installationManager_PreUpdatePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0) {
-        e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmUpdateAction, e.Plugins) == false;
-      }
-    }
-
-    private void installationManager_PreRemovePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0) {
-        e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmRemoveAction, e.Plugins) == false;
-      }
-    }
-
-    private void installationManager_PreInstallPlugin(object sender, PluginInfrastructureCancelEventArgs e) {
-      if (e.Plugins.Count() > 0)
-        if ((bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmInstallAction, e.Plugins) == true) {
-          SetStatusStrip("Installing " + e.Plugins.Aggregate("", (a, b) => a.ToString() + "; " + b.ToString()));
-          e.Cancel = false;
-        } else {
-          e.Cancel = true;
-          SetStatusStrip("Install canceled");
-        }
-    }
-
-    private void installationManager_PluginUpdated(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Updated " + e.Entity);
-    }
-
-    private void installationManager_PluginRemoved(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Removed " + e.Entity);
-    }
-
-    private void installationManager_PluginInstalled(object sender, PluginInfrastructureEventArgs e) {
-      SetStatusStrip("Installed " + e.Entity);
-    }
-    #endregion
-
-    #region confirmation dialogs
-    private bool ConfirmRemoveAction(IEnumerable<IPluginDescription> plugins) {
-      StringBuilder strBuilder = new StringBuilder();
-      foreach (var plugin in plugins) {
-        foreach (var file in plugin.Files) {
-          strBuilder.AppendLine(Path.GetFileName(file.Name));
-        }
-      }
-      using (var confirmationDialog = new ConfirmationDialog("Confirm Delete", "Do you want to delete following files?", strBuilder.ToString())) {
-        return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
-      }
-    }
-
-    private bool ConfirmUpdateAction(IEnumerable<IPluginDescription> plugins) {
-      StringBuilder strBuilder = new StringBuilder();
-      foreach (var plugin in plugins) {
-        strBuilder.AppendLine(plugin.ToString());
-      }
-      using (var confirmationDialog = new ConfirmationDialog("Confirm Update", "Do you want to update following plugins?", strBuilder.ToString())) {
-        return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
-      }
-    }
-
-    private bool ConfirmInstallAction(IEnumerable<IPluginDescription> plugins) {
-      foreach (var plugin in plugins) {
-        if (!string.IsNullOrEmpty(plugin.LicenseText)) {
-          using (var licenseConfirmationBox = new LicenseConfirmationDialog(plugin)) {
-            if (licenseConfirmationBox.ShowDialog(this) != DialogResult.OK)
-              return false;
-          }
-        }
-      }
-      return true;
-    }
-
-
-    #endregion
-
-    #region helper methods
-    private void SetStatusStrip(string msg) {
-      if (InvokeRequired) Invoke((Action<string>)SetStatusStrip, msg);
-      else {
-        statusLabel.Text = msg;
-      }
-    }
-
-    #endregion
-
-
-    protected override void OnClosing(CancelEventArgs e) {
-      installationManager.PluginInstalled -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
-      installationManager.PluginRemoved -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
-      installationManager.PluginUpdated -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
-      installationManager.PreInstallPlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
-      installationManager.PreRemovePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
-      installationManager.PreUpdatePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
-      base.OnClosing(e);
-    }
-
-    #region IStatusView Members
-
-    public void ShowProgressIndicator(double percentProgress) {
-      if (percentProgress < 0.0 || percentProgress > 1.0) throw new ArgumentException("percentProgress");
-      progressBar.Visible = true;
-      progressBar.Style = ProgressBarStyle.Continuous;
-      int range = progressBar.Maximum - progressBar.Minimum;
-      progressBar.Value = (int)(percentProgress * range + progressBar.Minimum);
-    }
-
-    public void ShowProgressIndicator() {
-      progressBar.Visible = true;
-      progressBar.Style = ProgressBarStyle.Marquee;
-    }
-
-    public void HideProgressIndicator() {
-      progressBar.Visible = false;
-    }
-
-    public void ShowMessage(string message) {
-      statusLabel.Text = message;
-    }
-
-    public void RemoveMessage(string message) {
-      statusLabel.Text = string.Empty;
-    }
-
-    public void LockUI() {
-      Cursor = Cursors.AppStarting;
-    }
-    public void UnlockUI() {
-      Cursor = Cursors.Default;
-    }
-    public void ShowError(string shortMessage, string description) {
-      progressBar.Visible = false;
-      okButton.Visible = true;
-      statusLabel.Text = shortMessage + Environment.NewLine + description;
-      this.Cursor = Cursors.Default;
-    }
-    #endregion
-
-    private void okButton_Click(object sender, EventArgs e) {
-      Close();
-    }
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/UploadPluginsView.Designer.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/UploadPluginsView.Designer.cs	(revision 13332)
+++ 	(revision )
@@ -1,161 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  partial class UploadPluginsView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.uploadButton = new System.Windows.Forms.Button();
-      this.refreshButton = new System.Windows.Forms.Button();
-      this.listView = new HeuristicLab.PluginInfrastructure.Advanced.MultiSelectListView();
-      this.pluginNameHeader = new System.Windows.Forms.ColumnHeader();
-      this.localVersionHeader = new System.Windows.Forms.ColumnHeader();
-      this.serverVersionHeader = new System.Windows.Forms.ColumnHeader();
-      this.descriptionHeader = new System.Windows.Forms.ColumnHeader();
-      this.pluginImageList = new System.Windows.Forms.ImageList(this.components);
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.SuspendLayout();
-      // 
-      // uploadButton
-      // 
-      this.uploadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.uploadButton.Enabled = false;
-      this.uploadButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.PublishToWeb;
-      this.uploadButton.Location = new System.Drawing.Point(78, 482);
-      this.uploadButton.Name = "uploadButton";
-      this.uploadButton.Size = new System.Drawing.Size(114, 26);
-      this.uploadButton.TabIndex = 7;
-      this.uploadButton.Text = "Upload Selected";
-      this.uploadButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.uploadButton, "Upload selected plugins to the server");
-      this.uploadButton.UseVisualStyleBackColor = true;
-      this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click);
-      // 
-      // refreshButton
-      // 
-      this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.refreshButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Internet;
-      this.refreshButton.Location = new System.Drawing.Point(0, 482);
-      this.refreshButton.Name = "refreshButton";
-      this.refreshButton.Size = new System.Drawing.Size(72, 26);
-      this.refreshButton.TabIndex = 6;
-      this.refreshButton.Text = "Refresh";
-      this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
-      this.toolTip.SetToolTip(this.refreshButton, "Update list of plugins from the server");
-      this.refreshButton.UseVisualStyleBackColor = true;
-      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
-      // 
-      // listView
-      // 
-      this.listView.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.listView.CheckBoxes = true;
-      this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.pluginNameHeader,
-            this.localVersionHeader,
-            this.serverVersionHeader,
-            this.descriptionHeader});
-      this.listView.Location = new System.Drawing.Point(0, 0);
-      this.listView.Name = "listView";
-      this.listView.Size = new System.Drawing.Size(539, 476);
-      this.listView.SmallImageList = this.pluginImageList;
-      this.listView.Sorting = System.Windows.Forms.SortOrder.Ascending;
-      this.listView.SuppressItemCheckedEvents = false;
-      this.listView.TabIndex = 8;
-      this.listView.UseCompatibleStateImageBehavior = false;
-      this.listView.View = System.Windows.Forms.View.Details;
-      this.listView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listView_ItemChecked);
-      // 
-      // pluginNameHeader
-      // 
-      this.pluginNameHeader.Text = "Name";
-      this.pluginNameHeader.Width = 40;
-      // 
-      // localVersionHeader
-      // 
-      this.localVersionHeader.Text = "Local Version";
-      this.localVersionHeader.Width = 76;
-      // 
-      // serverVersionHeader
-      // 
-      this.serverVersionHeader.Text = "Server Version";
-      this.serverVersionHeader.Width = 81;
-      // 
-      // descriptionHeader
-      // 
-      this.descriptionHeader.Text = "Description";
-      this.descriptionHeader.Width = 335;
-      // 
-      // pluginImageList
-      // 
-      this.pluginImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-      this.pluginImageList.ImageSize = new System.Drawing.Size(16, 16);
-      this.pluginImageList.TransparentColor = System.Drawing.Color.Transparent;
-      // 
-      // PluginEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.listView);
-      this.Controls.Add(this.uploadButton);
-      this.Controls.Add(this.refreshButton);
-      this.Name = "PluginEditor";
-      this.Size = new System.Drawing.Size(539, 508);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button refreshButton;
-    private System.Windows.Forms.Button uploadButton;
-    private MultiSelectListView listView;
-    private System.Windows.Forms.ColumnHeader pluginNameHeader;
-    private System.Windows.Forms.ColumnHeader localVersionHeader;
-    private System.Windows.Forms.ColumnHeader serverVersionHeader;
-    private System.Windows.Forms.ColumnHeader descriptionHeader;
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.ImageList pluginImageList;
-  }
-}
Index: anches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/UploadPluginsView.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/UploadPluginsView.cs	(revision 13332)
+++ 	(revision )
@@ -1,308 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.IO;
-using System.IO.Compression;
-using System.Linq;
-using System.ServiceModel;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure.Manager;
-
-namespace HeuristicLab.PluginInfrastructure.Advanced {
-  internal partial class UploadPluginsView : InstallationManagerControl {
-    private const string UploadMessage = "Uploading plugins...";
-    private const string RefreshMessage = "Downloading plugin information from deployment service...";
-
-    private Dictionary<IPluginDescription, IPluginDescription> localAndServerPlugins;
-    private BackgroundWorker pluginUploadWorker;
-    private BackgroundWorker refreshPluginsWorker;
-
-    private PluginManager pluginManager;
-    public PluginManager PluginManager {
-      get { return pluginManager; }
-      set { pluginManager = value; }
-    }
-
-    public UploadPluginsView() {
-      InitializeComponent();
-      pluginImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Plugin);
-      localAndServerPlugins = new Dictionary<IPluginDescription, IPluginDescription>();
-
-      #region initialize backgroundworkers
-      pluginUploadWorker = new BackgroundWorker();
-      pluginUploadWorker.DoWork += new DoWorkEventHandler(pluginUploadWorker_DoWork);
-      pluginUploadWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(pluginUploadWorker_RunWorkerCompleted);
-
-      refreshPluginsWorker = new BackgroundWorker();
-      refreshPluginsWorker.DoWork += new DoWorkEventHandler(refreshPluginsWorker_DoWork);
-      refreshPluginsWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(refreshPluginsWorker_RunWorkerCompleted);
-      #endregion
-    }
-
-    #region refresh plugins from server backgroundworker
-    void refreshPluginsWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-                   "Please check your connection settings and user credentials.");
-      } else {
-        UpdatePluginListView((IEnumerable<IPluginDescription>)e.Result);
-      }
-      StatusView.HideProgressIndicator();
-      StatusView.RemoveMessage(RefreshMessage);
-      StatusView.UnlockUI();
-    }
-
-    void refreshPluginsWorker_DoWork(object sender, DoWorkEventArgs e) {
-      // refresh available plugins
-      var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        e.Result = client.GetPlugins();
-        client.Close();
-      }
-      catch (TimeoutException) {
-        client.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        client.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        client.Abort();
-        throw;
-      }
-    }
-    #endregion
-
-    #region upload plugins to server backgroundworker
-    void pluginUploadWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      if (e.Error != null) {
-        StatusView.ShowError("Connection Error",
-          "There was an error while connecting to the server." + Environment.NewLine +
-                   "Please check your connection settings and user credentials.");
-      } else {
-        UpdatePluginListView((IEnumerable<IPluginDescription>)e.Result);
-      }
-      StatusView.RemoveMessage(UploadMessage);
-      StatusView.HideProgressIndicator();
-      StatusView.UnlockUI();
-    }
-
-    void pluginUploadWorker_DoWork(object sender, DoWorkEventArgs e) {
-      // upload plugins
-      var selectedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
-      DeploymentService.AdminServiceClient adminClient = DeploymentService.AdminServiceClientFactory.CreateClient();
-      Dictionary<IPluginDescription, DeploymentService.PluginDescription> cachedPluginDescriptions =
-        new Dictionary<IPluginDescription, DeploymentService.PluginDescription>();
-      try {
-        foreach (var plugin in IteratePlugins(selectedPlugins)) {
-          adminClient.DeployPlugin(MakePluginDescription(plugin, cachedPluginDescriptions), CreateZipPackage(plugin));
-        }
-        adminClient.Close();
-      }
-      catch (TimeoutException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        adminClient.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        adminClient.Abort();
-        throw;
-      }
-      // refresh available plugins
-      var client = DeploymentService.UpdateServiceClientFactory.CreateClient();
-      try {
-        e.Result = client.GetPlugins();
-        client.Close();
-      }
-      catch (TimeoutException) {
-        client.Abort();
-        throw;
-      }
-      catch (FaultException) {
-        client.Abort();
-        throw;
-      }
-      catch (CommunicationException) {
-        client.Abort();
-        throw;
-      }
-    }
-    #endregion
-
-
-    #region button events
-    private void uploadButton_Click(object sender, EventArgs e) {
-      var selectedPlugins = from item in listView.Items.Cast<ListViewItem>()
-                            where item.Checked
-                            where item.Tag is IPluginDescription
-                            select item.Tag as IPluginDescription;
-      if (selectedPlugins.Count() > 0) {
-        StatusView.LockUI();
-        StatusView.ShowProgressIndicator();
-        StatusView.ShowMessage(UploadMessage);
-        pluginUploadWorker.RunWorkerAsync(selectedPlugins.ToList());
-      }
-    }
-
-    private void refreshButton_Click(object sender, EventArgs e) {
-      StatusView.LockUI();
-      StatusView.ShowProgressIndicator();
-      StatusView.ShowMessage(RefreshMessage);
-      refreshPluginsWorker.RunWorkerAsync();
-    }
-
-    #endregion
-
-    #region item list events
-    private bool ignoreItemCheckedEvents = false;
-    private void listView_ItemChecked(object sender, ItemCheckedEventArgs e) {
-      if (ignoreItemCheckedEvents) return;
-      List<IPluginDescription> modifiedPlugins = new List<IPluginDescription>();
-      if (e.Item.Checked) {
-        foreach (ListViewItem item in listView.SelectedItems) {
-          var plugin = (IPluginDescription)item.Tag;
-          // also check all dependencies
-          if (!modifiedPlugins.Contains(plugin))
-            modifiedPlugins.Add(plugin);
-          foreach (var dep in Util.GetAllDependencies(plugin)) {
-            if (!modifiedPlugins.Contains(dep))
-              modifiedPlugins.Add(dep);
-          }
-        }
-        listView.CheckItems(modifiedPlugins.Select(x => FindItemForPlugin(x)));
-      } else {
-        foreach (ListViewItem item in listView.SelectedItems) {
-          var plugin = (IPluginDescription)item.Tag;
-          // also uncheck all dependent plugins
-          if (!modifiedPlugins.Contains(plugin))
-            modifiedPlugins.Add(plugin);
-          foreach (var dep in Util.GetAllDependents(plugin, localAndServerPlugins.Keys)) {
-            if (!modifiedPlugins.Contains(dep))
-              modifiedPlugins.Add(dep);
-          }
-        }
-        listView.UncheckItems(modifiedPlugins.Select(x => FindItemForPlugin(x)));
-      }
-      uploadButton.Enabled = (from i in listView.Items.OfType<ListViewItem>()
-                              where i.Checked
-                              select i).Any();
-    }
-    #endregion
-
-    #region helper methods
-    private void UpdatePluginListView(IEnumerable<IPluginDescription> remotePlugins) {
-      // refresh local plugins
-      localAndServerPlugins.Clear();
-      foreach (var plugin in pluginManager.Plugins) {
-        localAndServerPlugins.Add(plugin, null);
-      }
-      foreach (var plugin in remotePlugins) {
-        var matchingLocalPlugin = (from localPlugin in localAndServerPlugins.Keys
-                                   where localPlugin.Name == plugin.Name
-                                   where localPlugin.Version == plugin.Version
-                                   select localPlugin).SingleOrDefault();
-        if (matchingLocalPlugin != null) {
-          localAndServerPlugins[matchingLocalPlugin] = plugin;
-        }
-      }
-      // refresh the list view with plugins
-      listView.Items.Clear();
-      ignoreItemCheckedEvents = true;
-      foreach (var pair in localAndServerPlugins) {
-        var item = MakeListViewItem(pair.Key);
-        listView.Items.Add(item);
-      }
-      Util.ResizeColumns(listView.Columns.OfType<ColumnHeader>());
-      ignoreItemCheckedEvents = false;
-    }
-
-    private IEnumerable<IPluginDescription> IteratePlugins(IEnumerable<IPluginDescription> plugins) {
-      HashSet<IPluginDescription> yieldedItems = new HashSet<IPluginDescription>();
-      foreach (var plugin in plugins) {
-        foreach (var dependency in IteratePlugins(plugin.Dependencies)) {
-          if (!yieldedItems.Contains(dependency)) {
-            yieldedItems.Add(dependency);
-            yield return dependency;
-          }
-        }
-        if (!yieldedItems.Contains(plugin)) {
-          yieldedItems.Add(plugin);
-          yield return plugin;
-        }
-      }
-    }
-
-    private static byte[] CreateZipPackage(IPluginDescription plugin) {
-      using (MemoryStream stream = new MemoryStream()) {
-        ZipArchive zipFile = new ZipArchive(stream, ZipArchiveMode.Create);
-        foreach (var file in plugin.Files) {
-          zipFile.CreateEntry(file.Name);
-        }
-        stream.Seek(0, SeekOrigin.Begin);
-        return stream.GetBuffer();
-      }
-    }
-
-    private ListViewItem MakeListViewItem(IPluginDescription plugin) {
-      ListViewItem item;
-      if (localAndServerPlugins[plugin] != null) {
-        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), 
-          localAndServerPlugins[plugin].Version.ToString(), localAndServerPlugins[plugin].Description });
-        if (plugin.Version <= localAndServerPlugins[plugin].Version)
-          item.ForeColor = Color.Gray;
-      } else {
-        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), 
-          string.Empty, plugin.Description });
-      }
-      item.Tag = plugin;
-      item.ImageIndex = 0;
-      item.Checked = false;
-      return item;
-    }
-
-    private ListViewItem FindItemForPlugin(IPluginDescription dep) {
-      return (from i in listView.Items.Cast<ListViewItem>()
-              where i.Tag == dep
-              select i).Single();
-    }
-
-    private DeploymentService.PluginDescription MakePluginDescription(IPluginDescription plugin, Dictionary<IPluginDescription, DeploymentService.PluginDescription> cachedPluginDescriptions) {
-      if (!cachedPluginDescriptions.ContainsKey(plugin)) {
-        var dependencies = (from dep in plugin.Dependencies
-                            select MakePluginDescription(dep, cachedPluginDescriptions))
-                           .ToList();
-        cachedPluginDescriptions.Add(plugin,
-          new DeploymentService.PluginDescription(plugin.Name, plugin.Version, dependencies, plugin.ContactName, plugin.ContactEmail, plugin.LicenseText));
-      }
-      return cachedPluginDescriptions[plugin];
-    }
-    #endregion
-  }
-}
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/HeuristicLab.PluginInfrastructure-3.3.csproj
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/HeuristicLab.PluginInfrastructure-3.3.csproj	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/HeuristicLab.PluginInfrastructure-3.3.csproj	(revision 13333)
@@ -121,43 +121,15 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Advanced\AvailablePluginsView.cs">
+    <Compile Include="Advanced\InstallationManagerControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Advanced\AvailablePluginsView.Designer.cs">
-      <DependentUpon>AvailablePluginsView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\BasicUpdateView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Advanced\BasicUpdateView.Designer.cs">
-      <DependentUpon>BasicUpdateView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\ConfirmationDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Advanced\ConfirmationDialog.Designer.cs">
-      <DependentUpon>ConfirmationDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\ConnectionSetupView.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Advanced\ConnectionSetupView.Designer.cs">
-      <DependentUpon>ConnectionSetupView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\PluginUpdaterForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Advanced\PluginUpdaterForm.Designer.cs">
-      <DependentUpon>PluginUpdaterForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\DeploymentService\AdminServiceClientFactory.cs" />
-    <Compile Include="Advanced\DeploymentService\DeploymentServerCertificateValidator.cs" />
-    <Compile Include="Advanced\DeploymentService\ServiceClients.cs" />
-    <Compile Include="Advanced\DeploymentService\UpdateServiceClientFactory.cs" />
-    <Compile Include="Advanced\EditProductsView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Advanced\EditProductsView.Designer.cs">
-      <DependentUpon>EditProductsView.cs</DependentUpon>
+    <Compile Include="Advanced\InstallationManagerControl.Designer.cs">
+      <DependentUpon>InstallationManagerControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Advanced\InstallationManagerForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Advanced\InstallationManagerForm.Designer.cs">
+      <DependentUpon>InstallationManagerForm.cs</DependentUpon>
     </Compile>
     <Compile Include="Advanced\InstalledPluginsView.cs">
@@ -167,38 +139,7 @@
       <DependentUpon>InstalledPluginsView.cs</DependentUpon>
     </Compile>
-    <Compile Include="Advanced\LicenseConfirmationDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Advanced\LicenseConfirmationDialog.Designer.cs">
-      <DependentUpon>LicenseConfirmationDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\UploadPluginsView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Advanced\UploadPluginsView.Designer.cs">
-      <DependentUpon>UploadPluginsView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\Util.cs" />
-    <Compile Include="Advanced\InstallationManagerControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Advanced\InstallationManagerControl.Designer.cs">
-      <DependentUpon>InstallationManagerControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\InstallationManagerException.cs" />
-    <Compile Include="Advanced\InstallationManager.cs" />
-    <Compile Include="Advanced\InstallationManagerForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Advanced\InstallationManagerForm.Designer.cs">
-      <DependentUpon>InstallationManagerForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Advanced\DeploymentService\PluginDescription.cs">
+    <Compile Include="Advanced\IStatusDisplay.cs">
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="Advanced\DeploymentService\ProductDescription.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Advanced\IStatusDisplay.cs" />
     <Compile Include="Advanced\LicenseView.cs">
       <SubType>Form</SubType>
@@ -218,4 +159,7 @@
     <Compile Include="Advanced\PluginView.Designer.cs">
       <DependentUpon>PluginView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Advanced\Util.cs">
+      <SubType>Code</SubType>
     </Compile>
     <Compile Include="AssemblyHelpers.cs" />
@@ -257,5 +201,4 @@
     <Compile Include="Interfaces\IControlManager.cs" />
     <Compile Include="Interfaces\IPlugin.cs" />
-    <Compile Include="ControlManager.cs" />
     <Compile Include="Interfaces\IPluginDescription.cs" />
     <Compile Include="InvalidPluginException.cs" />
@@ -272,6 +215,8 @@
     <Compile Include="Main.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Sandboxing\SandboxManager.cs">
+      <SubType>Code</SubType>
+    </Compile>
     <Compile Include="TypeExtensions.cs" />
-    <None Include="Advanced\DeploymentService\GenerateServiceClients.cmd" />
     <None Include="app.config">
       <SubType>Designer</SubType>
@@ -293,5 +238,4 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
-    <Compile Include="Sandboxing\SandboxManager.cs" />
     <Compile Include="Starter\AboutDialog.cs">
       <SubType>Form</SubType>
@@ -314,5 +258,4 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="Advanced\DeploymentService\services.heuristiclab.com.cer" />
     <None Include="Resources\Error.ico" />
     <Content Include="Resources\HeuristicLab.ico" />
@@ -362,4 +305,7 @@
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Advanced\DeploymentService\" />
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 13333)
@@ -37,14 +37,13 @@
   public partial class StarterForm : Form {
     private const string pluginManagerItemName = "Plugin Manager";
-    private const string updatePluginsItemName = "Updates Available";
-    private const string optimizerItemName = "Optimizer";
+    // private const string updatePluginsItemName = "Updates Available";
+    private const string optimizerItemName = "Optimizer"; // TODO: encoding a specific name of an application here is problematic (applications are discovered dynamically)
 
     private readonly ICommandLineArgument[] arguments;
 
     private ListViewItem pluginManagerListViewItem;
-    private bool abortRequested;
+    private bool abortRequested; // TODO: necessary
     private PluginManager pluginManager;
     private SplashScreen splashScreen;
-    private bool updatesAvailable = false;
 
     /// <summary>
@@ -69,6 +68,4 @@
       pluginManager.DiscoverAndCheckPlugins();
       UpdateApplicationsList();
-
-      CheckUpdatesAvailableAsync();
     }
 
@@ -122,23 +119,4 @@
             }
           }
-        } else if (selected.Text == updatePluginsItemName) {
-          if (pluginManager.Plugins.Any(x => x.PluginState == PluginState.Loaded)) {
-            MessageBox.Show("Updating is not possible while another HeuristicLab application is active." + Environment.NewLine +
-              "Please stop all active HeuristicLab applications and try again.", "Update plugins",
-              MessageBoxButtons.OK, MessageBoxIcon.Information);
-          } else {
-            try {
-              Cursor = Cursors.AppStarting;
-              using (PluginUpdaterForm form = new PluginUpdaterForm(pluginManager)) {
-                form.ShowDialog(this);
-              }
-              updatesAvailable = false;
-              CheckUpdatesAvailableAsync();
-              UpdateApplicationsList();
-            }
-            finally {
-              Cursor = Cursors.Arrow;
-            }
-          }
         } else {
           ApplicationDescription app = (ApplicationDescription)applicationsListView.SelectedItems[0].Tag;
@@ -182,5 +160,4 @@
         applicationsListView.Items.Clear();
         AddPluginManagerItem();
-        AddUpdatePluginsItem();
 
         foreach (ApplicationDescription info in pluginManager.Applications) {
@@ -209,53 +186,4 @@
 
       applicationsListView.Items.Add(pluginManagerListViewItem);
-    }
-
-    private void AddUpdatePluginsItem() {
-      if (updatesAvailable) {
-        var updateListViewItem = new ListViewItem(updatePluginsItemName, 1);
-        updateListViewItem.Group = applicationsListView.Groups["Plugin Management"];
-        updateListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(updateListViewItem, ""));
-        updateListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(updateListViewItem, "Download and install updates"));
-        updateListViewItem.ToolTipText = "Download and install updates";
-
-        applicationsListView.Items.Add(updateListViewItem);
-      }
-    }
-
-    private void CheckUpdatesAvailableAsync() {
-      string pluginPath = Path.GetFullPath(Application.StartupPath);
-      var task = Task.Factory.StartNew<bool>(() => {
-        var installationManager = new InstallationManager(pluginPath);
-        IEnumerable<IPluginDescription> installedPlugins = pluginManager.Plugins.OfType<IPluginDescription>();
-        var remotePlugins = installationManager.GetRemotePluginList();
-        // if there is a local plugin with same name and same major and minor version then it's an update
-        var pluginsToUpdate = from remotePlugin in remotePlugins
-                              let matchingLocalPlugins = from installedPlugin in installedPlugins
-                                                         where installedPlugin.Name == remotePlugin.Name
-                                                         where installedPlugin.Version.Major == remotePlugin.Version.Major
-                                                         where installedPlugin.Version.Minor == remotePlugin.Version.Minor
-                                                         where Util.IsNewerThan(remotePlugin, installedPlugin)
-                                                         select installedPlugin
-                              where matchingLocalPlugins.Count() > 0
-                              select remotePlugin;
-        return pluginsToUpdate.Count() > 0;
-      });
-      task.ContinueWith(t => {
-        try {
-          t.Wait();
-          updatesAvailable = t.Result;
-          UpdateApplicationsList();
-        }
-        catch (AggregateException ae) {
-          ae.Handle(ex => {
-            if (ex is InstallationManagerException) {
-              // this is expected when no internet connection is available => do nothing 
-              return true;
-            } else {
-              return false;
-            }
-          });
-        }
-      });
     }
 
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/app.config
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/app.config	(revision 13332)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/app.config	(revision 13333)
@@ -7,59 +7,3 @@
   </configSections>
 
-  <userSettings>
-    <HeuristicLab.PluginInfrastructure.Properties.Settings>
-      <setting name="UpdateLocationUserName" serializeAs="String">
-        <value>anonymous</value>
-      </setting>
-      <setting name="UpdateLocationPassword" serializeAs="String">
-        <value>GetTheLab!</value>
-      </setting>
-      <setting name="ShowPluginUploadControls" serializeAs="String">
-        <value>False</value>
-      </setting>
-      <setting name="UpdateLocation" serializeAs="String">
-        <value>http://services.heuristiclab.com/Deployment-3.3/UpdateService.svc</value>
-      </setting>
-      <setting name="UpdateLocationAdministrationAddress" serializeAs="String">
-        <value>http://services.heuristiclab.com/Deployment-3.3/AdminService.svc</value>
-      </setting>
-    </HeuristicLab.PluginInfrastructure.Properties.Settings>
-  </userSettings>
-
-  <system.serviceModel>
-    <bindings>
-      <wsHttpBinding>
-        <binding name="WSHttpBinding_IUpdateService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="200000000" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
-          <readerQuotas maxDepth="32" maxStringContentLength="200000000" maxArrayLength="200000000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
-          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
-          <security mode="Message">
-            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
-            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
-          </security>
-        </binding>
-
-        <binding name="WSHttpBinding_IAdminService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="200000000" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
-          <readerQuotas maxDepth="32" maxStringContentLength="200000000" maxArrayLength="200000000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
-          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
-          <security mode="Message">
-            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
-            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
-          </security>
-        </binding>
-      </wsHttpBinding>
-    </bindings>
-
-    <client>
-      <endpoint address="http://services.heuristiclab.com/Deployment-3.3/UpdateService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUpdateService" contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IUpdateService" name="WSHttpBinding_IUpdateService">
-        <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
-        </identity>
-      </endpoint>
-      <endpoint address="http://services.heuristiclab.com/Deployment-3.3/AdminService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAdminService" contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IAdminService" name="WSHttpBinding_IAdminService">
-        <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
-        </identity>
-      </endpoint>
-    </client>
-  </system.serviceModel>
 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
