This is ToDoInspector.m in view mode; [Download] [Up]
/*
* ToDoInspector - controller for the inspector panel
*
* You may freely copy, distribute and reuse the code in this example.
* This code is provided AS IS without warranty of any kind, expressed
* or implied, as to its fitness for any particular use.
*
* Copyright 1995 Ralph Zazula (rzazula@next.com). All Rights Reserved.
*
*/
#import "ToDoInspector.h"
#import "ToDoController.h"
#import "ToDoItem.h"
#import "objectLoadNib.h"
#import <appkit/Window.h>
#define _controller _reservedToDoInspector1
/*
* the class for the InspectorPanel - a Panel that
* refuses to become key or main
*/
@interface NoKeyWindow : Panel
@end
@implementation NoKeyWindow
- (BOOL)canBecomeKeyWindow { return NO; }
- (BOOL)canBecomeMainWindow { return NO; }
@end
@implementation ToDoInspector
- awakeFromNib
{
[window setFrameUsingName:"ToDoInspector"];
[window setFrameAutosaveName:"ToDoInspector"];
[window setHideOnDeactivate:YES];
[showPendingSwitch setIntValue:[_controller showPending]];
[showPrivateSwitch setIntValue:[_controller showPrivate]];
[showCompletedSwitch setIntValue:[_controller showCompleted]];
return self;
}
- window
{
if(!window) {
[self loadNib:"Inspector"];
}
return window;
}
- (int)type
{
return [[typeMatrix selectedCell] tag];
}
- switchType:sender
{
id itemList = [_controller selectedItems];
[itemList makeObjectsPerform:@selector(setType:) with:(id)[self type]];
[_controller dirty:self];
[_controller update];
return self;
}
- completed:sender
{
id itemList = [_controller selectedItems];
[itemList makeObjectsPerform:@selector(setCompleted:)
with:(id)[completedSwitch intValue]];
[_controller dirty:self];
[_controller update];
return self;
}
- private:sender
{
id itemList = [_controller selectedItems];
[itemList makeObjectsPerform:@selector(setPrivate:)
with:(id)[privateSwitch intValue]];
[_controller dirty:self];
[_controller update];
return self;
}
- toggleShowPending:sender
{
NXWriteDefault([NXApp appName], "ShowPending", [sender intValue] == 0 ? "NO" : "YES");
[_controller setShowPending:[sender intValue]];
[_controller update];
return self;
}
- toggleShowCompleted:sender
{
NXWriteDefault([NXApp appName], "ShowCompleted", [sender intValue] == 0 ? "NO" : "YES");
[_controller setShowCompleted:[sender intValue]];
[_controller update];
return self;
}
- toggleShowPrivate:sender
{
NXWriteDefault([NXApp appName], "ShowPrivate", [sender intValue] == 0 ? "NO" : "YES");
[_controller setShowPrivate:[sender intValue]];
[_controller update];
return self;
}
- windowDidUpdate:sender
{
id itemList = [_controller selectedItems];
[sender disableFlushWindow];
if(!itemList || ([itemList count] > 1)) {
[typeMatrix setEnabled:NO];
if(!itemList) {
[statusMatrix setEnabled:NO];
} else {
[statusMatrix setEnabled:YES];
}
[createdText setStringValue:""];
[completedText setStringValue:""];
[priorityText setStringValue:""];
} else {
ToDoItem *item = [itemList lastObject];
[typeMatrix setEnabled:YES];
[typeMatrix selectCellWithTag:[item type]];
[statusMatrix setEnabled:YES];
[completedSwitch setIntValue:[item isCompleted]];
[privateSwitch setIntValue:[item isPrivate]];
[createdText setStringValue:[item asciiStartDate]];
if([item isCompleted]) {
[completedText setStringValue:[item asciiCompletedDate]];
} else {
[completedText setStringValue:""];
}
[priorityText setIntValue:[item priority]];
}
[[sender reenableFlushWindow] flushWindow];
return self;
}
@end
@implementation ToDoInspector(Private)
- _setController:anObject
{
_controller = anObject;
return self;
}
- _controller
{
return _controller;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.