This is Controller.m in view mode; [Download] [Up]
#import "Controller.h"
@implementation Controller
- init
{
[super init];
undoManager = [[MiscUndoManager alloc] init];
testValue = 0;
return self;
}
- (void)dealloc
{
[undoManager release];
return [super dealloc];
}
- (void)dec:(id)sender
{
// start a new group
[undoManager startUndo:@"Undo Dec" :@"Redo Inc"];
// set target for undo message
[undoManager setCurrentTarget:self];
// send the undo message
[(id)undoManager inc:sender];
// commit group (group consists only of this record)
[undoManager commitUndo];
// do the actual action
testValue--;
[textField setIntValue:testValue];
[textField display];
}
- (void)inc:(id)sender
{
// start a new group
[undoManager startUndo:@"Undo Inc" :@"Redo Dec"];
// set target for undo message
[undoManager setCurrentTarget:self];
// send the undo message
[(id)undoManager dec:sender];
// commit group (group consists only of this record)
[undoManager commitUndo];
// do the actual action
testValue++;
[textField setIntValue:testValue];
[textField display];
}
- (void)redo:(id)sender
{
[undoManager redo];
}
- (void)undo:(id)sender
{
[undoManager undo];
}
- (BOOL)validateMenuItem:(NSMenuItem *)anItem
{
NSString *menuTitle = [anItem title];
if([menuTitle hasPrefix:@"Undo"]){
if([undoManager numberOfUndos] == 0){
[anItem setTitle:@"Undo"];
return NO;
}
[anItem setTitle:[undoManager undoName]];
return YES;
}
if([menuTitle hasPrefix:@"Redo"]){
if([undoManager numberOfRedos] == 0){
[anItem setTitle:@"Redo"];
return NO;
}
[anItem setTitle:[undoManager redoName]];
return YES;
}
return YES;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.