Changeset 6006 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/ItemTreeView.cs
- Timestamp:
- 04/12/11 13:43:05 (13 years ago)
- Location:
- branches/HeuristicLab.Hive-3.4/sources
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources
- Property svn:ignore
-
old new 4 4 PrecompiledWeb 5 5 CreateEventLogSources 6 WindowsFormsTestProject
-
- Property svn:ignore
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/ItemTreeView.cs
r5797 r6006 24 24 using HeuristicLab.Collections; 25 25 using HeuristicLab.Common; 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Core.Views; 27 28 using HeuristicLab.MainForm; … … 30 31 namespace HeuristicLab.Clients.Hive.Views { 31 32 [View("ItemTree View")] 32 [Content(typeof(IItemTree), IsDefaultView = false)] 33 public sealed partial class ItemTreeView : ItemView { 34 public new IItemTree Content { 35 get { return (IItemTree)base.Content; } 33 [Content(typeof(ItemCollection<>), IsDefaultView = false)] 34 [Content(typeof(ItemCollection<IItemTree>), IsDefaultView = true)] 35 public sealed partial class ItemTreeView<T> : ItemView where T : class, IItemTree { 36 public new ItemCollection<T> Content { 37 get { return (ItemCollection<T>)base.Content; } 36 38 set { base.Content = value; } 39 } 40 41 public T SelectedItem { 42 get { 43 if (treeView.SelectedNode != null) 44 return (T)treeView.SelectedNode.Tag; 45 return null; 46 } 37 47 } 38 48 … … 42 52 43 53 protected override void DeregisterContentEvents() { 54 Content.ItemsAdded -= new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded); 55 Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved); 56 Content.CollectionReset -= new CollectionItemsChangedEventHandler<T>(Content_CollectionReset); 44 57 foreach (TreeNode node in treeView.Nodes) { 45 DeregisterContentEvents(( IItemTree)node.Tag, node);58 DeregisterContentEvents((T)node.Tag, node); 46 59 } 47 60 base.DeregisterContentEvents(); 48 61 } 49 62 50 private void DeregisterContentEvents( IItemTreeitem, TreeNode node) {63 private void DeregisterContentEvents(T item, TreeNode node) { 51 64 item.ItemsAdded -= new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded); 52 65 item.ItemsRemoved -= new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved); … … 55 68 item.ItemImageChanged -= new EventHandler(item_ItemImageChanged); 56 69 foreach (TreeNode childNode in node.Nodes) { 57 DeregisterContentEvents(( IItemTree)childNode.Tag, childNode);70 DeregisterContentEvents((T)childNode.Tag, childNode); 58 71 } 59 72 } … … 61 74 protected override void RegisterContentEvents() { 62 75 base.RegisterContentEvents(); 76 Content.ItemsAdded += new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded); 77 Content.ItemsRemoved += new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved); 78 Content.CollectionReset += new CollectionItemsChangedEventHandler<T>(Content_CollectionReset); 63 79 foreach (TreeNode node in treeView.Nodes) { 64 RegisterContentEvents(( IItemTree)node.Tag, node);65 } 66 } 67 68 private void RegisterContentEvents( IItemTreeitem, TreeNode node) {80 RegisterContentEvents((T)node.Tag, node); 81 } 82 } 83 84 private void RegisterContentEvents(T item, TreeNode node) { 69 85 item.ItemsAdded += new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded); 70 86 item.ItemsRemoved += new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved); … … 73 89 item.ItemImageChanged += new EventHandler(item_ItemImageChanged); 74 90 foreach (TreeNode childNode in node.Nodes) { 75 RegisterContentEvents(( IItemTree)childNode.Tag, childNode);91 RegisterContentEvents((T)childNode.Tag, childNode); 76 92 } 77 93 } 78 94 79 95 #region Event Handlers (Content) 96 private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<T> e) { 97 if (InvokeRequired) { 98 Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded), sender, e); 99 } else { 100 foreach (T item in e.Items) { 101 var node = AddChildNodes(item, treeView.Nodes, true); 102 UpdateNodeItemImage(node); 103 } 104 } 105 } 106 private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<T> e) { 107 if (InvokeRequired) { 108 Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved), sender, e); 109 } else { 110 foreach (T item in e.Items) { 111 RemoveChildNodes(item, treeView.Nodes); 112 } 113 RebuildImageList(); 114 } 115 } 116 private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<T> e) { 117 if (InvokeRequired) { 118 Invoke(new CollectionItemsChangedEventHandler<T>(Content_CollectionReset), sender, e); 119 } else { 120 foreach (T item in e.OldItems) { 121 RemoveChildNodes(item, treeView.Nodes); 122 } 123 RebuildImageList(); 124 foreach (T item in e.Items) { 125 AddChildNodes(item, treeView.Nodes, true); 126 } 127 } 128 } 129 80 130 private void item_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IItemTree> e) { 81 131 if (InvokeRequired) { 82 132 Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded), sender, e); 83 133 } else { 84 TreeNode node = GetNodeByItem(sender as IItemTree);134 TreeNode node = GetNodeByItem(sender as T); 85 135 if (node != null) { 86 foreach ( IItemTreeitem in e.Items) {136 foreach (T item in e.Items) { 87 137 AddChildNodes(item, node.Nodes, true); 88 138 node.ExpandAll(); … … 97 147 Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved), sender, e); 98 148 } else { 99 TreeNode node = GetNodeByItem(sender as IItemTree);149 TreeNode node = GetNodeByItem(sender as T); 100 150 if (node != null) { 101 foreach ( IItemTreeitem in e.Items) {151 foreach (T item in e.Items) { 102 152 RemoveChildNodes(item, node.Nodes); 103 153 } … … 111 161 Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_CollectionReset), sender, e); 112 162 } else { 113 TreeNode node = GetNodeByItem(sender as IItemTree);163 TreeNode node = GetNodeByItem(sender as T); 114 164 if (node != null) { 115 foreach ( IItemTreeitem in e.OldItems) {165 foreach (T item in e.OldItems) { 116 166 RemoveChildNodes(item, node.Nodes); 117 167 } 118 168 RebuildImageList(); 119 foreach ( IItemTreeitem in e.Items) {169 foreach (T item in e.Items) { 120 170 AddChildNodes(item, node.Nodes, true); 121 171 } … … 128 178 Invoke(new EventHandler(item_ToStringChanged), sender, e); 129 179 } else { 130 var item = sender as IItemTree;180 var item = sender as T; 131 181 TreeNode node = GetNodeByItem(item); 132 182 if(node != null) … … 139 189 Invoke(new EventHandler(item_ItemImageChanged), sender, e); 140 190 } else { 141 var item = sender as IItemTree;191 var item = sender as T; 142 192 TreeNode node = GetNodeByItem(item); 143 193 if(node != null) … … 151 201 } else { 152 202 if (treeView.SelectedNode != null) { 153 var item = treeView.SelectedNode.Tag as IItemTree;203 var item = treeView.SelectedNode.Tag as T; 154 204 if (item != null) { 155 205 IContentView view = MainFormManager.MainForm.ShowContent(item); … … 167 217 base.OnContentChanged(); 168 218 if (Content == null) { 169 // Add code when content has been changed and is null170 219 ClearNodes(); 171 220 detailsViewHost.Content = null; 172 221 } else { 173 // Add code when content has been changed and is not null174 222 ClearNodes(); 175 AddChildNodes(Content, treeView.Nodes, false); 223 foreach (T itemTree in Content) { 224 AddChildNodes(itemTree, treeView.Nodes, false); 225 } 176 226 foreach (TreeNode node in treeView.Nodes) { 177 227 UpdateNodeItemImage(node); 178 228 } 229 detailsViewHost.Content = null; 179 230 } 180 231 } … … 184 235 } 185 236 186 private void AddChildNodes(IItemTreeitem, TreeNodeCollection nodes, bool registerEvents) {237 private TreeNode AddChildNodes(T item, TreeNodeCollection nodes, bool registerEvents) { 187 238 TreeNode node = CreateTreeViewNode(item); 188 239 nodes.Add(node); … … 190 241 RegisterContentEvents(item, node); 191 242 var childItems = item.GetChildItems(); 192 foreach ( varchildItem in childItems) {243 foreach (T childItem in childItems) { 193 244 AddChildNodes(childItem, node.Nodes, registerEvents); 194 245 } 195 246 node.ExpandAll(); 196 } 197 198 private void RemoveChildNodes(IItemTree item, TreeNodeCollection treeNodeCollection) { 247 return node; 248 } 249 250 private void RemoveChildNodes(T item, TreeNodeCollection treeNodeCollection) { 199 251 int idx = -1; 200 252 for (int i = 0; i < treeNodeCollection.Count; i++) { … … 207 259 } 208 260 209 private TreeNode GetNodeByItem( IItemTreeitem) {261 private TreeNode GetNodeByItem(T item) { 210 262 TreeNode found = null; 211 263 foreach (TreeNode node in treeView.Nodes) { … … 217 269 } 218 270 219 private TreeNode GetNodeByItem(TreeNode node, IItemTreeitem) {271 private TreeNode GetNodeByItem(TreeNode node, T item) { 220 272 if (node.Tag == item) 221 273 return node; … … 229 281 } 230 282 231 private TreeNode CreateTreeViewNode( IItemTreeitem) {283 private TreeNode CreateTreeViewNode(T item) { 232 284 var node = new TreeNode(item.ToString()); 233 285 node.Tag = item; … … 237 289 private void UpdateNodeItemImage(TreeNode node) { 238 290 if (node == null) throw new ArgumentNullException(); 239 var item = node.Tag as IItemTree;291 var item = node.Tag as T; 240 292 int i = node.ImageIndex; 241 293 this.imageList.Images[i] = item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage; … … 268 320 269 321 private void RebuildImageList(TreeNode node) { 270 var item = node.Tag as IItemTree;322 var item = node.Tag as T; 271 323 treeView.ImageList.Images.Add(item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage); 272 324 node.ImageIndex = treeView.ImageList.Images.Count - 1;
Note: See TracChangeset
for help on using the changeset viewer.