This is Controller.m in view mode; [Download] [Up]
/* You may freely copy, distribute, and reuse the code in this example. * NeXT disclaims any warranty of any kind, expressed or implied, as to its * fitness for any particular use. */ #import "Controller.h" #import <objc/List.h> #import <appkit/Matrix.h> #import "FooObject.h" #import "CellScrollView.h" #import "FooCell.h" @implementation Controller - appDidInit:sender { [self addFooObject:self]; [cellScrollView loadCellsFrom:fooObjects]; cellMatrix = [cellScrollView cellMatrix]; return self; } - init { [super init]; fooObjects = [[List alloc] init]; return self; } - free { [fooObjects free]; return [super free]; } - addFooObject:sender { FooObject *fooObject = [[FooObject alloc] init]; [fooObjects addObject:fooObject]; [cellScrollView loadCellsFrom:fooObjects]; /* * Assumptions in this next line: * There are as many fooCells as there are fooObjects * We've added the new fooObject at the end of the list. * We want to display the fooObject we just added and highlight it. * In short, this is a hack. */ [cellMatrix scrollCellToVisible:[fooObjects count]-1 :0]; [cellMatrix selectCellAt:[fooObjects count]-1:0]; return self; } - deleteFooObjects:sender /* * Delete all selected fooObjects. */ { int i; for (i=[cellMatrix cellCount]-1; i>=0; i--) { FooCell *cell = [cellMatrix cellAt:i:0]; if ([cell isHighlighted]) { /* * If a cell is highlighted, remove (and free) the corresponding item * from the list of fooObjects. */ [[fooObjects removeObject:[cell fooObject]] free]; } } [cellScrollView loadCellsFrom:fooObjects]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.