- Timestamp:
- 01/29/10 01:44:57 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs
r2708 r2713 30 30 using HeuristicLab.Common; 31 31 using HeuristicLab.MainForm; 32 using HeuristicLab.MainForm.WindowsForms; 32 33 33 34 namespace HeuristicLab.Core.Views { … … 35 36 /// The visual representation of all variables in a specified scope. 36 37 /// </summary> 37 public partial class ItemListView<T> : ObjectView where T : class, IItem {38 public partial class ItemListView<T> : ContentView where T : class, IItem { 38 39 /// <summary> 39 40 /// Gets or sets the scope whose variables to represent visually. … … 41 42 /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>. 42 43 /// No won data storage present.</remarks> 43 public IObservableList<T> ItemList {44 get { return (IObservableList<T>) Object; }45 set { base. Object = value; }44 public new IObservableList<T> Content { 45 get { return (IObservableList<T>)base.Content; } 46 set { base.Content = value; } 46 47 } 47 48 … … 62 63 /// </summary> 63 64 /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks> 64 protected override void Deregister ObjectEvents() {65 ItemList.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsAdded);66 ItemList.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsRemoved);67 ItemList.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsReplaced);68 ItemList.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsMoved);69 ItemList.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_CollectionReset);70 base.Deregister ObjectEvents();65 protected override void DeregisterContentEvents() { 66 Content.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded); 67 Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved); 68 Content.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced); 69 Content.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved); 70 Content.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset); 71 base.DeregisterContentEvents(); 71 72 } 72 73 … … 75 76 /// </summary> 76 77 /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks> 77 protected override void Register ObjectEvents() {78 base.Register ObjectEvents();79 ItemList.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsAdded);80 ItemList.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsRemoved);81 ItemList.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsReplaced);82 ItemList.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_ItemsMoved);83 ItemList.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<T>>(ItemList_CollectionReset);84 } 85 86 protected override void On ObjectChanged() {87 base.On ObjectChanged();78 protected override void RegisterContentEvents() { 79 base.RegisterContentEvents(); 80 Content.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded); 81 Content.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved); 82 Content.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced); 83 Content.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved); 84 Content.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset); 85 } 86 87 protected override void OnContentChanged() { 88 base.OnContentChanged(); 88 89 Caption = "Item List"; 89 90 while (itemsListView.Items.Count > 0) RemoveListViewItem(itemsListView.Items[0]); 90 91 itemsListView.Enabled = false; 91 92 detailsGroupBox.Enabled = false; 92 viewHost. Object = null;93 viewHost.Content = null; 93 94 addButton.Enabled = false; 94 95 moveUpButton.Enabled = false; … … 96 97 removeButton.Enabled = false; 97 98 98 if ( ItemList != null) {99 Caption += " (" + ItemList.GetType().Name + ")";99 if (Content != null) { 100 Caption += " (" + Content.GetType().Name + ")"; 100 101 itemsListView.Enabled = true; 101 addButton.Enabled = ! ItemList.IsReadOnly;102 foreach (T item in ItemList)102 addButton.Enabled = !Content.IsReadOnly; 103 foreach (T item in Content) 103 104 AddListViewItem(CreateListViewItem(item)); 104 105 } … … 150 151 moveUpButton.Enabled = itemsListView.SelectedItems.Count == 1 && 151 152 itemsListView.SelectedIndices[0] != 0 && 152 ! ItemList.IsReadOnly;153 !Content.IsReadOnly; 153 154 moveDownButton.Enabled = itemsListView.SelectedItems.Count == 1 && 154 155 itemsListView.SelectedIndices[0] != itemsListView.Items.Count - 1 && 155 ! ItemList.IsReadOnly;156 !Content.IsReadOnly; 156 157 removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && 157 ! ItemList.IsReadOnly;158 !Content.IsReadOnly; 158 159 159 160 if (itemsListView.SelectedItems.Count == 1) { 160 161 T item = (T)itemsListView.SelectedItems[0].Tag; 161 viewHost. Object = item;162 viewHost.Content = item; 162 163 detailsGroupBox.Enabled = true; 163 164 } else { 164 viewHost. Object = null;165 viewHost.Content = null; 165 166 detailsGroupBox.Enabled = false; 166 167 } … … 175 176 protected virtual void itemsListView_KeyDown(object sender, KeyEventArgs e) { 176 177 if (e.KeyCode == Keys.Delete) { 177 if ((itemsListView.SelectedItems.Count > 0) && ! ItemList.IsReadOnly) {178 if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly) { 178 179 foreach (ListViewItem item in itemsListView.SelectedItems) 179 ItemList.RemoveAt(item.Index);180 Content.RemoveAt(item.Index); 180 181 } 181 182 } … … 196 197 data.SetData("Type", item.GetType()); 197 198 data.SetData("Value", item); 198 if ( ItemList.IsReadOnly) {199 if (Content.IsReadOnly) { 199 200 DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link); 200 201 } else { 201 202 DragDropEffects result = DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move); 202 203 if ((result & DragDropEffects.Move) == DragDropEffects.Move) 203 ItemList.RemoveAt(listViewItem.Index);204 Content.RemoveAt(listViewItem.Index); 204 205 } 205 206 } … … 207 208 e.Effect = DragDropEffects.None; 208 209 Type type = e.Data.GetData("Type") as Type; 209 if ((! ItemList.IsReadOnly) && (type != null) && (typeof(T).IsAssignableFrom(type))) {210 if ((!Content.IsReadOnly) && (type != null) && (typeof(T).IsAssignableFrom(type))) { 210 211 if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy; // CTRL key 211 212 else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move; // SHIFT key … … 222 223 Point p = itemsListView.PointToClient(new Point(e.X, e.Y)); 223 224 ListViewItem listViewItem = itemsListView.GetItemAt(p.X, p.Y); 224 if (listViewItem != null) ItemList.Insert(listViewItem.Index, item);225 else ItemList.Add(item);225 if (listViewItem != null) Content.Insert(listViewItem.Index, item); 226 else Content.Add(item); 226 227 } 227 228 } … … 232 233 T item = CreateItem(); 233 234 if (item != null) 234 ItemList.Add(item);235 Content.Add(item); 235 236 } 236 237 protected virtual void moveUpButton_Click(object sender, EventArgs e) { 237 238 if (itemsListView.SelectedItems.Count == 1) { 238 239 int index = itemsListView.SelectedIndices[0]; 239 T item = ItemList[index - 1];240 ItemList[index - 1] = ItemList[index];240 T item = Content[index - 1]; 241 Content[index - 1] = Content[index]; 241 242 itemsListView.Items[index].Selected = false; 242 243 itemsListView.Items[index - 1].Selected = true; 243 ItemList[index] = item;244 Content[index] = item; 244 245 } 245 246 } … … 247 248 if (itemsListView.SelectedItems.Count == 1) { 248 249 int index = itemsListView.SelectedIndices[0]; 249 T item = ItemList[index + 1];250 ItemList[index + 1] = ItemList[index];250 T item = Content[index + 1]; 251 Content[index + 1] = Content[index]; 251 252 itemsListView.Items[index].Selected = false; 252 253 itemsListView.Items[index + 1].Selected = true; 253 ItemList[index] = item;254 Content[index] = item; 254 255 } 255 256 } … … 257 258 if (itemsListView.SelectedItems.Count > 0) { 258 259 foreach (ListViewItem item in itemsListView.SelectedItems) 259 ItemList.RemoveAt(item.Index);260 Content.RemoveAt(item.Index); 260 261 } 261 262 } 262 263 #endregion 263 264 264 #region NamedItemCollectionEvents265 protected virtual void ItemList_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {266 if (InvokeRequired) 267 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>( ItemList_ItemsAdded), sender, e);265 #region Content Events 266 protected virtual void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 267 if (InvokeRequired) 268 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsAdded), sender, e); 268 269 else 269 270 foreach (IndexedItem<T> item in e.Items) 270 271 InsertListViewItem(item.Index, CreateListViewItem(item.Value)); 271 272 } 272 protected virtual void ItemList_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {273 if (InvokeRequired) 274 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>( ItemList_ItemsRemoved), sender, e);273 protected virtual void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 274 if (InvokeRequired) 275 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsRemoved), sender, e); 275 276 else { 276 277 List<ListViewItem> listViewItems = new List<ListViewItem>(); … … 281 282 } 282 283 } 283 protected virtual void ItemList_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {284 if (InvokeRequired) 285 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>( ItemList_ItemsReplaced), sender, e);284 protected virtual void Content_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 285 if (InvokeRequired) 286 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsReplaced), sender, e); 286 287 else { 287 288 int[] selected = new int[itemsListView.SelectedIndices.Count]; … … 301 302 } 302 303 } 303 protected virtual void ItemList_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {304 if (InvokeRequired) 305 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>( ItemList_ItemsMoved), sender, e);304 protected virtual void Content_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 305 if (InvokeRequired) 306 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_ItemsMoved), sender, e); 306 307 else { 307 308 foreach (IndexedItem<T> item in e.Items) { … … 312 313 } 313 314 } 314 protected virtual void ItemList_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) {315 if (InvokeRequired) 316 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>( ItemList_CollectionReset), sender, e);315 protected virtual void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 316 if (InvokeRequired) 317 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CollectionReset), sender, e); 317 318 else { 318 319 List<ListViewItem> listViewItems = new List<ListViewItem>();
Note: See TracChangeset
for help on using the changeset viewer.