Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/10 17:14:35 (15 years ago)
Author:
gkronber
Message:

Worked on multi-select behavior of list views in deployment server interfaces. #891 (Refactor GUI for plugin management)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/LocalPluginManager.cs

    r3006 r3068  
    5252    private void UpdateControl() {
    5353      ClearPluginList();
     54      localPluginsListView.SuppressItemCheckedEvents = true;
    5455      foreach (var plugin in plugins) {
    5556        var item = CreateListViewItem(plugin);
     
    6162        localPluginsListView.Items.Add(item);
    6263      }
     64      localPluginsListView.SuppressItemCheckedEvents = false;
    6365    }
    6466
     
    7880      // checked items are marked for removal
    7981      if (e.Item.Checked) {
    80         var plugin = (IPluginDescription)e.Item.Tag;
    81         foreach (ListViewItem item in localPluginsListView.Items) {
    82           var dep = (IPluginDescription)item.Tag;
    83           if (!item.Checked && dep.Dependencies.Contains(plugin)) {
    84             item.Checked = true;
     82        List<ListViewItem> modifiedItems = new List<ListViewItem>();
     83        foreach (ListViewItem item in localPluginsListView.SelectedItems) {
     84          var plugin = (IPluginDescription)item.Tag;
     85          modifiedItems.Add(item);
     86          // also uncheck all dependent plugins
     87          foreach (ListViewItem dependentItem in localPluginsListView.Items) {
     88            var dependent = (IPluginDescription)dependentItem.Tag;
     89            if (!dependentItem.Checked && (from dep in dependent.Dependencies
     90                                           where dep.Name == plugin.Name
     91                                           where dep.Version == plugin.Version
     92                                           select dep).Any()) {
     93              modifiedItems.Add(dependentItem);
     94            }
    8595          }
    8696        }
     97        localPluginsListView.CheckItems(modifiedItems);
     98      } else {
     99        List<ListViewItem> modifiedItems = new List<ListViewItem>();
     100        foreach (ListViewItem item in localPluginsListView.SelectedItems) {
     101          var plugin = (IPluginDescription)item.Tag;
     102          modifiedItems.Add(item);
     103        }
     104        localPluginsListView.UncheckItems(modifiedItems);
    87105      }
    88106      OnItemChecked(e);
Note: See TracChangeset for help on using the changeset viewer.