/// <summary> /// Remove all items from list. /// </summary> /// <remarks> /// <para>The event <see cref="ItemRemoving"/> is raised for each item prior to /// clearing array and allows entire operation to be cancelled.</para> /// </remarks> /// <param name="adaptor">Reorderable list adaptor.</param> /// <returns> /// Returns a value of <c>false</c> if operation was cancelled. /// </returns> protected bool ClearAll( IReorderableListAdaptor adaptor ) { if (adaptor.Count == 0) return true; var args = new ItemRemovingEventArgs( adaptor, 0 ); int count = adaptor.Count; for (int i = 0; i < count; ++i) { args.itemIndex = i; OnItemRemoving( args ); if (args.Cancel) return false; } adaptor.Clear(); GUI.changed = true; ReorderableListGUI.indexOfChangedItem = -1; return true; }
/// <summary> /// Raises event before list item is removed and provides oppertunity to cancel. /// </summary> /// <param name="args">Event arguments.</param> protected virtual void OnItemRemoving( ItemRemovingEventArgs args ) { if (ItemRemoving != null) ItemRemoving( this, args ); }
/// <summary> /// Remove specified item. /// </summary> /// <remarks> /// <para>The event <see cref="ItemRemoving"/> is raised prior to removing item /// and allows removal to be cancelled.</para> /// </remarks> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="itemIndex">Zero-based index of item.</param> /// <returns> /// Returns a value of <c>false</c> if operation was cancelled. /// </returns> protected bool RemoveItem( IReorderableListAdaptor adaptor, int itemIndex ) { var args = new ItemRemovingEventArgs( adaptor, itemIndex ); OnItemRemoving( args ); if (args.Cancel) return false; adaptor.Remove( itemIndex ); GUI.changed = true; ReorderableListGUI.indexOfChangedItem = -1; return true; }