Changeset 3595
- Timestamp:
- 05/03/10 17:38:05 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Core.Views/3.3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.Designer.cs
r3558 r3595 1 #region License Information1 #region License Information 2 2 /* HeuristicLab 3 3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) … … 20 20 #endregion 21 21 22 using System;23 using System.Windows.Forms;24 using System.ComponentModel;25 26 22 namespace HeuristicLab.Core.Views { 27 23 partial class CheckedItemCollectionView<T> { 28 /// <summary> 24 /// <summary> 29 25 /// Required designer variable. 30 26 /// </summary> 31 27 private System.ComponentModel.IContainer components = null; 32 28 33 /// <summary> 29 /// <summary> 34 30 /// Clean up any resources being used. 35 31 /// </summary> 36 32 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 37 33 protected override void Dispose(bool disposing) { 38 if (disposing) { 39 if (typeSelectorDialog != null) typeSelectorDialog.Dispose(); 40 foreach (ListViewItem item in itemsListView.Items) { 41 ((T)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged); 42 ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged); 43 } 44 if (components != null) components.Dispose(); 34 if (disposing && (components != null)) { 35 components.Dispose(); 45 36 } 46 37 base.Dispose(disposing); 47 38 } 48 39 49 #region Windows FormDesigner generated code40 #region Component Designer generated code 50 41 51 /// <summary> 52 /// Required method for Designer support - do not modify 42 /// <summary> 43 /// Required method for Designer support - do not modify 53 44 /// the contents of this method with the code editor. 54 45 /// </summary> 55 46 private void InitializeComponent() { 56 this.components = new System.ComponentModel.Container(); 57 this.splitContainer = new System.Windows.Forms.SplitContainer(); 58 this.itemsListView = new System.Windows.Forms.ListView(); 59 this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); 60 this.imageList = new System.Windows.Forms.ImageList(this.components); 61 this.sortDescendingButton = new System.Windows.Forms.Button(); 62 this.sortAscendingButton = new System.Windows.Forms.Button(); 63 this.removeButton = new System.Windows.Forms.Button(); 64 this.addButton = new System.Windows.Forms.Button(); 65 this.detailsGroupBox = new System.Windows.Forms.GroupBox(); 66 this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost(); 67 this.itemsGroupBox = new System.Windows.Forms.GroupBox(); 68 this.toolTip = new System.Windows.Forms.ToolTip(this.components); 69 this.splitContainer.Panel1.SuspendLayout(); 70 this.splitContainer.Panel2.SuspendLayout(); 71 this.splitContainer.SuspendLayout(); 72 this.detailsGroupBox.SuspendLayout(); 73 this.itemsGroupBox.SuspendLayout(); 74 this.SuspendLayout(); 75 // 76 // splitContainer 77 // 78 this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; 79 this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 80 this.splitContainer.Location = new System.Drawing.Point(3, 16); 81 this.splitContainer.Name = "splitContainer"; 82 // 83 // splitContainer.Panel1 84 // 85 this.splitContainer.Panel1.Controls.Add(this.itemsListView); 86 this.splitContainer.Panel1.Controls.Add(this.sortDescendingButton); 87 this.splitContainer.Panel1.Controls.Add(this.sortAscendingButton); 88 this.splitContainer.Panel1.Controls.Add(this.removeButton); 89 this.splitContainer.Panel1.Controls.Add(this.addButton); 90 this.splitContainer.Panel1MinSize = 100; 91 // 92 // splitContainer.Panel2 93 // 94 this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox); 95 this.splitContainer.Size = new System.Drawing.Size(526, 364); 96 this.splitContainer.SplitterDistance = 250; 97 this.splitContainer.TabIndex = 0; 98 // 99 // itemsListView 100 // 101 this.itemsListView.AllowDrop = true; 102 this.itemsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 103 | System.Windows.Forms.AnchorStyles.Left) 104 | System.Windows.Forms.AnchorStyles.Right))); 105 this.itemsListView.CheckBoxes = true; 106 this.itemsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 107 this.columnHeader1}); 108 this.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; 109 this.itemsListView.HideSelection = false; 110 this.itemsListView.Location = new System.Drawing.Point(3, 33); 111 this.itemsListView.Name = "itemsListView"; 112 this.itemsListView.ShowItemToolTips = true; 113 this.itemsListView.Size = new System.Drawing.Size(244, 327); 114 this.itemsListView.SmallImageList = this.imageList; 115 this.itemsListView.TabIndex = 4; 116 this.itemsListView.UseCompatibleStateImageBehavior = false; 117 this.itemsListView.View = System.Windows.Forms.View.Details; 118 this.itemsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.itemsListView_ItemChecked); 119 this.itemsListView.SelectedIndexChanged += new System.EventHandler(this.itemsListView_SelectedIndexChanged); 120 this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick); 121 this.itemsListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragDrop); 122 this.itemsListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); 123 this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown); 124 this.itemsListView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.itemsListView_ItemDrag); 125 this.itemsListView.DragOver += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); 126 // 127 // imageList 128 // 129 this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; 130 this.imageList.ImageSize = new System.Drawing.Size(16, 16); 131 this.imageList.TransparentColor = System.Drawing.Color.Transparent; 132 // 133 // sortDescendingButton 134 // 135 this.sortDescendingButton.Enabled = false; 136 this.sortDescendingButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.SortUp; 137 this.sortDescendingButton.Location = new System.Drawing.Point(33, 3); 138 this.sortDescendingButton.Name = "sortDescendingButton"; 139 this.sortDescendingButton.Size = new System.Drawing.Size(24, 24); 140 this.sortDescendingButton.TabIndex = 1; 141 this.toolTip.SetToolTip(this.sortDescendingButton, "Sort Descending"); 142 this.sortDescendingButton.UseVisualStyleBackColor = true; 143 this.sortDescendingButton.Click += new System.EventHandler(this.sortDescendingButton_Click); 144 // 145 // sortAscendingButton 146 // 147 this.sortAscendingButton.Enabled = false; 148 this.sortAscendingButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Sort; 149 this.sortAscendingButton.Location = new System.Drawing.Point(63, 3); 150 this.sortAscendingButton.Name = "sortAscendingButton"; 151 this.sortAscendingButton.Size = new System.Drawing.Size(24, 24); 152 this.sortAscendingButton.TabIndex = 2; 153 this.toolTip.SetToolTip(this.sortAscendingButton, "Sort Ascending"); 154 this.sortAscendingButton.UseVisualStyleBackColor = true; 155 this.sortAscendingButton.Click += new System.EventHandler(this.sortAscendingButton_Click); 156 // 157 // removeButton 158 // 159 this.removeButton.Enabled = false; 160 this.removeButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove; 161 this.removeButton.Location = new System.Drawing.Point(93, 3); 162 this.removeButton.Name = "removeButton"; 163 this.removeButton.Size = new System.Drawing.Size(24, 24); 164 this.removeButton.TabIndex = 3; 165 this.toolTip.SetToolTip(this.removeButton, "Remove"); 166 this.removeButton.UseVisualStyleBackColor = true; 167 this.removeButton.Click += new System.EventHandler(this.removeButton_Click); 168 // 169 // addButton 170 // 171 this.addButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add; 172 this.addButton.Location = new System.Drawing.Point(3, 3); 173 this.addButton.Name = "addButton"; 174 this.addButton.Size = new System.Drawing.Size(24, 24); 175 this.addButton.TabIndex = 0; 176 this.toolTip.SetToolTip(this.addButton, "Add"); 177 this.addButton.UseVisualStyleBackColor = true; 178 this.addButton.Click += new System.EventHandler(this.addButton_Click); 179 // 180 // detailsGroupBox 181 // 182 this.detailsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 183 | System.Windows.Forms.AnchorStyles.Left) 184 | System.Windows.Forms.AnchorStyles.Right))); 185 this.detailsGroupBox.Controls.Add(this.viewHost); 186 this.detailsGroupBox.Location = new System.Drawing.Point(3, 27); 187 this.detailsGroupBox.Name = "detailsGroupBox"; 188 this.detailsGroupBox.Size = new System.Drawing.Size(266, 335); 189 this.detailsGroupBox.TabIndex = 0; 190 this.detailsGroupBox.TabStop = false; 191 this.detailsGroupBox.Text = "Details"; 192 // 193 // viewHost 194 // 195 this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 196 | System.Windows.Forms.AnchorStyles.Left) 197 | System.Windows.Forms.AnchorStyles.Right))); 198 this.viewHost.Caption = null; 199 this.viewHost.Content = null; 200 this.viewHost.Location = new System.Drawing.Point(6, 19); 201 this.viewHost.Name = "viewHost"; 202 this.viewHost.ReadOnly = false; 203 this.viewHost.Size = new System.Drawing.Size(254, 310); 204 this.viewHost.TabIndex = 0; 205 this.viewHost.ViewType = null; 206 // 207 // itemsGroupBox 208 // 209 this.itemsGroupBox.Controls.Add(this.splitContainer); 210 this.itemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; 211 this.itemsGroupBox.Location = new System.Drawing.Point(0, 0); 212 this.itemsGroupBox.Name = "itemsGroupBox"; 213 this.itemsGroupBox.Size = new System.Drawing.Size(532, 383); 214 this.itemsGroupBox.TabIndex = 0; 215 this.itemsGroupBox.TabStop = false; 216 this.itemsGroupBox.Text = "Items"; 217 // 218 // CheckedItemCollectionView 219 // 220 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 221 this.Controls.Add(this.itemsGroupBox); 222 this.Name = "CheckedItemCollectionView"; 223 this.Size = new System.Drawing.Size(532, 383); 224 this.splitContainer.Panel1.ResumeLayout(false); 225 this.splitContainer.Panel2.ResumeLayout(false); 226 this.splitContainer.ResumeLayout(false); 227 this.detailsGroupBox.ResumeLayout(false); 228 this.itemsGroupBox.ResumeLayout(false); 229 this.ResumeLayout(false); 230 47 components = new System.ComponentModel.Container(); 48 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 49 base.itemsListView.CheckBoxes = true; 50 base.itemsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(itemsListView_ItemChecked); 231 51 } 232 52 233 53 #endregion 234 235 protected System.Windows.Forms.SplitContainer splitContainer;236 protected System.Windows.Forms.ColumnHeader columnHeader1;237 protected GroupBox itemsGroupBox;238 protected ListView itemsListView;239 protected GroupBox detailsGroupBox;240 protected Button addButton;241 protected Button removeButton;242 protected ToolTip toolTip;243 protected ImageList imageList;244 protected HeuristicLab.MainForm.WindowsForms.ViewHost viewHost;245 protected Button sortAscendingButton;246 protected Button sortDescendingButton;247 54 } 248 55 } -
trunk/sources/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs
r3588 r3595 1 #region License Information1 #region License Information 2 2 /* HeuristicLab 3 3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) … … 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.ComponentModel; 25 using System.Drawing; 26 using System.Data; 24 27 using System.Linq; 28 using System.Text; 25 29 using System.Windows.Forms; 26 30 using HeuristicLab.Collections; 27 31 using HeuristicLab.MainForm; 28 using HeuristicLab.MainForm.WindowsForms;29 32 30 33 namespace HeuristicLab.Core.Views { … … 32 35 [Content(typeof(ICheckedItemCollection<>), false)] 33 36 [Content(typeof(CheckedItemCollection<>), true)] 34 public partial class CheckedItemCollectionView<T> : ItemView where T : class, IItem { 35 protected TypeSelectorDialog typeSelectorDialog; 36 37 public partial class CheckedItemCollectionView<T> : ItemCollectionView<T> where T : class, IItem { 37 38 public new ICheckedItemCollection<T> Content { 38 39 get { return (ICheckedItemCollection<T>)base.Content; } 39 40 set { base.Content = value; } 40 41 } 41 42 public ListView ItemsListView { 43 get { return itemsListView; } 42 43 public CheckedItemCollectionView() 44 : base() { 45 InitializeComponent(); 44 46 } 45 47 46 p ublic CheckedItemCollectionView() {47 InitializeComponent();48 Caption = "Checked Item Collection";48 protected override void RegisterContentEvents() { 49 Content.CheckedItemsChanged += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged); 50 base.RegisterContentEvents(); 49 51 } 50 52 51 53 protected override void DeregisterContentEvents() { 52 Content.ItemsAdded -= new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded); 53 Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved); 54 Content.CollectionReset -= new CollectionItemsChangedEventHandler<T>(Content_CollectionReset); 55 Content.CheckedItemsChanged -= new CollectionItemsChangedEventHandler<T>(Content_ItemsChecked); 54 Content.CheckedItemsChanged -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged); 56 55 base.DeregisterContentEvents(); 57 }58 protected override void RegisterContentEvents() {59 base.RegisterContentEvents();60 Content.ItemsAdded += new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded);61 Content.ItemsRemoved += new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved);62 Content.CollectionReset += new CollectionItemsChangedEventHandler<T>(Content_CollectionReset);63 Content.CheckedItemsChanged += new CollectionItemsChangedEventHandler<T>(Content_ItemsChecked);64 56 } 65 57 66 58 protected override void OnContentChanged() { 59 Caption = "Checked Item Collection"; 67 60 base.OnContentChanged(); 68 Caption = "Checked Item Collection";69 while (itemsListView.Items.Count > 0) RemoveListViewItem(itemsListView.Items[0]);70 viewHost.Content = null;71 if (Content != null) {72 Caption += " (" + Content.GetType().Name + ")";73 foreach (T item in Content)74 AddListViewItem(CreateListViewItem(item));75 SortItemsListView(SortOrder.Ascending);76 }77 SetEnabledStateOfControls();78 61 } 79 62 80 protected override void OnReadOnlyChanged() { 81 base.OnReadOnlyChanged(); 82 SetEnabledStateOfControls(); 83 } 84 85 private void SetEnabledStateOfControls() { 86 if (Content == null) { 87 addButton.Enabled = false; 88 sortAscendingButton.Enabled = false; 89 sortDescendingButton.Enabled = false; 90 removeButton.Enabled = false; 91 itemsListView.Enabled = false; 92 detailsGroupBox.Enabled = false; 93 } else { 94 addButton.Enabled = !Content.IsReadOnly && !ReadOnly; 95 sortAscendingButton.Enabled = itemsListView.Items.Count > 1; 96 sortDescendingButton.Enabled = itemsListView.Items.Count > 1; 97 removeButton.Enabled = !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0; 98 itemsListView.Enabled = true; 99 detailsGroupBox.Enabled = true; 100 } 101 } 102 103 protected virtual T CreateItem() { 104 if (typeSelectorDialog == null) { 105 typeSelectorDialog = new TypeSelectorDialog(); 106 typeSelectorDialog.Caption = "Select Item"; 107 typeSelectorDialog.TypeSelector.Caption = "Available Items"; 108 typeSelectorDialog.TypeSelector.Configure(typeof(T), false, true); 109 } 110 111 if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) { 112 try { 113 return (T)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType(); 114 } 115 catch (Exception ex) { 116 Auxiliary.ShowErrorMessageBox(ex); 117 } 118 } 119 return null; 120 } 121 protected virtual ListViewItem CreateListViewItem(T item) { 122 ListViewItem listViewItem = new ListViewItem(); 123 listViewItem.Text = item.ToString(); 124 listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription; 125 listViewItem.Tag = item; 63 protected override ListViewItem CreateListViewItem(T item) { 64 ListViewItem listViewItem = base.CreateListViewItem(item); 126 65 listViewItem.Checked = Content.ItemChecked(item); 127 itemsListView.SmallImageList.Images.Add(item.ItemImage);128 listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;129 66 return listViewItem; 130 }131 protected virtual void AddListViewItem(ListViewItem listViewItem) {132 itemsListView.Items.Add(listViewItem);133 ((T)listViewItem.Tag).ItemImageChanged += new EventHandler(Item_ItemImageChanged);134 ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);135 AdjustListViewColumnSizes();136 sortAscendingButton.Enabled = itemsListView.Items.Count > 1;137 sortDescendingButton.Enabled = itemsListView.Items.Count > 1;138 }139 protected virtual void RemoveListViewItem(ListViewItem listViewItem) {140 ((T)listViewItem.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);141 ((T)listViewItem.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);142 listViewItem.Remove();143 foreach (ListViewItem other in itemsListView.Items)144 if (other.ImageIndex > listViewItem.ImageIndex) other.ImageIndex--;145 itemsListView.SmallImageList.Images.RemoveAt(listViewItem.ImageIndex);146 sortAscendingButton.Enabled = itemsListView.Items.Count > 1;147 sortDescendingButton.Enabled = itemsListView.Items.Count > 1;148 }149 protected virtual void UpdateListViewItemImage(ListViewItem listViewItem) {150 int i = listViewItem.ImageIndex;151 listViewItem.ImageList.Images[i] = ((T)listViewItem.Tag).ItemImage;152 listViewItem.ImageIndex = -1;153 listViewItem.ImageIndex = i;154 }155 protected virtual void UpdateListViewItemText(ListViewItem listViewItem) {156 if (!listViewItem.Text.Equals(listViewItem.Tag.ToString()))157 listViewItem.Text = listViewItem.Tag.ToString();158 }159 protected virtual IEnumerable<ListViewItem> GetListViewItemsForItem(T item) {160 foreach (ListViewItem listViewItem in itemsListView.Items) {161 if (((T)listViewItem.Tag) == item)162 yield return listViewItem;163 }164 67 } 165 68 166 69 #region ListView Events 167 pr ivatevoid itemsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {70 protected virtual void itemsListView_ItemChecked(object sender, ItemCheckedEventArgs e) { 168 71 var checkedItem = (T)e.Item.Tag; 169 72 if (Content.ItemChecked(checkedItem) != e.Item.Checked) { … … 171 74 } 172 75 } 173 174 protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {175 removeButton.Enabled = (Content != null) && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;176 if (itemsListView.SelectedItems.Count == 1) {177 T item = (T)itemsListView.SelectedItems[0].Tag;178 detailsGroupBox.Enabled = true;179 viewHost.ViewType = null;180 viewHost.Content = item;181 } else {182 viewHost.Content = null;183 detailsGroupBox.Enabled = false;184 }185 }186 protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {187 if (e.KeyCode == Keys.Delete) {188 if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {189 foreach (ListViewItem item in itemsListView.SelectedItems)190 Content.Remove((T)item.Tag);191 }192 }193 }194 protected virtual void itemsListView_DoubleClick(object sender, EventArgs e) {195 if (itemsListView.SelectedItems.Count == 1) {196 T item = (T)itemsListView.SelectedItems[0].Tag;197 IContentView view = MainFormManager.MainForm.ShowContent(item);198 if (view != null) {199 view.ReadOnly = ReadOnly;200 view.Locked = Locked;201 }202 }203 }204 protected virtual void itemsListView_ItemDrag(object sender, ItemDragEventArgs e) {205 if (!Locked) {206 ListViewItem listViewItem = (ListViewItem)e.Item;207 T item = (T)listViewItem.Tag;208 DataObject data = new DataObject();209 data.SetData("Type", item.GetType());210 data.SetData("Value", item);211 if (Content.IsReadOnly || ReadOnly) {212 DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);213 } else {214 DragDropEffects result = DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move);215 if ((result & DragDropEffects.Move) == DragDropEffects.Move)216 Content.Remove(item);217 }218 }219 }220 protected virtual void itemsListView_DragEnterOver(object sender, DragEventArgs e) {221 e.Effect = DragDropEffects.None;222 Type type = e.Data.GetData("Type") as Type;223 if (!Content.IsReadOnly && !ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {224 if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Link; // CTRL key225 else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move; // SHIFT key226 else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;227 else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;228 else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;229 }230 }231 protected virtual void itemsListView_DragDrop(object sender, DragEventArgs e) {232 if (e.Effect != DragDropEffects.None) {233 T item = e.Data.GetData("Value") as T;234 if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (T)item.Clone();235 Content.Add(item);236 }237 }238 #endregion239 240 #region Button Events241 protected virtual void addButton_Click(object sender, EventArgs e) {242 T item = CreateItem();243 if (item != null)244 Content.Add(item);245 }246 protected virtual void sortAscendingButton_Click(object sender, EventArgs e) {247 SortItemsListView(SortOrder.Ascending);248 }249 protected virtual void sortDescendingButton_Click(object sender, EventArgs e) {250 SortItemsListView(SortOrder.Descending);251 }252 protected virtual void removeButton_Click(object sender, EventArgs e) {253 if (itemsListView.SelectedItems.Count > 0) {254 foreach (ListViewItem item in itemsListView.SelectedItems)255 Content.Remove((T)item.Tag);256 itemsListView.SelectedItems.Clear();257 }258 }259 76 #endregion 260 77 261 78 #region Content Events 262 protected virtual void Content_ ItemsAdded(object sender,CollectionItemsChangedEventArgs<T> e) {79 protected virtual void Content_CheckedItemsChanged(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<T> e) { 263 80 if (InvokeRequired) 264 Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded), sender, e); 265 else 266 foreach (T item in e.Items) 267 AddListViewItem(CreateListViewItem(item)); 268 } 269 protected virtual void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<T> e) { 270 if (InvokeRequired) 271 Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved), sender, e); 272 else { 273 foreach (T item in e.Items) { 274 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) { 275 RemoveListViewItem(listViewItem); 276 break; 277 } 278 } 279 } 280 } 281 protected virtual void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<T> e) { 282 if (InvokeRequired) 283 Invoke(new CollectionItemsChangedEventHandler<T>(Content_CollectionReset), sender, e); 284 else { 285 foreach (T item in e.OldItems) { 286 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) { 287 RemoveListViewItem(listViewItem); 288 break; 289 } 290 } 291 foreach (T item in e.Items) 292 AddListViewItem(CreateListViewItem(item)); 293 } 294 } 295 protected virtual void Content_ItemsChecked(object sender, CollectionItemsChangedEventArgs<T> e) { 296 if (InvokeRequired) 297 Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsChecked), sender, e); 81 Invoke(new CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged), sender, e); 298 82 else { 299 83 foreach (T item in e.Items) { … … 304 88 } 305 89 } 306 } 307 #endregion 308 309 #region Item Events 310 protected virtual void Item_ItemImageChanged(object sender, EventArgs e) { 311 if (InvokeRequired) 312 Invoke(new EventHandler(Item_ItemImageChanged), sender, e); 313 else { 314 T item = (T)sender; 315 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) 316 UpdateListViewItemImage(listViewItem); 317 } 318 } 319 protected virtual void Item_ToStringChanged(object sender, EventArgs e) { 320 if (InvokeRequired) 321 Invoke(new EventHandler(Item_ToStringChanged), sender, e); 322 else { 323 T item = (T)sender; 324 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) 325 UpdateListViewItemText(listViewItem); 326 AdjustListViewColumnSizes(); 327 } 328 } 329 #endregion 330 331 #region Helpers 332 protected virtual void SortItemsListView(SortOrder sortOrder) { 333 itemsListView.Sorting = SortOrder.None; 334 itemsListView.Sorting = sortOrder; 335 itemsListView.Sorting = SortOrder.None; 336 } 337 protected virtual void AdjustListViewColumnSizes() { 338 if (itemsListView.Items.Count > 0) { 339 for (int i = 0; i < itemsListView.Columns.Count; i++) 340 itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 341 } 342 } 90 } 343 91 #endregion 344 92 } -
trunk/sources/HeuristicLab.Core.Views/3.3/CheckedItemListView.Designer.cs
r3565 r3595 1 #region License Information1 #region License Information 2 2 /* HeuristicLab 3 3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) … … 20 20 #endregion 21 21 22 using System;23 using System.Windows.Forms;24 25 22 namespace HeuristicLab.Core.Views { 26 23 partial class CheckedItemListView<T> { 27 /// <summary> 24 /// <summary> 28 25 /// Required designer variable. 29 26 /// </summary> 30 27 private System.ComponentModel.IContainer components = null; 31 28 32 /// <summary> 29 /// <summary> 33 30 /// Clean up any resources being used. 34 31 /// </summary> 35 32 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 36 33 protected override void Dispose(bool disposing) { 37 if (disposing) { 38 if (typeSelectorDialog != null) typeSelectorDialog.Dispose(); 39 foreach (ListViewItem item in itemsListView.Items) { 40 ((T)item.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged); 41 ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged); 42 } 43 if (components != null) components.Dispose(); 34 if (disposing && (components != null)) { 35 components.Dispose(); 44 36 } 45 37 base.Dispose(disposing); 46 38 } 47 39 48 #region Windows FormDesigner generated code40 #region Component Designer generated code 49 41 50 /// <summary> 51 /// Required method for Designer support - do not modify 42 /// <summary> 43 /// Required method for Designer support - do not modify 52 44 /// the contents of this method with the code editor. 53 45 /// </summary> 54 46 private void InitializeComponent() { 55 this.components = new System.ComponentModel.Container(); 56 this.splitContainer = new System.Windows.Forms.SplitContainer(); 57 this.removeButton = new System.Windows.Forms.Button(); 58 this.moveUpButton = new System.Windows.Forms.Button(); 59 this.moveDownButton = new System.Windows.Forms.Button(); 60 this.itemsListView = new System.Windows.Forms.ListView(); 61 this.listViewColumnHeader = new System.Windows.Forms.ColumnHeader(); 62 this.imageList = new System.Windows.Forms.ImageList(this.components); 63 this.addButton = new System.Windows.Forms.Button(); 64 this.detailsGroupBox = new System.Windows.Forms.GroupBox(); 65 this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost(); 66 this.itemsGroupBox = new System.Windows.Forms.GroupBox(); 67 this.toolTip = new System.Windows.Forms.ToolTip(this.components); 68 this.splitContainer.Panel1.SuspendLayout(); 69 this.splitContainer.Panel2.SuspendLayout(); 70 this.splitContainer.SuspendLayout(); 71 this.detailsGroupBox.SuspendLayout(); 72 this.itemsGroupBox.SuspendLayout(); 73 this.SuspendLayout(); 74 // 75 // splitContainer 76 // 77 this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; 78 this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 79 this.splitContainer.Location = new System.Drawing.Point(3, 16); 80 this.splitContainer.Name = "splitContainer"; 81 // 82 // splitContainer.Panel1 83 // 84 this.splitContainer.Panel1.Controls.Add(this.removeButton); 85 this.splitContainer.Panel1.Controls.Add(this.moveUpButton); 86 this.splitContainer.Panel1.Controls.Add(this.moveDownButton); 87 this.splitContainer.Panel1.Controls.Add(this.itemsListView); 88 this.splitContainer.Panel1.Controls.Add(this.addButton); 89 // 90 // splitContainer.Panel2 91 // 92 this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox); 93 this.splitContainer.Size = new System.Drawing.Size(493, 323); 94 this.splitContainer.SplitterDistance = 200; 95 this.splitContainer.TabIndex = 0; 96 // 97 // removeButton 98 // 99 this.removeButton.Enabled = false; 100 this.removeButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove; 101 this.removeButton.Location = new System.Drawing.Point(93, 3); 102 this.removeButton.Name = "removeButton"; 103 this.removeButton.Size = new System.Drawing.Size(24, 24); 104 this.removeButton.TabIndex = 3; 105 this.toolTip.SetToolTip(this.removeButton, "Remove"); 106 this.removeButton.UseVisualStyleBackColor = true; 107 this.removeButton.Click += new System.EventHandler(this.removeButton_Click); 108 // 109 // moveUpButton 110 // 111 this.moveUpButton.Enabled = false; 112 this.moveUpButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowUp; 113 this.moveUpButton.Location = new System.Drawing.Point(33, 3); 114 this.moveUpButton.Name = "moveUpButton"; 115 this.moveUpButton.Size = new System.Drawing.Size(24, 24); 116 this.moveUpButton.TabIndex = 1; 117 this.toolTip.SetToolTip(this.moveUpButton, "Move Up"); 118 this.moveUpButton.UseVisualStyleBackColor = true; 119 this.moveUpButton.Click += new System.EventHandler(this.moveUpButton_Click); 120 // 121 // moveDownButton 122 // 123 this.moveDownButton.Enabled = false; 124 this.moveDownButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowDown; 125 this.moveDownButton.Location = new System.Drawing.Point(63, 3); 126 this.moveDownButton.Name = "moveDownButton"; 127 this.moveDownButton.Size = new System.Drawing.Size(24, 24); 128 this.moveDownButton.TabIndex = 2; 129 this.toolTip.SetToolTip(this.moveDownButton, "Move Down"); 130 this.moveDownButton.UseVisualStyleBackColor = true; 131 this.moveDownButton.Click += new System.EventHandler(this.moveDownButton_Click); 132 // 133 // itemsListView 134 // 135 this.itemsListView.AllowDrop = true; 136 this.itemsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 137 | System.Windows.Forms.AnchorStyles.Left) 138 | System.Windows.Forms.AnchorStyles.Right))); 139 this.itemsListView.CheckBoxes = true; 140 this.itemsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 141 this.listViewColumnHeader}); 142 this.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; 143 this.itemsListView.HideSelection = false; 144 this.itemsListView.Location = new System.Drawing.Point(3, 33); 145 this.itemsListView.Name = "itemsListView"; 146 this.itemsListView.ShowItemToolTips = true; 147 this.itemsListView.Size = new System.Drawing.Size(194, 286); 148 this.itemsListView.SmallImageList = this.imageList; 149 this.itemsListView.TabIndex = 4; 150 this.itemsListView.UseCompatibleStateImageBehavior = false; 151 this.itemsListView.View = System.Windows.Forms.View.Details; 152 this.itemsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.itemsListView_ItemChecked); 153 this.itemsListView.SelectedIndexChanged += new System.EventHandler(this.itemsListView_SelectedIndexChanged); 154 this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick); 155 this.itemsListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragDrop); 156 this.itemsListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); 157 this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown); 158 this.itemsListView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.itemsListView_ItemDrag); 159 this.itemsListView.DragOver += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); 160 // 161 // imageList 162 // 163 this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; 164 this.imageList.ImageSize = new System.Drawing.Size(16, 16); 165 this.imageList.TransparentColor = System.Drawing.Color.Transparent; 166 // 167 // addButton 168 // 169 this.addButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add; 170 this.addButton.Location = new System.Drawing.Point(3, 3); 171 this.addButton.Name = "addButton"; 172 this.addButton.Size = new System.Drawing.Size(24, 24); 173 this.addButton.TabIndex = 0; 174 this.toolTip.SetToolTip(this.addButton, "Add"); 175 this.addButton.UseVisualStyleBackColor = true; 176 this.addButton.Click += new System.EventHandler(this.addButton_Click); 177 // 178 // detailsGroupBox 179 // 180 this.detailsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 181 | System.Windows.Forms.AnchorStyles.Left) 182 | System.Windows.Forms.AnchorStyles.Right))); 183 this.detailsGroupBox.Controls.Add(this.viewHost); 184 this.detailsGroupBox.Location = new System.Drawing.Point(3, 27); 185 this.detailsGroupBox.Name = "detailsGroupBox"; 186 this.detailsGroupBox.Size = new System.Drawing.Size(283, 294); 187 this.detailsGroupBox.TabIndex = 0; 188 this.detailsGroupBox.TabStop = false; 189 this.detailsGroupBox.Text = "Details"; 190 // 191 // viewHost 192 // 193 this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 194 | System.Windows.Forms.AnchorStyles.Left) 195 | System.Windows.Forms.AnchorStyles.Right))); 196 this.viewHost.Caption = null; 197 this.viewHost.Content = null; 198 this.viewHost.Location = new System.Drawing.Point(6, 19); 199 this.viewHost.Name = "viewHost"; 200 this.viewHost.ReadOnly = false; 201 this.viewHost.Size = new System.Drawing.Size(271, 269); 202 this.viewHost.TabIndex = 0; 203 this.viewHost.ViewType = null; 204 // 205 // itemsGroupBox 206 // 207 this.itemsGroupBox.Controls.Add(this.splitContainer); 208 this.itemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; 209 this.itemsGroupBox.Location = new System.Drawing.Point(0, 0); 210 this.itemsGroupBox.Name = "itemsGroupBox"; 211 this.itemsGroupBox.Size = new System.Drawing.Size(499, 342); 212 this.itemsGroupBox.TabIndex = 0; 213 this.itemsGroupBox.TabStop = false; 214 this.itemsGroupBox.Text = "Items"; 215 // 216 // CheckedItemListView 217 // 218 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 219 this.Controls.Add(this.itemsGroupBox); 220 this.Name = "CheckedItemListView"; 221 this.Size = new System.Drawing.Size(499, 342); 222 this.splitContainer.Panel1.ResumeLayout(false); 223 this.splitContainer.Panel2.ResumeLayout(false); 224 this.splitContainer.ResumeLayout(false); 225 this.detailsGroupBox.ResumeLayout(false); 226 this.itemsGroupBox.ResumeLayout(false); 227 this.ResumeLayout(false); 228 47 components = new System.ComponentModel.Container(); 48 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 49 base.itemsListView.CheckBoxes = true; 50 base.itemsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(itemsListView_ItemChecked); 229 51 } 230 52 231 53 #endregion 232 233 protected System.Windows.Forms.SplitContainer splitContainer;234 protected System.Windows.Forms.ColumnHeader listViewColumnHeader;235 protected GroupBox itemsGroupBox;236 protected ListView itemsListView;237 protected GroupBox detailsGroupBox;238 protected Button addButton;239 protected Button removeButton;240 protected Button moveUpButton;241 protected Button moveDownButton;242 protected ToolTip toolTip;243 protected ImageList imageList;244 protected HeuristicLab.MainForm.WindowsForms.ViewHost viewHost;245 54 } 246 55 } -
trunk/sources/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs
r3588 r3595 1 #region License Information1 #region License Information 2 2 /* HeuristicLab 3 3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) … … 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.ComponentModel; 24 25 using System.Drawing; 26 using System.Data; 27 using System.Linq; 28 using System.Text; 25 29 using System.Windows.Forms; 26 30 using HeuristicLab.Collections; 27 31 using HeuristicLab.MainForm; 28 using HeuristicLab.MainForm.WindowsForms;29 32 30 33 namespace HeuristicLab.Core.Views { … … 35 38 [Content(typeof(CheckedItemList<>), true)] 36 39 [Content(typeof(ICheckedItemList<>), false)] 37 public partial class CheckedItemListView<T> : ItemView where T : class, IItem { 38 protected TypeSelectorDialog typeSelectorDialog; 39 40 /// <summary> 41 /// Gets or sets the content to represent visually. 42 /// </summary> 43 /// <remarks>Uses property <see cref="ItemView.Content"/> of base class <see cref="ItemView"/> 44 /// </remarks> 40 public partial class CheckedItemListView<T> : ItemListView<T> where T : class, IItem { 45 41 public new ICheckedItemList<T> Content { 46 42 get { return (ICheckedItemList<T>)base.Content; } … … 48 44 } 49 45 50 public ListView ItemsListView { 51 get { return itemsListView; } 46 public CheckedItemListView() 47 : base() { 48 InitializeComponent(); 52 49 } 53 50 54 /// <summary> 55 /// Initializes a new instance of <see cref="CheckedItemListView"/> with caption "Checked Item List". 56 /// </summary> 57 public CheckedItemListView() { 58 InitializeComponent(); 59 Caption = "Checked Item List"; 51 protected override void RegisterContentEvents() { 52 Content.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged); 53 base.RegisterContentEvents(); 60 54 } 61 62 /// <summary>63 /// Removes the eventhandlers from the underlying <see cref="ICheckedItemList"/>.64 /// </summary>65 /// <remarks>Calls <see cref="ItemView.DeregisterContentEvents"/> of base class <see cref="ItemView"/>.</remarks>66 55 protected override void DeregisterContentEvents() { 67 Content.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded);68 Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved);69 Content.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced);70 Content.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved);71 Content.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset);72 56 Content.CheckedItemsChanged -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged); 73 57 base.DeregisterContentEvents(); 74 58 } 75 59 76 /// <summary> 77 /// Adds eventhandlers to the underlying <see cref="ICheckedItemList"/>. 78 /// </summary> 79 /// <remarks>Calls <see cref="ItemView.RegisterContentEvents"/> of base class <see cref="ItemView"/>.</remarks> 80 protected override void RegisterContentEvents() { 81 base.RegisterContentEvents(); 82 Content.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded); 83 Content.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved); 84 Content.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced); 85 Content.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved); 86 Content.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset); 87 Content.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged); 60 protected override void OnContentChanged() { 61 Caption = "Checked Item List"; 62 base.OnContentChanged(); 88 63 } 89 64 90 91 protected override void OnContentChanged() { 92 base.OnContentChanged(); 93 Caption = "Checked Item List"; 94 while (itemsListView.Items.Count > 0) RemoveListViewItem(itemsListView.Items[0]); 95 viewHost.Content = null; 96 if (Content != null) { 97 Caption += " (" + Content.GetType().Name + ")"; 98 foreach (T item in Content) 99 AddListViewItem(CreateListViewItem(item)); 100 } 101 SetEnabledStateOfControls(); 102 } 103 104 protected override void OnReadOnlyChanged() { 105 base.OnReadOnlyChanged(); 106 SetEnabledStateOfControls(); 107 } 108 109 private void SetEnabledStateOfControls() { 110 if (Content == null) { 111 addButton.Enabled = false; 112 moveUpButton.Enabled = false; 113 moveDownButton.Enabled = false; 114 removeButton.Enabled = false; 115 itemsListView.Enabled = false; 116 detailsGroupBox.Enabled = false; 117 } else { 118 addButton.Enabled = !Content.IsReadOnly && !ReadOnly; 119 moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 && 120 itemsListView.SelectedIndices[0] != 0 && 121 !Content.IsReadOnly && !ReadOnly; 122 moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 && 123 itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 && 124 !Content.IsReadOnly && !ReadOnly; 125 removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && 126 !Content.IsReadOnly && !ReadOnly; 127 itemsListView.Enabled = true; 128 detailsGroupBox.Enabled = true; 129 } 130 } 131 132 protected virtual T CreateItem() { 133 if (typeSelectorDialog == null) { 134 typeSelectorDialog = new TypeSelectorDialog(); 135 typeSelectorDialog.Caption = "Select Item"; 136 typeSelectorDialog.TypeSelector.Caption = "Available Items"; 137 typeSelectorDialog.TypeSelector.Configure(typeof(T), false, true); 138 } 139 140 if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) { 141 try { 142 return (T)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType(); 143 } 144 catch (Exception ex) { 145 Auxiliary.ShowErrorMessageBox(ex); 146 } 147 } 148 return null; 149 } 150 protected virtual ListViewItem CreateListViewItem(T item) { 151 ListViewItem listViewItem = new ListViewItem(); 152 listViewItem.Text = item.ToString(); 153 listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription; 154 listViewItem.Tag = item; 65 protected override ListViewItem CreateListViewItem(T item) { 66 ListViewItem listViewItem = base.CreateListViewItem(item); 155 67 listViewItem.Checked = Content.ItemChecked(item); 156 itemsListView.SmallImageList.Images.Add(item.ItemImage);157 listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;158 68 return listViewItem; 159 }160 protected virtual void AddListViewItem(ListViewItem listViewItem) {161 itemsListView.Items.Add(listViewItem);162 ((T)listViewItem.Tag).ItemImageChanged += new EventHandler(Item_ItemImageChanged);163 ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);164 AdjustListViewColumnSizes();165 }166 protected virtual void InsertListViewItem(int index, ListViewItem listViewItem) {167 itemsListView.Items.Insert(index, listViewItem);168 ((T)listViewItem.Tag).ItemImageChanged += new EventHandler(Item_ItemImageChanged);169 ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);170 AdjustListViewColumnSizes();171 }172 protected virtual void RemoveListViewItem(ListViewItem listViewItem) {173 ((T)listViewItem.Tag).ItemImageChanged -= new EventHandler(Item_ItemImageChanged);174 ((T)listViewItem.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);175 listViewItem.Remove();176 foreach (ListViewItem other in itemsListView.Items)177 if (other.ImageIndex > listViewItem.ImageIndex) other.ImageIndex--;178 itemsListView.SmallImageList.Images.RemoveAt(listViewItem.ImageIndex);179 }180 protected virtual void UpdateListViewItemImage(ListViewItem listViewItem) {181 int i = listViewItem.ImageIndex;182 listViewItem.ImageList.Images[i] = ((T)listViewItem.Tag).ItemImage;183 listViewItem.ImageIndex = -1;184 listViewItem.ImageIndex = i;185 }186 protected virtual void UpdateListViewItemText(ListViewItem listViewItem) {187 if (!listViewItem.Text.Equals(listViewItem.Tag.ToString()))188 listViewItem.Text = listViewItem.Tag.ToString();189 69 } 190 70 191 71 #region ListView Events 192 protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {193 moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 &&194 itemsListView.SelectedIndices[0] != 0 &&195 (Content != null) && !Content.IsReadOnly && !ReadOnly;196 moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 &&197 itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 &&198 (Content != null) && !Content.IsReadOnly && !ReadOnly;199 removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&200 (Content != null) && !Content.IsReadOnly && !ReadOnly;201 202 if (itemsListView.SelectedItems.Count == 1) {203 T item = (T)itemsListView.SelectedItems[0].Tag;204 detailsGroupBox.Enabled = true;205 viewHost.ViewType = null;206 viewHost.Content = item;207 } else {208 viewHost.Content = null;209 detailsGroupBox.Enabled = false;210 }211 }212 213 protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) {214 if (e.KeyCode == Keys.Delete) {215 if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {216 foreach (ListViewItem item in itemsListView.SelectedItems)217 Content.RemoveAt(item.Index);218 }219 }220 }221 222 protected virtual void itemsListView_DoubleClick(object sender, EventArgs e) {223 if (itemsListView.SelectedItems.Count == 1) {224 T item = (T)itemsListView.SelectedItems[0].Tag;225 IContentView view = MainFormManager.MainForm.ShowContent(item);226 if (view != null) {227 view.ReadOnly = ReadOnly;228 view.Locked = Locked;229 }230 }231 }232 233 protected virtual void itemsListView_ItemDrag(object sender, ItemDragEventArgs e) {234 if (!Locked) {235 ListViewItem listViewItem = (ListViewItem)e.Item;236 T item = (T)listViewItem.Tag;237 DataObject data = new DataObject();238 data.SetData("Type", item.GetType());239 data.SetData("Value", item);240 if (Content.IsReadOnly || ReadOnly) {241 DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link);242 } else {243 DragDropEffects result = DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move);244 if ((result & DragDropEffects.Move) == DragDropEffects.Move)245 Content.RemoveAt(listViewItem.Index);246 }247 }248 }249 protected virtual void itemsListView_DragEnterOver(object sender, DragEventArgs e) {250 e.Effect = DragDropEffects.None;251 Type type = e.Data.GetData("Type") as Type;252 if (!Content.IsReadOnly && !ReadOnly && (type != null) && (typeof(T).IsAssignableFrom(type))) {253 if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Link; // CTRL key254 else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move; // SHIFT key255 else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;256 else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;257 else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;258 }259 }260 protected virtual void itemsListView_DragDrop(object sender, DragEventArgs e) {261 if (e.Effect != DragDropEffects.None) {262 T item = e.Data.GetData("Value") as T;263 if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (T)item.Clone();264 265 Point p = itemsListView.PointToClient(new Point(e.X, e.Y));266 ListViewItem listViewItem = itemsListView.GetItemAt(p.X, p.Y);267 if (listViewItem != null) Content.Insert(listViewItem.Index, item);268 else Content.Add(item);269 }270 }271 272 72 protected virtual void itemsListView_ItemChecked(object sender, ItemCheckedEventArgs e) { 273 73 var checkedItem = (T)e.Item.Tag; 274 if (Content.ItemChecked(checkedItem) != e.Item.Checked) 74 if (Content.ItemChecked(checkedItem) != e.Item.Checked) { 275 75 Content.SetItemCheckedState(checkedItem, e.Item.Checked); 276 }277 #endregion278 279 #region Button Events280 protected virtual void addButton_Click(object sender, EventArgs e) {281 T item = CreateItem();282 if (item != null)283 Content.Add(item);284 }285 protected virtual void moveUpButton_Click(object sender, EventArgs e) {286 if (itemsListView.SelectedItems.Count == 1) {287 int index = itemsListView.SelectedIndices[0];288 T item = Content[index - 1];289 Content[index - 1] = Content[index];290 itemsListView.Items[index].Selected = false;291 itemsListView.Items[index - 1].Selected = true;292 Content[index] = item;293 }294 }295 protected virtual void moveDownButton_Click(object sender, EventArgs e) {296 if (itemsListView.SelectedItems.Count == 1) {297 int index = itemsListView.SelectedIndices[0];298 T item = Content[index + 1];299 Content[index + 1] = Content[index];300 itemsListView.Items[index].Selected = false;301 itemsListView.Items[index + 1].Selected = true;302 Content[index] = item;303 }304 }305 protected virtual void removeButton_Click(object sender, EventArgs e) {306 if (itemsListView.SelectedItems.Count > 0) {307 foreach (ListViewItem item in itemsListView.SelectedItems)308 Content.RemoveAt(item.Index);309 76 } 310 77 } … … 312 79 313 80 #region Content Events 314 protected virtual void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {315 if (InvokeRequired)316 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded), sender, e);317 else318 foreach (IndexedItem<T> item in e.Items)319 InsertListViewItem(item.Index, CreateListViewItem(item.Value));320 }321 protected virtual void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {322 if (InvokeRequired)323 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved), sender, e);324 else {325 List<ListViewItem> listViewItems = new List<ListViewItem>();326 foreach (IndexedItem<T> item in e.Items)327 listViewItems.Add(itemsListView.Items[item.Index]);328 foreach (ListViewItem listViewItem in listViewItems)329 RemoveListViewItem(listViewItem);330 }331 }332 protected virtual void Content_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {333 if (InvokeRequired)334 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced), sender, e);335 else {336 int[] selected = new int[itemsListView.SelectedIndices.Count];337 itemsListView.SelectedIndices.CopyTo(selected, 0);338 339 List<ListViewItem> listViewItems = new List<ListViewItem>();340 foreach (IndexedItem<T> item in e.OldItems)341 listViewItems.Add(itemsListView.Items[item.Index]);342 foreach (ListViewItem listViewItem in listViewItems)343 RemoveListViewItem(listViewItem);344 345 foreach (IndexedItem<T> item in e.Items)346 InsertListViewItem(item.Index, CreateListViewItem(item.Value));347 348 for (int i = 0; i < selected.Length; i++)349 itemsListView.Items[selected[i]].Selected = true;350 }351 }352 protected virtual void Content_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {353 if (InvokeRequired)354 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved), sender, e);355 else {356 foreach (IndexedItem<T> item in e.Items) {357 ListViewItem listViewItem = itemsListView.Items[item.Index];358 listViewItem.Tag = item.Value;359 UpdateListViewItemImage(listViewItem);360 UpdateListViewItemText(listViewItem);361 }362 }363 }364 protected virtual void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {365 if (InvokeRequired)366 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset), sender, e);367 else {368 List<ListViewItem> listViewItems = new List<ListViewItem>();369 foreach (IndexedItem<T> item in e.OldItems)370 listViewItems.Add(itemsListView.Items[item.Index]);371 foreach (ListViewItem listViewItem in listViewItems)372 RemoveListViewItem(listViewItem);373 374 foreach (IndexedItem<T> item in e.Items)375 InsertListViewItem(item.Index, CreateListViewItem(item.Value));376 }377 }378 81 protected virtual void Content_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 379 82 if (InvokeRequired) … … 386 89 } 387 90 } 388 389 91 #endregion 390 391 #region Item Events392 protected virtual void Item_ItemImageChanged(object sender, EventArgs e) {393 if (InvokeRequired)394 Invoke(new EventHandler(Item_ItemImageChanged), sender, e);395 else {396 T item = (T)sender;397 foreach (ListViewItem listViewItem in itemsListView.Items) {398 if (((T)listViewItem.Tag) == item)399 UpdateListViewItemImage(listViewItem);400 }401 }402 }403 protected virtual void Item_ToStringChanged(object sender, EventArgs e) {404 if (InvokeRequired)405 Invoke(new EventHandler(Item_ToStringChanged), sender, e);406 else {407 T item = (T)sender;408 foreach (ListViewItem listViewItem in itemsListView.Items) {409 if (((T)listViewItem.Tag) == item)410 UpdateListViewItemText(listViewItem);411 }412 AdjustListViewColumnSizes();413 }414 }415 #endregion416 417 #region Helpers418 protected virtual void AdjustListViewColumnSizes() {419 if (itemsListView.Items.Count > 0) {420 for (int i = 0; i < itemsListView.Columns.Count; i++)421 itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);422 }423 }424 #endregion425 426 92 } 427 93 }
Note: See TracChangeset
for help on using the changeset viewer.