This is Controller.m in view mode; [Download] [Up]
#import "Controller.h"
#import "GoServer.h"
@implementation Controller
- init {
id key;
NSEnumerator *enumerator;
[super init];
myGoServers = [[NSMutableDictionary dictionaryWithDictionary:[ [NSUserDefaults standardUserDefaults] dictionaryForKey:@"GoServers"] ] retain];
enumerator = [myGoServers keyEnumerator];
while ((key = [enumerator nextObject])) {
id aGoServer = [myGoServers objectForKey:key];
[myGoServers setObject:[ [ [ [GoServer alloc] init] initFromString:aGoServer] retain] forKey:key];
}
[myGoServers retain];
return self;
}
- (void)awakeFromNib {
[GoServerSelectionList setDataSource:self];
[GoServerSelectionList setDelegate:self];
[GoServerSelectionList sizeLastColumnToFit];
[GoServerSelectionList setDoubleAction:@selector(connectToServer:)];
}
- openGoServer:sender {
[GoServerSelectionPanel makeKeyAndOrderFront:self];
return self;
}
- connect:sender {
NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
id server = [myGoServers objectForKey:key];
[LoginDefinition setTitle:[server serverName]];
[ServerLogin setStringValue:[server login]];
[ServerPassword setStringValue:[server password]];
[ServerPort setIntValue:[server port]];
[ServerPort selectText:self];
[LoginDefinition makeKeyAndOrderFront:self];
return self;
}
- connectToServer:sender {
NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
id server = [myGoServers objectForKey:key];
if ([sender isMemberOfClass:[NSButton class]]) {
[server setLogin:[ServerLogin stringValue] ];
[server setPassword:[ServerPassword stringValue] ];
[server setPort:[ServerPort intValue] ];
[myGoServers setObject:server forKey:key];
}
/* sender is NSTableView */
/* so server is yet initialized */
[GoServerSelectionPanel orderOut:self];
[LoginDefinition orderOut:self];
[GoApplication connect:server];
return self;
}
- remove:sender {
id anObject;
int i, numberOfGoServers;
NSString *key;
numberOfGoServers = [myGoServers count];
key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
[myGoServers removeObjectForKey:key ];
for (i = [GoServerSelectionList selectedRow]+1; i < numberOfGoServers;i++) {
[key release];
key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", i];
anObject = [myGoServers objectForKey:key];
[myGoServers removeObjectForKey:key ];
[key release];
key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", i-1];
[myGoServers setObject:anObject forKey:key];
}
[GoServerSelectionList reloadData];
[key release];
return self;
}
- add:sender {
NSString *key;
id newServer;
if (0 == [ [GoServerName stringValue] length]) {
return self;
}
key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [myGoServers count]];
newServer = [ [GoServer alloc] init];
[newServer setServerName:[GoServerName stringValue] ];
[GoServerName setStringValue:@""];
[myGoServers setObject:newServer forKey:key];
[GoServerSelectionList reloadData];
return self;
}
/* NSTableView data source methods */
- (int)numberOfRowsInTableView:(NSTableView *)theTableView
{
return [myGoServers count];
}
- (id)tableView:(NSTableView *)theTableView
objectValueForTableColumn:(NSTableColumn *)theColumn
row:(int)rowIndex
{
NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", rowIndex];
if ([[theColumn identifier] intValue]==0)
// only the names should be displayed
return [ [ [NSString stringWithString:[ [myGoServers objectForKey:key] login]] stringByAppendingString:@"@"] stringByAppendingString:[ [myGoServers objectForKey:key] serverName]];
else
return nil;
}
@end
@implementation Controller(ApplicationDelegate)
- (BOOL)applicationShouldTerminate:(id)sender {
id key;
id defaults = [NSUserDefaults standardUserDefaults];
NSEnumerator *enumerator = [myGoServers keyEnumerator];
while ((key = [enumerator nextObject])) {
id aGoServer = [myGoServers objectForKey:key];
[myGoServers setObject:[aGoServer dumpToString] forKey:key];
}
[defaults setObject:myGoServers forKey:@"GoServers"];
[defaults synchronize];
return YES;
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[GoApplication applicationDidFinishLaunching:notification];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.