home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / OPENSTEP / Games / NeXTGo-3.0-MIS / Controller.m < prev    next >
Encoding:
Text File  |  1997-11-03  |  4.6 KB  |  160 lines

  1.  
  2. #import "Controller.h"
  3. #import "GoServer.h"
  4.  
  5. @implementation Controller
  6.  
  7. - init {
  8.  
  9.     id key;
  10.  
  11.     NSEnumerator *enumerator;
  12.  
  13.     [super init];
  14.  
  15.     myGoServers  = [[NSMutableDictionary dictionaryWithDictionary:[ [NSUserDefaults standardUserDefaults] dictionaryForKey:@"GoServers"] ] retain];
  16.  
  17.     enumerator = [myGoServers keyEnumerator];
  18.  
  19.     while ((key = [enumerator nextObject])) {
  20.         id aGoServer = [myGoServers objectForKey:key];
  21.         [myGoServers setObject:[ [ [ [GoServer alloc] init] initFromString:aGoServer] retain] forKey:key];
  22.     }
  23.  
  24.     [myGoServers retain];
  25.     
  26.     return self;
  27. }
  28.  
  29. - (void)awakeFromNib  {
  30.  
  31.     [GoServerSelectionList setDataSource:self];
  32.     [GoServerSelectionList setDelegate:self];
  33.     [GoServerSelectionList sizeLastColumnToFit];
  34.  
  35.     [GoServerSelectionList setDoubleAction:@selector(connectToServer:)];
  36.  
  37. }
  38.  
  39. - openGoServer:sender  {
  40.     [GoServerSelectionPanel makeKeyAndOrderFront:self];
  41.     return self;
  42. }
  43.  
  44. - connect:sender {
  45.     NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
  46.     id server = [myGoServers objectForKey:key];
  47.     [LoginDefinition setTitle:[server serverName]];
  48.     [ServerLogin setStringValue:[server login]];
  49.     [ServerPassword setStringValue:[server password]];
  50.     [ServerPort setIntValue:[server port]];
  51.     [ServerPort selectText:self];
  52.     
  53.     [LoginDefinition makeKeyAndOrderFront:self];
  54.  
  55.     return self;
  56. }
  57.  
  58. - connectToServer:sender {
  59.     NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
  60.     id server = [myGoServers objectForKey:key];
  61.     if ([sender isMemberOfClass:[NSButton class]]) {
  62.     [server setLogin:[ServerLogin stringValue] ];
  63.     [server setPassword:[ServerPassword stringValue] ];
  64.     [server setPort:[ServerPort intValue] ];
  65.         [myGoServers setObject:server forKey:key];
  66.     }
  67.                 /* sender is NSTableView   */
  68.                 /* so server is yet initialized */
  69.     [GoServerSelectionPanel orderOut:self];
  70.     [LoginDefinition orderOut:self];
  71.     [GoApplication connect:server];
  72.     
  73.     return self;    
  74. }
  75.  
  76. - remove:sender {
  77.     id anObject;
  78.     int i, numberOfGoServers;
  79.     NSString *key;
  80.     numberOfGoServers = [myGoServers count];
  81.     key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [GoServerSelectionList selectedRow]];
  82.     [myGoServers removeObjectForKey:key ];
  83.     for (i = [GoServerSelectionList selectedRow]+1; i < numberOfGoServers;i++) {
  84.         [key release];
  85.         key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", i];
  86.         anObject = [myGoServers objectForKey:key];
  87.         [myGoServers removeObjectForKey:key ];
  88.         [key release];
  89.         key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", i-1];
  90.         [myGoServers setObject:anObject forKey:key];
  91.     }
  92.     [GoServerSelectionList reloadData];
  93.     [key release];
  94.     return self;
  95. }
  96.  
  97. - add:sender {
  98.     NSString *key;
  99.     id newServer;
  100.     if (0 == [ [GoServerName stringValue] length]) {
  101.         return self;
  102.     }
  103.     key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", [myGoServers count]];
  104.     newServer = [ [GoServer alloc] init];
  105.     [newServer setServerName:[GoServerName stringValue] ];
  106.     [GoServerName setStringValue:@""];
  107.  
  108.     [myGoServers setObject:newServer forKey:key];
  109.     [GoServerSelectionList reloadData];
  110.     return self;
  111. }
  112.  
  113. /* NSTableView data source methods */
  114.  
  115. - (int)numberOfRowsInTableView:(NSTableView *)theTableView
  116. {
  117.     return [myGoServers count];
  118. }
  119.  
  120. - (id)tableView:(NSTableView *)theTableView
  121.       objectValueForTableColumn:(NSTableColumn *)theColumn
  122.             row:(int)rowIndex
  123. {
  124.     NSString *key = [[NSString alloc] initWithFormat:@"%@%d",@"Server", rowIndex];
  125.     if ([[theColumn identifier] intValue]==0) 
  126.         // only the names should be displayed
  127.         return [ [ [NSString stringWithString:[ [myGoServers objectForKey:key] login]] stringByAppendingString:@"@"] stringByAppendingString:[ [myGoServers objectForKey:key] serverName]];
  128.     else
  129.         return nil;
  130. }
  131.       
  132. @end
  133.  
  134. @implementation Controller(ApplicationDelegate)
  135.  
  136. - (BOOL)applicationShouldTerminate:(id)sender {
  137.  
  138.     id key;
  139.     id defaults = [NSUserDefaults standardUserDefaults];
  140.  
  141.     NSEnumerator *enumerator = [myGoServers keyEnumerator];
  142.  
  143.     while ((key = [enumerator nextObject])) {
  144.         id aGoServer = [myGoServers objectForKey:key];
  145.         [myGoServers setObject:[aGoServer dumpToString] forKey:key];
  146.     }
  147.  
  148.     [defaults setObject:myGoServers forKey:@"GoServers"];
  149.  
  150.     [defaults synchronize];
  151.  
  152.     return YES;
  153. }
  154.  
  155. - (void)applicationDidFinishLaunching:(NSNotification *)notification {
  156.     [GoApplication applicationDidFinishLaunching:notification];
  157. }
  158.  
  159. @end
  160.