30 - (BOOL)browser:(
CPBrowser)browser acceptDrop:(
id)info atRow:(CPInteger)row column:(CPInteger)column dropOperation:(CPTableViewDropOperation)dropOperation;
31 - (BOOL)browser:(
CPBrowser)browser canDragRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(
CPEvent )event;
32 - (BOOL)browser:(
CPBrowser)browser isLeafItem:(
id)item;
33 - (BOOL)browser:(
CPBrowser)browser shouldSelectRowIndexes:(
CPIndexSet)anIndexSet inColumn:(CPInteger)column;
35 - (CPDragOperation)browser:(
CPBrowser)browser validateDrop:(
id)info proposedRow:(CPInteger)row column:(CPInteger)column dropOperation:(CPTableViewDropOperation)dropOperation;
37 - (
CPImage)browser:(
CPBrowser)browser draggingImageForRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(
CPEvent)event offset:(CGPoint)dragImageOffset;
39 - (
CPIndexSet)browser:(
CPBrowser)browser selectionIndexesForProposedSelection:(
CPIndexSet)proposedSelectionIndexes inColumn:(CPInteger)column;
40 - (CPInteger)browser:(
CPBrowser)browser numberOfChildrenOfItem:(
id)item;
41 - (
CPView)browser:(
CPBrowser)browser draggingViewForRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(
CPEvent)event offset:(CGPoint)dragImageOffset;
42 - (id)browser:(
CPBrowser)browser child:(CPInteger)index ofItem:(
id)item;
43 - (id)browser:(
CPBrowser)browser objectValueForItem:(
id)item;
44 - (id)rootItemForBrowser:(
CPBrowser)browser;
45 - (void)browser:(
CPBrowser)browser didChangeLastColumn:(CPInteger)oldLastColumn toColumn:(CPInteger)column;
46 - (void)browser:(
CPBrowser)browser didResizeColumn:(CPInteger)column;
47 - (void)browserSelectionIsChanging:(
CPBrowser)browser;
48 - (void)browserSelectionDidChange:(
CPBrowser)browser;
77 id <CPBrowserDelegate> _delegate;
79 unsigned _implementedDelegateMethods;
86 CPArray _tableDelegates;
90 BOOL _delegateSupportsImages;
94 BOOL _allowsMultipleSelection;
95 BOOL _allowsEmptySelection;
97 Class _tableViewClass;
102 float _minColumnWidth;
103 float _defaultColumnWidth;
105 CPArray _columnWidths;
122 - (id)initWithFrame:(CGRect)aFrame
124 if (
self = [super initWithFrame:aFrame])
135 _defaultColumnWidth = 140.0;
136 _minColumnWidth = 80.0;
141 _pathSeparator =
"/";
143 _tableDelegates = [];
144 _allowsMultipleSelection = YES;
145 _allowsEmptySelection = YES;
146 _tableViewClass = [_CPBrowserTableView class];
148 _prototypeView = [[
CPTextField alloc] initWithFrame:CGRectMakeZero()];
149 [_prototypeView setVerticalAlignment:CPCenterVerticalTextAlignment];
150 [_prototypeView setValue:[
CPColor whiteColor] forThemeAttribute:"text-color" inState:CPThemeStateSelectedDataView];
151 [_prototypeView setLineBreakMode:CPLineBreakByTruncatingTail];
153 _horizontalScrollView = [[
CPScrollView alloc] initWithFrame:[
self bounds]];
155 [_horizontalScrollView setHasVerticalScroller:NO];
156 [_horizontalScrollView setAutohidesScrollers:YES];
157 [_horizontalScrollView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
159 _contentView = [[
CPView alloc] initWithFrame:CGRectMake(0, 0, 0, CGRectGetHeight([
self bounds]))];
160 [_contentView setAutoresizingMask:CPViewHeightSizable];
162 [_horizontalScrollView setDocumentView:_contentView];
164 [
self addSubview:_horizontalScrollView];
167 - (void)setPrototypeView:(
CPView)aPrototypeView
179 - (void)setDelegate:(
id <CPBrowserDelegate>)anObject
181 if (_delegate === anObject)
184 _delegate = anObject;
185 _implementedDelegateMethods = 0;
186 _delegateSupportsImages = NO;
188 if ([_delegate respondsToSelector:
@selector(browser:acceptDrop:atRow:column:dropOperation:)])
191 if ([_delegate respondsToSelector:
@selector(browser:canDragRowsWithIndexes:inColumn:withEvent:)])
194 if ([_delegate respondsToSelector:
@selector(browser:isLeafItem:)])
197 if ([_delegate respondsToSelector:
@selector(browser:shouldSelectRowIndexes:inColumn:)])
200 if ([_delegate respondsToSelector:
@selector(browser:writeRowsWithIndexes:inColumn:toPasteboard:)])
203 if ([_delegate respondsToSelector:
@selector(browser:validateDrop:proposedRow:column:dropOperation:)])
206 if ([_delegate respondsToSelector:
@selector(browser:imageValueForItem:)])
209 if ([_delegate respondsToSelector:
@selector(browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:)])
212 if ([_delegate respondsToSelector:
@selector(browser:imageValueForItem:)])
214 _delegateSupportsImages = YES;
218 if ([_delegate respondsToSelector:
@selector(browser:selectionIndexesForProposedSelection:inColumn:)])
221 if ([_delegate respondsToSelector:
@selector(browser:numberOfChildrenOfItem:)])
224 if ([_delegate respondsToSelector:
@selector(browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:)])
227 if ([_delegate respondsToSelector:
@selector(browser:child:ofItem:)])
230 if ([_delegate respondsToSelector:
@selector(browser:objectValueForItem:)])
233 if ([_delegate respondsToSelector:
@selector(rootItemForBrowser:)])
236 if ([_delegate respondsToSelector:
@selector(browser:didChangeLastColumn:toColumn:)])
239 if ([_delegate respondsToSelector:
@selector(browser:didChangeLastColumn:)])
242 if ([_delegate respondsToSelector:
@selector(browserSelectionIsChanging:)])
245 if ([_delegate respondsToSelector:
@selector(browserSelectionDidChange:)])
258 return _tableViews[index];
263 return [_tableViews indexOfObject:aTableView];
266 - (void)loadColumnZero
268 _rootItem = [
self _sendDelegateRootItemForBrowser];
274 - (void)setLastColumn:(CPInteger)columnIndex
279 var oldValue = _tableViews.length - 1,
283 [_tableViews[columnIndex - 1] setNeedsDisplay:YES];
285 [_tableViews[columnIndex] setNeedsDisplay:YES];
287 [[_tableViews.slice(indexPlusOne) valueForKey:"enclosingScrollView"]
288 makeObjectsPerformSelector:@selector(removeFromSuperview)];
290 _tableViews = _tableViews.slice(0, indexPlusOne);
291 _tableDelegates = _tableDelegates.slice(0, indexPlusOne);
293 [
self _sendDelegateBrowserDidChangeLastColumn:oldValue toColumn:columnIndex];
300 return _tableViews.length - 1;
306 lastColumn = _tableViews[lastIndex],
307 selectionIndexes = [
lastColumn selectedRowIndexes];
309 if (lastIndex >= 0 && [selectionIndexes count] > 1)
311 reason:"Can't add column, column "+lastIndex+" has invalid selection."];
313 var index = lastIndex + 1,
314 item = index === 0 ? _rootItem : [_tableDelegates[lastIndex] childAtIndex:[selectionIndexes firstIndex]];
316 if (index > 0 && item && [
self isLeafItem:item])
319 var table = [[_tableViewClass alloc] initWithFrame:CGRectMakeZero() browser:self];
321 [table setHeaderView:nil];
322 [table setCornerView:nil];
323 [table setAllowsMultipleSelection:_allowsMultipleSelection];
324 [table setAllowsEmptySelection:_allowsEmptySelection];
327 [
self _addTableColumnsToTableView:table forColumnIndex:index];
329 var
delegate = [[_CPBrowserTableDelegate alloc] init];
336 _tableViews[index] = table;
339 [table setDelegate:delegate];
340 [table setDataSource:delegate];
341 [table setTarget:delegate];
342 [table setAction:@selector(_tableViewClicked:)];
343 [table setDoubleAction:@selector(_tableViewDoubleClicked:)];
344 [table setDraggingDestinationFeedbackStyle:CPTableViewDraggingDestinationFeedbackStyleRegular];
346 var scrollView = [[_CPBrowserScrollView alloc] initWithFrame:CGRectMakeZero()];
347 [scrollView _setBrowser:self];
348 [scrollView setDocumentView:table];
349 [scrollView setHasHorizontalScroller:NO];
350 [scrollView setAutoresizingMask:CPViewHeightSizable];
352 [_contentView addSubview:scrollView];
359 - (void)_addTableColumnsToTableView:(
CPTableView)aTableView forColumnIndex:(
unsigned)index
361 if (_delegateSupportsImages)
364 view = [[
CPImageView alloc] initWithFrame:CGRectMakeZero()];
366 [view setImageScaling:CPImageScaleProportionallyDown];
368 [column setDataView:view];
369 [column setResizingMask:CPTableColumnNoResizing];
376 [column setDataView:_prototypeView];
377 [column setResizingMask:CPTableColumnNoResizing];
382 view = [[_CPBrowserLeafView alloc] initWithFrame:CGRectMakeZero()];
384 [view setBranchImage:[
self valueForThemeAttribute:@"image-control-leaf"]];
385 [view setHighlightedBranchImage:[
self valueForThemeAttribute:@"image-control-leaf-pressed"]];
387 [column setDataView:view];
388 [column setResizingMask:CPTableColumnNoResizing];
393 - (void)reloadColumn:(CPInteger)column
402 height = CGRectGetHeight([_contentView
bounds]);
404 for (var i = 0, count = _tableViews.length; i < count; i++)
407 scrollView = [tableView enclosingScrollView],
411 [[tableView tableColumnWithIdentifier:"Image"] setWidth:_imageWidth];
413 [[tableView tableColumnWithIdentifier:"Leaf"] setWidth:_leafWidth];
415 [tableView setRowHeight:_rowHeight];
416 [tableView setFrameSize:CGSizeMake(width - scrollerWidth, tableHeight)];
417 [scrollView setFrameOrigin:CGPointMake(xOrigin, 0)];
418 [scrollView setFrameSize:CGSizeMake(width, height)];
423 [_contentView setFrameSize:CGSizeMake(xOrigin, height)];
426 - (unsigned)rowAtPoint:(CGPoint)aPoint
433 return [tableView rowAtPoint:[tableView convertPoint:aPoint fromView:self]];
436 - (unsigned)columnAtPoint:(CGPoint)aPoint
438 var adjustedPoint = [_contentView convertPoint:aPoint fromView:self];
440 for (var i = 0, count = _tableViews.length; i < count; i++)
442 var
frame = [[_tableViews[i] enclosingScrollView] frame];
443 if (CGRectContainsPoint(
frame, adjustedPoint))
450 - (CGRect)rectOfRow:(
unsigned)aRow inColumn:(
unsigned)aColumn
453 rect = [tableView rectOfRow:aRow];
461 - (id)itemAtRow:(CPInteger)row inColumn:(CPInteger)column
463 return [_tableDelegates[column] childAtIndex:row];
466 - (BOOL)isLeafItem:(
id)item
471 - (id)parentForItemsInColumn:(CPInteger)column
473 return [_tableDelegates[column] _item];
476 - (CPSet)selectedItems
481 index = [selectedIndexes firstIndex];
486 index = [selectedIndexes indexGreaterThanIndex:index];
506 - (void)_column:(
unsigned)columnIndex clickedRow:(
unsigned)rowIndex
508 [
self setLastColumn:columnIndex];
521 - (void)doClick:(
id)sender
526 - (void)doDoubleClick:(
id)sender
543 var previousColumn = column - 1,
552 [_tableViews[column] keyDown:anEvent];
557 - (float)columnContentWidthForColumnWidth:(
float)aWidth
559 var columnSpacing = [_tableViews[0] intercellSpacing].width;
560 return aWidth - (_leafWidth + columnSpacing + (_delegateSupportsImages ? _imageWidth + columnSpacing : 0)) - columnSpacing - [
CPScroller scrollerWidth];
563 - (float)columnWidthForColumnContentWidth:(
float)aWidth
565 var columnSpacing = [_tableViews[0] intercellSpacing].width;
566 return aWidth + (_leafWidth + columnSpacing + (_delegateSupportsImages ? _imageWidth + columnSpacing: 0)) + columnSpacing + [
CPScroller scrollerWidth];
569 - (void)setImageWidth:(
float)aWidth
571 _imageWidth = aWidth;
580 - (void)setMinColumnWidth:(
float)minWidth
582 _minColumnWidth = minWidth;
586 - (float)minColumnWidth
588 return _minColumnWidth;
591 - (void)setWidth:(
float)aWidth ofColumn:(
unsigned)column
593 _columnWidths[column] = aWidth;
595 [
self _sendDelegateBrowserDidResizeColumn:column];
599 - (float)widthOfColumn:(
unsigned)column
601 var
width = _columnWidths[column];
604 width = _defaultColumnWidth;
609 - (void)setRowHeight:(
float)aHeight
611 _rowHeight = aHeight;
621 - (void)scrollColumnToVisible:(
unsigned)columnIndex
626 - (void)scrollRowToVisible:(
unsigned)rowIndex inColumn:(
unsigned)columnIndex
632 - (BOOL)autohidesScroller
634 return [_horizontalScrollView autohidesScrollers];
637 - (void)setAutohidesScroller:(BOOL)shouldHide
639 [_horizontalScrollView setAutohidesScrollers:shouldHide];
644 - (unsigned)selectedRowInColumn:(
unsigned)columnIndex
649 return [_tableViews[columnIndex] selectedRow];
652 - (unsigned)selectedColumn
663 - (void)selectRow:(
unsigned)row inColumn:(
unsigned)column
669 - (BOOL)allowsMultipleSelection
671 return _allowsMultipleSelection;
674 - (void)setAllowsMultipleSelection:(BOOL)shouldAllow
676 if (_allowsMultipleSelection === shouldAllow)
679 _allowsMultipleSelection = shouldAllow;
680 [_tableViews makeObjectsPerformSelector:@selector(setAllowsMultipleSelection:) withObject:shouldAllow];
683 - (BOOL)allowsEmptySelection
685 return _allowsEmptySelection;
688 - (void)setAllowsEmptySelection:(BOOL)shouldAllow
690 if (_allowsEmptySelection === shouldAllow)
693 _allowsEmptySelection = shouldAllow;
694 [_tableViews makeObjectsPerformSelector:@selector(setAllowsEmptySelection:) withObject:shouldAllow];
699 if (column < 0 || column > [
self lastColumn] +1)
705 - (void)selectRowIndexes:(
CPIndexSet)indexSet inColumn:(
unsigned)column
707 if (column < 0 || column > [
self lastColumn] + 1)
710 indexSet = [
self _sendDelegateBrowserSelectionIndexesForProposedSelection:indexSet inColumn:column];
712 if (![
self _sendDelegateBrowserShouldSelectRowIndexes:indexSet inColumn:column])
715 [
self _sendDelegateBrowserSelectionIsChanging];
717 if (column > [
self lastColumn])
726 [
self _sendDelegateBrowserSelectionDidChange];
732 [_contentView setBackgroundColor:aColor];
735 - (BOOL)acceptsFirstResponder
742 - (void)registerForDraggedTypes:(CPArray)types
745 [_tableViews makeObjectsPerformSelector:@selector(registerForDraggedTypes:) withObject:types];
760 _allowsEmptySelection = [aCoder decodeBoolForKey:@"CPBrowserAllowsEmptySelectionKey"];
761 _allowsMultipleSelection = [aCoder decodeBoolForKey:@"CPBrowserAllowsMultipleSelectionKey"];
762 _prototypeView = [aCoder decodeObjectForKey:@"CPBrowserPrototypeViewKey"];
763 _rowHeight = [aCoder decodeFloatForKey:@"CPBrowserRowHeightKey"];
764 _imageWidth = [aCoder decodeFloatForKey:@"CPBrowserImageWidthKey"];
765 _minColumnWidth = [aCoder decodeFloatForKey:@"CPBrowserMinColumnWidthKey"];
766 _columnWidths = [aCoder decodeObjectForKey:@"CPBrowserColumnWidthsKey"];
768 [
self setDelegate:[aCoder decodeObjectForKey:@"CPBrowserDelegateKey"]];
778 var actualSubviews = _subviews;
781 _subviews = actualSubviews;
783 [aCoder encodeBool:[
self autohidesScroller] forKey:@"CPBrowserAutohidesScrollerKey"];
784 [aCoder encodeBool:_allowsEmptySelection forKey:@"CPBrowserAllowsEmptySelectionKey"];
785 [aCoder encodeBool:_allowsMultipleSelection forKey:@"CPBrowserAllowsMultipleSelectionKey"];
786 [aCoder encodeObject:_delegate forKey:@"CPBrowserDelegateKey"];
787 [aCoder encodeObject:_prototypeView forKey:@"CPBrowserPrototypeViewKey"];
788 [aCoder encodeFloat:_rowHeight forKey:@"CPBrowserRowHeightKey"];
789 [aCoder encodeFloat:_imageWidth forKey:@"CPBrowserImageWidthKey"];
790 [aCoder encodeFloat:_minColumnWidth forKey:@"CPBrowserMinColumnWidthKey"];
791 [aCoder encodeObject:_columnWidths forKey:@"CPBrowserColumnWidthsKey"];
797 @implementation _CPBrowserResizeControl :
CPView 805 - (id)initWithFrame:(CGRect)aFrame
807 if (
self = [super initWithFrame:aFrame])
817 - (void)mouseDown:(
CPEvent)anEvent
820 _browser = [[
self superview] _browser];
821 _index = [_browser columnOfTableView:[[
self superview] documentView]];
822 _width = [_browser widthOfColumn:_index];
825 - (void)mouseDragged:(
CPEvent)anEvent
828 [_browser setWidth:_width + deltaX ofColumn:_index];
831 - (void)mouseUp:(
CPEvent)anEvent
839 _CPBrowserResizeControl _resizeControl;
843 - (id)initWithFrame:(CGRect)aFrame
845 if (
self = [super initWithFrame:aFrame])
847 _resizeControl = [[_CPBrowserResizeControl alloc] initWithFrame:CGRectMakeZero()];
848 [
self addSubview:_resizeControl];
854 - (void)reflectScrolledClipView:(
CPClipView)aClipView
856 [
super reflectScrolledClipView:aClipView];
858 var
frame = [_verticalScroller frame];
860 [_verticalScroller setFrameSize:frame.size];
862 var resizeFrame = CGRectMake(CGRectGetMinX(
frame), CGRectGetMaxY(
frame), [
CPScroller scrollerWidth], 14.0);
863 [_resizeControl setFrame:resizeFrame];
873 - (id)initWithFrame:(CGRect)aFrame browser:(
CPBrowser)aBrowser
875 if (
self = [super initWithFrame:aFrame])
881 - (BOOL)acceptsFirstResponder
886 - (void)mouseDown:(
CPEvent)anEvent
888 [
super mouseDown:anEvent];
889 [[
self window] makeFirstResponder:_browser];
902 return ([super _isFocused] || [_browser tableViewInColumn:[_browser selectedColumn]] ===
self);
905 - (BOOL)canDragRowsWithIndexes:(
CPIndexSet)rowIndexes atPoint:(CGPoint)mouseDownPoint
907 return [_browser canDragRowsWithIndexes:rowIndexes inColumn:[_browser columnOfTableView:self] withEvent:[CPApp currentEvent]];
910 - (
CPImage)dragImageForRowsWithIndexes:(
CPIndexSet)dragRows tableColumns:(CPArray)theTableColumns event:(
CPEvent)dragEvent offset:(CGPoint)dragImageOffset
912 return [_browser draggingImageForRowsWithIndexes:dragRows inColumn:[_browser columnOfTableView:self] withEvent:dragEvent offset:dragImageOffset] ||
913 [
super dragImageForRowsWithIndexes:dragRows tableColumns:theTableColumns event:dragEvent offset:dragImageOffset];
916 - (
CPView)dragViewForRowsWithIndexes:(
CPIndexSet)dragRows tableColumns:(CPArray)theTableColumns event:(
CPEvent)dragEvent offset:(CGPoint)dragViewOffset
918 var count = theTableColumns.length;
921 if ([theTableColumns[count]
identifier] ===
"Leaf")
922 [theTableColumns removeObject:theTableColumns[count]];
925 return [_browser draggingViewForRowsWithIndexes:dragRows inColumn:[_browser columnOfTableView:self] withEvent:dragEvent offset:dragViewOffset] ||
926 [
super dragViewForRowsWithIndexes:dragRows tableColumns:theTableColumns event:dragEvent offset:dragViewOffset];
932 @implementation _CPBrowserTableDelegate :
CPObject 940 - (unsigned)numberOfRowsInTableView:(
CPTableView)aTableView
942 return [_delegate browser:_browser numberOfChildrenOfItem:_item];
948 return [_delegate browser:_browser imageValueForItem:[
self childAtIndex:row]];
950 return ![_browser isLeafItem:[
self childAtIndex:row]];
952 return [_delegate browser:_browser objectValueForItem:[
self childAtIndex:row]];
955 - (void)_tableViewDoubleClicked:(
CPTableView)aTableView
957 [_browser doDoubleClick:self];
963 [_browser _column:_index clickedRow:[selectedIndexes count] === 1 ? [selectedIndexes firstIndex] : -1];
968 var selectedIndexes = [[aNotification
object] selectedRowIndexes];
969 [_browser selectRowIndexes:selectedIndexes inColumn:_index];
972 - (id)childAtIndex:(CPUInteger)index
974 return [_delegate browser:_browser child:index ofItem:_item];
977 - (BOOL)
tableView:(
CPTableView)aTableView acceptDrop:(
id)info row:(CPInteger)row dropOperation:(CPTableViewDropOperation)operation
980 return [_delegate browser:_browser acceptDrop:info atRow:row column:_index dropOperation:operation];
985 - (CPDragOperation)
tableView:(
CPTableView)aTableView validateDrop:(
id)info proposedRow:(CPInteger)row proposedDropOperation:(CPTableViewDropOperation)operation
988 return [_delegate browser:_browser validateDrop:info proposedRow:row column:_index dropOperation:operation];
996 return [_delegate browser:_browser writeRowsWithIndexes:rowIndexes inColumn:_index toPasteboard:pboard];
1001 - (BOOL)respondsToSelector:(
SEL)aSelector
1003 if (aSelector ===
@selector(browser:writeRowsWithIndexes:inColumn:toPasteboard:))
1004 return [_delegate respondsToSelector:@selector(browser:writeRowsWithIndexes:inColumn:toPasteboard:)];
1006 return [
super respondsToSelector:aSelector];
1011 @implementation _CPBrowserLeafView :
CPView 1015 CPImage _highlightedBranchImage;
1023 - (void)setObjectValue:(
id)aValue
1026 [
self setNeedsLayout];
1029 - (CGRect)rectForEphemeralSubviewNamed:(
CPString)aName
1031 if (aName ===
"image-view")
1032 return CGRectInset([
self bounds], 1, 1);
1034 return [
super rectForEphemeralSubviewNamed:aName];
1039 if (aName ===
"image-view")
1040 return [[
CPImageView alloc] initWithFrame:CGRectMakeZero()];
1042 return [
super createEphemeralSubviewNamed:aName];
1045 - (void)layoutSubviews
1047 var imageView = [
self layoutEphemeralSubviewNamed:@"image-view"
1048 positioned:CPWindowAbove
1049 relativeToEphemeralSubviewNamed:nil],
1050 isHighlighted = [
self hasThemeState:CPThemeStateSelectedDataView];
1052 [imageView setImage: _isLeaf ? (isHighlighted ? _highlightedBranchImage : _branchImage) : nil];
1053 [imageView setImageScaling:CPImageScaleNone];
1056 - (void)encodeWithCoder:(
CPCoder)aCoder
1058 [
super encodeWithCoder:aCoder];
1060 [aCoder encodeBool:_isLeaf forKey:"_CPBrowserLeafViewIsLeafKey"];
1061 [aCoder encodeObject:_branchImage forKey:"_CPBrowserLeafViewBranchImageKey"];
1062 [aCoder encodeObject:_highlightedBranchImage forKey:"_CPBrowserLeafViewHighlightedBranchImageKey"];
1065 - (id)initWithCoder:(
CPCoder)aCoder
1067 if (
self = [super initWithCoder:aCoder])
1069 _isLeaf = [aCoder decodeBoolForKey:"_CPBrowserLeafViewIsLeafKey"];
1070 _branchImage = [aCoder decodeObjectForKey:"_CPBrowserLeafViewBranchImageKey"];
1071 _highlightedBranchImage = [aCoder decodeObjectForKey:"_CPBrowserLeafViewHighlightedBranchImageKey"];
1085 - (id)_sendDelegateRootItemForBrowser
1090 return [_delegate rootItemForBrowser:self];
1097 - (void)_sendDelegateBrowserDidChangeLastColumn:(CPInteger)lastColumn toColumn:(CPInteger)newColumn
1102 [_delegate browser:self didChangeLastColumn:lastColumn toColumn:newColumn];
1109 - (void)_sendDelegateBrowserDidResizeColumn:(CPInteger)column
1114 [_delegate browser:self didResizeColumn:column];
1121 - (void)_sendDelegateBrowserSelectionIsChanging
1126 [_delegate browserSelectionIsChanging:self];
1133 - (BOOL)_sendDelegateBrowserShouldSelectRowIndexes:(
CPIndexSet)anIndexSet inColumn:(CPInteger)aColumn
1138 return [_delegate browser:self shouldSelectRowIndexes:anIndexSet inColumn:aColumn];
1145 - (
CPIndexSet)_sendDelegateBrowserSelectionIndexesForProposedSelection:(
CPIndexSet)anIndexSet inColumn:(CPInteger)aColumn
1150 return [_delegate browser:self selectionIndexesForProposedSelection:anIndexSet inColumn:aColumn];
1157 - (void)_sendDelegateBrowserSelectionDidChange
1162 [_delegate browserSelectionDidChange:self];
1165 - (BOOL)canDragRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(
CPEvent)dragEvent
1168 return [_delegate browser:self canDragRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent];
1173 - (
CPImage)draggingImageForRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(
CPEvent)dragEvent offset:(CGPoint)dragImageOffset
1176 return [_delegate browser:self draggingImageForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset];
1181 - (
CPView)draggingViewForRowsWithIndexes:(
CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(
CPEvent)dragEvent offset:(CGPoint)dragImageOffset
1184 return [_delegate browser:self draggingViewForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset];
1198 return _doubleAction;
1204 - (void)setDoubleAction:(
SEL)aValue
1206 _doubleAction = aValue;
1212 - (Class)tableViewClass
1214 return _tableViewClass;
1220 - (void)setTableViewClass:(Class)aValue
1222 _tableViewClass = aValue;
1228 - (float)defaultColumnWidth
1230 return _defaultColumnWidth;
1236 - (void)setDefaultColumnWidth:(
float)aValue
1238 _defaultColumnWidth = aValue;
var CPBrowserDelegate_browser_draggingViewForRowsWithIndexes_inColumn_withEvent_offset_
Used to implement exception handling (creating & raising).
var CPBrowserDelegate_browser_didChangeLastColumn_toColumn_
void setDelegate:(id< CPBrowserDelegate > anObject)
void selectRowIndexes:inColumn:(CPIndexSet indexSet, [inColumn] unsigned column)
var CPBrowserDelegate_browser_selectionIndexesForProposedSelection_inColumn_
CPIndexSet selectedRowIndexes()
FrameUpdater prototype identifier
void setAutohidesScroller:(BOOL shouldHide)
var CPBrowserDelegate_browser_objectValueForItem_
An object representation of nil.
void setLastColumn:(CPInteger columnIndex)
CPDragOperation CPDragOperationNone
id itemAtRow:inColumn:(CPInteger row, [inColumn] CPInteger column)
CPColor colorWithPatternImage:(CPImage anImage)
unsigned selectedColumn()
CGPoint locationInWindow()
var CPBrowserDelegate_browserSelectionDidChange_
void raise:reason:(CPString aName, [reason] CPString aReason)
CPArray registeredDraggedTypes()
A collection of unique integers.
CPString charactersIgnoringModifiers()
Unarchives objects created using CPKeyedArchiver.
var CPBrowserDelegate_rootItemForBrowser_
A mutable key-value pair collection.
CPScrollView enclosingScrollView()
var CPBrowserDelegate_browserSelectionIsChanging_
var CPBrowserDelegate_browser_draggingImageForRowsWithIndexes_inColumn_withEvent_offset_
void selectRowIndexes:byExtendingSelection:(CPIndexSet rows, [byExtendingSelection] BOOL shouldExtendSelection)
void addTableColumn:(CPTableColumn aTableColumn)
var CPBrowserDelegate_browser_shouldSelectRowIndexes_inColumn_
Implements keyed archiving of object graphs (e.g. for storing data).
float widthOfColumn:(unsigned column)
An immutable string (collection of characters).
CGPoint convertPoint:fromView:(CGPoint aPoint, [fromView] CPView aView)
var CPBrowserDelegate_browser_acceptDrop_atRow_column_dropOperation_
unsigned selectedRowInColumn:(unsigned columnIndex)
BOOL sendAction:to:(SEL anAction, [to] id anObject)
var CPBrowserDelegate_browser_numberOfChildrenOfItem_
id initWithCoder:(CPCoder aCoder)
var CPBrowserDelegate_browser_didResizeColumn_
var CPBrowserDelegate_browser_isLeafItem_
A notification that can be posted to a CPNotificationCenter.
CPTableView tableViewInColumn:(unsigned index)
void scrollColumnToVisible:(unsigned columnIndex)
var CPBrowserDelegate_browser_imageValueForItem_
var CPBrowserDelegate_browser_canDragRowsWithIndexes_inColumn_withEvent_
Defines methods for use when archiving & restoring (enc/decoding).
unsigned columnAtPoint:(CGPoint aPoint)
id unarchiveObjectWithData:(CPData aData)
void setBackgroundColor:(CPColor aColor)
var CPBrowserDelegate_browser_validateDrop_proposedRow_column_dropOperation_
void selectRow:inColumn:(unsigned row, [inColumn] unsigned column)
CPIndexSet selectedRowIndexesInColumn:(unsigned column)
var CPBrowserDelegate_browser_child_ofItem_
void scrollRowToVisible:(int rowIndex)
id indexSetWithIndex:(int anIndex)
void encodeWithCoder:(CPCoder aCoder)
void registerForDraggedTypes:(CPArray pasteboardTypes)
CPData archivedDataWithRootObject:(id anObject)
float columnContentWidthForColumnWidth:(float aWidth)
var CPBrowserDelegate_browser_writeRowsWithIndexes_inColumn_toPasteboard_