Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/22/10 16:53:27 (14 years ago)
Author:
gkronber
Message:

Improved controls for deployment service interaction.
Increased max values for message sizes and related limits in the deployment service configuration.
Recreated proxy classes for the deployment service.

#891 (Refactor GUI for plugin management)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.PluginAdministrator/3.3/PluginListView.cs

    r3081 r3179  
    4747    }
    4848
    49     private List<IPluginDescription> checkedPlugins = new List<IPluginDescription>();
     49    private Dictionary<IPluginDescription, bool> checkedPlugins = new Dictionary<IPluginDescription, bool>();
    5050    public IEnumerable<IPluginDescription> CheckedPlugins {
    5151      get {
    52         return checkedPlugins;
     52        return from pair in checkedPlugins
     53               where pair.Value
     54               select pair.Key;
    5355      }
    5456    }
     
    7779    private ListViewItem CreateListViewItem(IPluginDescription plugin) {
    7880      var item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString() });
    79       item.Checked = (from p in checkedPlugins where p.Name == plugin.Name where p.Version == plugin.Version select p).Any();
     81      item.Checked = checkedPlugins.ContainsKey(plugin) ? checkedPlugins[plugin] : false;
    8082      item.Tag = plugin;
    8183      return item;
     
    8991          // also check all dependencies
    9092          MarkPluginChecked(plugin);
    91           modifiedPlugins.Add(plugin);
     93          if (!modifiedPlugins.Contains(plugin))
     94            modifiedPlugins.Add(plugin);
    9295          foreach (var dep in GetAllDependencies(plugin)) {
    9396            MarkPluginChecked(dep);
    94             modifiedPlugins.Add(dep);
     97            if (!modifiedPlugins.Contains(dep))
     98              modifiedPlugins.Add(dep);
    9599          }
    96100        }
     
    102106          // also uncheck all dependent plugins
    103107          MarkPluginUnchecked(plugin);
    104           modifiedPlugins.Add(plugin);
     108          if (!modifiedPlugins.Contains(plugin))
     109            modifiedPlugins.Add(plugin);
    105110          foreach (var dep in GetAllDependents(plugin)) {
    106111            MarkPluginUnchecked(dep);
    107             modifiedPlugins.Add(dep);
     112            if (!modifiedPlugins.Contains(dep))
     113              modifiedPlugins.Add(dep);
    108114          }
    109115
     
    115121
    116122    private void MarkPluginChecked(IPluginDescription plugin) {
    117       var matching = from p in checkedPlugins
    118                      where p.Name == plugin.Name
    119                      where p.Version == plugin.Version
    120                      select p;
    121       if (!matching.Any()) checkedPlugins.Add(plugin);
     123      checkedPlugins[plugin] = true;
    122124    }
    123125
    124126    private void MarkPluginUnchecked(IPluginDescription plugin) {
    125       checkedPlugins = (from p in checkedPlugins
    126                         where p.Name != plugin.Name ||
    127                               p.Version != plugin.Version
    128                         select p).ToList();
     127      checkedPlugins[plugin] = false;
    129128    }
    130129
     
    148147
    149148    private IEnumerable<IPluginDescription> GetAllDependencies(IPluginDescription plugin) {
     149      HashSet<IPluginDescription> yieldedPlugins = new HashSet<IPluginDescription>();
    150150      foreach (var dep in plugin.Dependencies) {
    151151        foreach (var recDep in GetAllDependencies(dep)) {
    152           yield return recDep;
     152          if (!yieldedPlugins.Contains(recDep)) {
     153            yieldedPlugins.Add(recDep);
     154            yield return recDep;
     155          }
    153156        }
    154         yield return dep;
     157        if (!yieldedPlugins.Contains(dep)) {
     158          yieldedPlugins.Add(dep);
     159          yield return dep;
     160        }
    155161      }
    156162    }
Note: See TracChangeset for help on using the changeset viewer.