/// <summary> /// Raises the <see cref="Control.DragDrop"/> event of the list view. /// </summary> /// <remarks> /// This inserts the items being reordered. /// </remarks> /// <param name="drgevent">A <see cref="DragEventArgs"/> describing the event arguments.</param> protected override void OnDragDrop(DragEventArgs drgevent) { base.OnDragDrop(drgevent); if (drgevent.Effect == DragDropEffects.Move) { List <ListViewItem> data = (List <ListViewItem>)drgevent.Data.GetData(typeof(List <ListViewItem>)); ReorderedItemsEventArgs riaEventArgs = new ReorderedItemsEventArgs(); m_booIsDropping = true; for (Int32 i = data.Count - 1; i >= 0; i--) { riaEventArgs.ReorderedListViewItems.Insert(0, new ReorderedItemsEventArgs.ReorderedListViewItem(data[i], data[i].Index, m_intInsertIndex + i)); Items.Remove(data[i]); } for (Int32 i = data.Count - 1; i >= 0; i--) { Items.Insert(m_intInsertIndex, data[i]).EnsureVisible(); } m_intInsertIndex = -1; m_booIsDropping = false; try { OnItemsReordered(riaEventArgs); } catch (Exception e) { //this is required as drag/drop operations, even when performed within the same // application, are handled by OLE, which doesn't differentiate between an external // an internal drag/drop source. furhter, OLE doesn't understand exceptions, and so // doesn't pass them on. even if it could, in general, the source of a drag/drop // operation wouldn't care if the target was having an issue. we only care // because the source and target are the same application, and the source // needs to rethrow the exception, or else it will be lost in the ether m_queDragDropExceptions.Enqueue(e); } } }
/// <summary> /// Raises the <see cref="ItemsReordered"/> event. /// </summary> /// <param name="e">An <see cref="EventArgs"/> describing the event arguments.</param> protected virtual void OnItemsReordered(ReorderedItemsEventArgs e) { ItemsReordered(this, e); }
/// <summary> /// Handles the <see cref="ReorderableListView.ItemsReordered"/> event of the list view of file sets. /// </summary> /// <remarks> /// This propagates the order change to the view model. /// </remarks> /// <param name="sender">The object that raised the event.</param> /// <param name="e">A <see cref="ReorderedItemsEventArgs"/> describing the event arguments.</param> private void rlvConditionalInstalls_ItemsReordered(object sender, ReorderedItemsEventArgs e) { foreach (ReorderedItemsEventArgs.ReorderedListViewItem rliItem in e.ReorderedListViewItems) ViewModel.MovePattern(rliItem.OldIndex, rliItem.NewIndex); }
/// <summary> /// Raises the <see cref="ItemsReordered"/> event. /// </summary> /// <param name="e">An <see cref="EventArgs"/> describing the event arguments.</param> protected virtual void OnItemsReordered(ReorderedItemsEventArgs e) { ItemsReordered(this, e); }
/// <summary> /// Raises the <see cref="Control.DragDrop"/> event of the list view. /// </summary> /// <remarks> /// This inserts the items being reordered. /// </remarks> /// <param name="drgevent">A <see cref="DragEventArgs"/> describing the event arguments.</param> protected override void OnDragDrop(DragEventArgs drgevent) { base.OnDragDrop(drgevent); if (drgevent.Effect == DragDropEffects.Move) { List<ListViewItem> data = (List<ListViewItem>)drgevent.Data.GetData(typeof(List<ListViewItem>)); ReorderedItemsEventArgs riaEventArgs = new ReorderedItemsEventArgs(); m_booIsDropping = true; for (Int32 i = data.Count - 1; i >= 0; i--) { riaEventArgs.ReorderedListViewItems.Insert(0, new ReorderedItemsEventArgs.ReorderedListViewItem(data[i], data[i].Index, m_intInsertIndex + i)); Items.Remove(data[i]); } for (Int32 i = data.Count - 1; i >= 0; i--) Items.Insert(m_intInsertIndex, data[i]).EnsureVisible(); m_intInsertIndex = -1; m_booIsDropping = false; try { OnItemsReordered(riaEventArgs); } catch (Exception e) { //this is required as drag/drop operations, even when performed within the same // application, are handled by OLE, which doesn't differentiate between an external // an internal drag/drop source. furhter, OLE doesn't understand exceptions, and so // doesn't pass them on. even if it could, in general, the source of a drag/drop // operation wouldn't care if the target was having an issue. we only care // because the source and target are the same application, and the source // needs to rethrow the exception, or else it will be lost in the ether m_queDragDropExceptions.Enqueue(e); } } }
/// <summary> /// Handles the <see cref="ReorderableListView.ItemsReordered"/> event of the plugin list. /// </summary> /// <remarks> /// This reorders the moved plugins. /// </remarks> /// <param name="sender">The object that raised the event.</param> /// <param name="e">A <see cref="ReorderedItemsEventArgs"/> describing the event arguments.</param> private void rlvPlugins_ItemsReordered(object sender, ReorderedItemsEventArgs e) { foreach (ReorderedItemsEventArgs.ReorderedListViewItem lviPlugin in e.ReorderedListViewItems) ViewModel.SetPluginOrderIndex((Plugin)lviPlugin.Item.Tag, lviPlugin.NewIndex); }
private void rlvSteps_ItemsReordered(object sender, ReorderedItemsEventArgs e) { foreach (ReorderedItemsEventArgs.ReorderedListViewItem rliItem in e.ReorderedListViewItems) { InstallStepsVM.InstallSteps.RemoveAt(rliItem.OldIndex); InstallStepsVM.InstallSteps.Insert(rliItem.NewIndex, (InstallStep)rliItem.Item.Tag); } ViewModel.SaveInstallSteps(ObjectHelper.GetPropertyName<InstallStepsVM>(x => x.InstallSteps)); }
private void rlvOptions_ItemsReordered(object sender, ReorderedItemsEventArgs e) { foreach (ReorderedItemsEventArgs.ReorderedListViewItem rliItem in e.ReorderedListViewItems) { OptionGroupVM.Options.RemoveAt(rliItem.OldIndex); OptionGroupVM.Options.Insert(rliItem.NewIndex, (Option)rliItem.Item.Tag); } ViewModel.SaveOptionGroup(ObjectHelper.GetPropertyName<OptionGroup>(x => x.Options)); }