- Timestamp:
- 04/27/10 21:30:24 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/LocalPluginManager.cs
r3474 r3547 34 34 public event ItemCheckedEventHandler ItemChecked; 35 35 36 private BackgroundWorker refreshPluginListBackgroundWorker = new BackgroundWorker();37 38 private ListViewGroup enabledPluginsGroup;39 private ListViewGroup disabledPluginsGroup;40 36 41 37 public LocalPluginManagerView() { 42 38 InitializeComponent(); 43 39 44 enabledPluginsGroup = localPluginsListView.Groups["activePluginsGroup"]; 45 disabledPluginsGroup = localPluginsListView.Groups["disabledPluginsGroup"]; 40 46 41 } 47 48 private IEnumerable<PluginDescription> plugins; 49 public IEnumerable<PluginDescription> Plugins { 50 get { return plugins; } 51 set { 52 if (value != plugins) { 53 this.plugins = value; 54 UpdateControl(); 55 } 56 } 57 } 58 59 public IEnumerable<IPluginDescription> CheckedPlugins { 60 get { 61 return (from item in localPluginsListView.Items.OfType<ListViewItem>() 62 where item.Checked 63 let plugin = item.Tag as IPluginDescription 64 where plugin != null 65 select plugin).ToList(); 66 } 67 } 68 69 private void UpdateControl() { 70 ClearPluginList(); 71 localPluginsListView.SuppressItemCheckedEvents = true; 72 foreach (var plugin in plugins) { 73 var item = CreateListViewItem(plugin); 74 if (plugin.PluginState == PluginState.Enabled) { 75 item.Group = enabledPluginsGroup; 76 } else if (plugin.PluginState == PluginState.Disabled) { 77 item.Group = disabledPluginsGroup; 78 } 79 localPluginsListView.Items.Add(item); 80 } 81 localPluginsListView.SuppressItemCheckedEvents = false; 82 } 83 84 private void ClearPluginList() { 85 List<ListViewItem> itemsToRemove = new List<ListViewItem>(from item in localPluginsListView.Items.OfType<ListViewItem>() 86 select item); 87 itemsToRemove.ForEach(item => localPluginsListView.Items.Remove(item)); 88 } 89 90 private ListViewItem CreateListViewItem(PluginDescription plugin) { 91 ListViewItem item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), plugin.Description }); 92 item.Tag = plugin; 93 return item; 94 } 95 96 private void pluginsListView_ItemChecked(object sender, ItemCheckedEventArgs e) { 97 // checked items are marked for removal 98 if (e.Item.Checked) { 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 // also uncheck all dependent plugins 104 foreach (ListViewItem dependentItem in localPluginsListView.Items) { 105 var dependent = (IPluginDescription)dependentItem.Tag; 106 if (!dependentItem.Checked && (from dep in dependent.Dependencies 107 where dep.Name == plugin.Name 108 where dep.Version == plugin.Version 109 select dep).Any()) { 110 modifiedItems.Add(dependentItem); 111 } 112 } 113 } 114 localPluginsListView.CheckItems(modifiedItems); 115 } else { 116 List<ListViewItem> modifiedItems = new List<ListViewItem>(); 117 foreach (ListViewItem item in localPluginsListView.SelectedItems) { 118 var plugin = (IPluginDescription)item.Tag; 119 modifiedItems.Add(item); 120 } 121 localPluginsListView.UncheckItems(modifiedItems); 122 } 123 OnItemChecked(e); 124 } 125 126 private void OnItemChecked(ItemCheckedEventArgs e) { 127 if (ItemChecked != null) ItemChecked(this, e); 128 } 129 130 private void localPluginsListView_ItemActivate(object sender, EventArgs e) { 131 if (localPluginsListView.SelectedItems.Count > 0) { 132 var plugin = (PluginDescription)localPluginsListView.SelectedItems[0].Tag; 133 PluginView pluginView = new PluginView(plugin); 134 pluginView.Show(); 135 } 136 } 42 137 43 } 138 44 }
Note: See TracChangeset
for help on using the changeset viewer.