Author: ericwa
Date: Sun Mar 23 00:15:33 2014
New Revision: 10615
URL: http://svn.gna.org/viewcvs/etoile?rev=10615&view=rev
Log:
ProjectDemo: Outliner: Allow deleting multiple items at once
Modified:
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m
Modified:
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m?rev=10615&r1=10614&r2=10615&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m
Sun Mar 23 00:15:33 2014
@@ -200,18 +200,40 @@
[self shiftLeft: sender];
}
+static NSString *implode(NSArray *array, NSString *separator)
+{
+ NSMutableString *result = [NSMutableString new];
+ const NSUInteger count = [array count];
+ for (NSUInteger i = 0; i < count; i++)
+ {
+ [result appendString: [array[i] description]];
+ if (i + 1 < count)
+ {
+ [result appendString: separator];
+ }
+ }
+ return result;
+}
+
- (void)deleteForward:(id)sender
{
- OutlineItem *itemToDelete = [self selectedItem];
- if (itemToDelete != nil && itemToDelete != [self rootObject])
- {
- NSInteger index = [[[itemToDelete parent] contents]
indexOfObject: itemToDelete];
+ NSArray *selectedRows = [self selectedRows];
+ if ([selectedRows count] == 0)
+ return;
+
+ NSString *label = implode((NSArray *)[[selectedRows mappedCollection]
label], @", ");
+
+ for (OutlineItem *item in selectedRows)
+ {
+ if (item == [self rootObject])
+ continue;
+
+ NSInteger index = [[[item parent] contents] indexOfObject:
item];
assert(index != NSNotFound);
-
- [[itemToDelete parent] removeItemAtIndex: index];
-
- [self commitWithIdentifier: @"delete" descriptionArguments:
@[itemToDelete.label]];
- }
+ [[item parent] removeItemAtIndex: index];
+ }
+
+ [self commitWithIdentifier: @"delete" descriptionArguments: @[label]];
}
- (void)delete:(id)sender
_______________________________________________
Etoile-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-cvs