This is ComplexController.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.
* David A. Cheslow disclaims any warranty of any kind, expressed or implied, as to its
* fitness for any particular use.
*/
#import <appkit/Panel.h>
#import <appkit/FormCell.h>
#import <appkit/Button.h>
#import "CWAVScrollView.h"
#import "ComplexController.h"
#import "ComplexObject.h"
@implementation ComplexController
- matrixAction:sender
{
NXRunAlertPanel("Click!","you clicked in the cell for Complex Object # %d", NULL,NULL,NULL,[sender selectedRow]);
return self;
}
- addName:sender
{
id newNameObject = [[ComplexObject alloc] init];
[complexList addObject:newNameObject];
[scrollingList loadCWAVMatrix];
[[scrollingList cwavMatrix] scrollCellToVisible:[complexList count]-1 :0];
[[scrollingList cwavMatrix] selectCellAt:[complexList count]-1:0];
return self;
}
#define LASTNAMETAG 1
#define FIRSTNAMETAG 2
#define MIDDLEINITTAG 3
#define NOTETAG 4
#define RADIOBUTTONSTAG 5
- loadCWAV:cell from:(unsigned)index
{
id currentNameObject = [complexList objectAt:index];
[[cell findControlWithTag:LASTNAMETAG]
setStringValue:(const char *)[currentNameObject lastName]];
[[cell findControlWithTag:FIRSTNAMETAG]
setStringValue:(const char *)[currentNameObject firstName]];
[[cell findControlWithTag:MIDDLEINITTAG]
setStringValue:(const char *)[currentNameObject middleInit]];
[[cell findControlWithTag:NOTETAG]
setStringValue:(const char *)[currentNameObject note]];
[[cell findControlWithTag:RADIOBUTTONSTAG]
selectCellAt:0 :[currentNameObject radioButtonSelected]];
return self;
}
- (unsigned)count
{
return [complexList count];
}
-buttonPressed:sender
{
int indexOfCellWithPressedButton = [sender cellIndexOf:sender];
NXRunAlertPanel("Button Pressed",
"You pressed the button in the cell for Complex Object #%d",
NULL,NULL,NULL, indexOfCellWithPressedButton);
return self;
}
-radioButtonPressed:sender
{
unsigned indexOfCellWithPressedButton = [sender cellIndexOf:sender];
id currentComplexObject;
currentComplexObject = [complexList objectAt:indexOfCellWithPressedButton];
NXRunAlertPanel("Radio Changed",
"You pressed the radio button in the cell for Complex Object #%d, button %d is now pressed",
NULL, NULL,NULL, indexOfCellWithPressedButton,[sender selectedCol]);
[currentComplexObject setRadioButtonSelected:[sender selectedCol]];
return self;
}
- textDidGetKeys:sender isEmpty:(BOOL)flag
{
unsigned indexOfCellWithTextChanged = [sender cellIndexOf:sender];
id currentComplexObject;
id controlWithText = [sender superview];
currentComplexObject = [complexList objectAt:indexOfCellWithTextChanged];
if( [controlWithText isKindOf:[Matrix class]])
{
switch ([controlWithText selectedRow])
{
case 0:
[currentComplexObject setLastName:
(char *)[[controlWithText selectedCell] stringValue]];
break;
case 1:
[currentComplexObject setFirstName:
(char *)[[controlWithText selectedCell] stringValue]];
break;
case 2:
[currentComplexObject setMiddleInit:
(char *)[[controlWithText selectedCell] stringValue]];
break;
}
}
else
{
[currentComplexObject setNote:(char *)[controlWithText stringValue]];
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.