This is MiscInfoWindowManager.m in view mode; [Download] [Up]
/*
MiscInfoWindowManager.m
*/
// RCS identification information
static char *rcsID = "$Id:$";
static void __AvoidCompilerWarning(void) {if(!rcsID)__AvoidCompilerWarning();}
// Headers
#import <AppKit/AppKit.h>
#import "MiscAppManager.h"
#import "MiscInfoNibManager.h"
// Class Headers
#import "MiscInfoWindowManager.h"
// Module variables (static variables)
static Class _infoNibManagerClass = nil;
@implementation MiscInfoWindowManager
/*"
MiscInfoWindowManager is a new class in need of a description.
"*/
//-------------------------------------------------------------------
// Class initialization
//-------------------------------------------------------------------
+ (void) initialize
{
if (self == [MiscInfoWindowManager class]) {
[self setInfoNibManagerClass:[MiscInfoNibManager class]];
}
}
//-------------------------------------------------------------------
// Our info manager
//-------------------------------------------------------------------
+ (MiscInfoWindowManager*) defaultInfoWindowManager
/*"
Returns the current info window manager if one exists. If it doesn't
it tries to use the info nib manager returned by #infoNibManagerClass
to load and create the window manager. We return nil if for some
reason we couldn't find nor load the info window manager.
"*/
{
MiscInfoWindowManager* ourInfoWindowManager;
// Try to find our existing info window manager.
ourInfoWindowManager =
[MiscWindowManager windowManagerOfClass:[self class]];
// If it doesn't exist then load it by loading our info nib
// manager.
if (ourInfoWindowManager == nil) {
MiscInfoNibManager* infoNibManager;
infoNibManager = [[[self infoNibManagerClass] alloc]
initWithBundle:[NSBundle bundleForClass:[self class]]];
// Should probably check whether the object created is
// a subclass of MiscInfoNibManager I suppose.
ourInfoWindowManager = [infoNibManager infoWindowManager];
}
return ourInfoWindowManager;
}
//-------------------------------------------------------------------
// Our info nib manager class
//-------------------------------------------------------------------
+ (Class) infoNibManagerClass
/*"
Returns the info nib manager class that will be loaded to create
a new instance of ourself. Our #defaultInfoWindowManager uses this
method to allocate and initialize our info window manager if it
doesn't already exist.
"*/
{
return _infoNibManagerClass;
}
+ (void) setInfoNibManagerClass:(Class)newInfoNibManagerClass
{
_infoNibManagerClass = newInfoNibManagerClass;
}
//-------------------------------------------------------------------
// Initialization/deallocation
//-------------------------------------------------------------------
- (void) dealloc
/*"
Releases the UI objects I retained.
"*/
{
[_applicationNameTF release];
[_versionTF release];
[_copyrightTF release];
[super dealloc];
}
//-------------------------------------------------------------------
// Accessors
//-------------------------------------------------------------------
- (NSTextField*) applicationNameTF { return _applicationNameTF; }
- (void) setApplicationNameTF:(NSTextField*)newTextField
{
[_applicationNameTF autorelease];
_applicationNameTF = [newTextField retain];
}
- (NSTextField*) versionTF { return _versionTF; }
- (void) setVersionTF:(NSTextField*)newTextField
{
[_versionTF autorelease];
_versionTF = [newTextField retain];
}
- (NSTextField*) copyrightTF { return _copyrightTF; }
- (void) setCopyrightTF:(NSTextField*)newTextField
{
[_copyrightTF autorelease];
_copyrightTF = [newTextField retain];
}
//-------------------------------------------------------------------
// Updating the info panel
//-------------------------------------------------------------------
- (void) updateInfo
/*"
This method put values in all our textfields in the info panel.
It is called from our #makeKeyConditionallyAndOrderFront: method.
"*/
{
NSString* appName = [[NSProcessInfo processInfo] processName];
[[self applicationNameTF] setStringValue:appName];
[[self versionTF] setStringValue:[[NSApp delegate] appVersion]];
// Not sure if I'll add copyright info into the MiscAppManager
// or not.
[[self copyrightTF] setStringValue:@"Copyleft 1996, RightCopy"];
}
//-------------------------------------------------------------------
// Extensions
//-------------------------------------------------------------------
- (void) makeKeyConditionallyAndOrderFront:(id)sender
{
[self updateInfo];
[super makeKeyConditionallyAndOrderFront:sender];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.