App/KeyMapTableDataSource.m

00001 //
00002 //  KeyMapTableDataSource.m
00003 //  MacTrek
00004 //
00005 //  Created by Aqua on 26/05/2006.
00006 //  Copyright 2006 Luky Soft. All rights reserved.
00007 //
00008 
00009 #import "KeyMapTableDataSource.h"
00010 
00011 
00012 @implementation KeyMapTableDataSource
00013 
00014 - (id) init {
00015     self = [super init];
00016     if (self != nil) {
00017         // allocate the default map
00018         myMap = [[MTKeyMap alloc] init];
00019         // initial query is in seperate thread
00020        [NSThread detachNewThreadSelector:@selector(readDefaultKeyMap) toTarget:myMap withObject:nil];
00021        // [myMap readDefaultKeyMap]; // except when debugging
00022     }
00023     return self;
00024 }
00025 
00026 - (MTKeyMap *) keyMap {
00027     return myMap;
00028 }
00029 
00030 - (int)numberOfRowsInTableView:(NSTableView *)aTableView {
00031 
00032     if (keyMapTableView == aTableView) {
00033         return [myMap count];
00034     }
00035     return 0;
00036 }
00037 
00038 - (id)tableView:(NSTableView *)aTableView
00039     objectValueForTableColumn:(NSTableColumn *)aTableColumn
00040             row:(int)rowIndex {
00041     
00042     if (keyMapTableView == aTableView) {
00043         NSArray *actionKeys = [myMap allKeys];
00044         int action = [[actionKeys objectAtIndex:rowIndex] intValue];
00045         if ([[aTableColumn identifier] isEqualTo: @"description"]) {
00046             return [myMap descriptionForAction:action];
00047         } else if ([[aTableColumn identifier] isEqualTo: @"key"]) {
00048             return [NSString stringWithFormat:@"%c", [myMap keyForAction:action]];
00049         } else {
00050             return @"ERROR"; // unknown column
00051         }
00052     }
00053     return @"ERROR";
00054 }
00055 
00056 // delegate functions
00057 - (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
00058     if ([[aTableColumn identifier] isEqualToString:@"description"]) {
00059         return NO;
00060     } else {
00061         return YES;
00062     }
00063 }
00064 
00065 - (void)tableView:(NSTableView *)tableView setObjectValue:(id)object
00066    forTableColumn:(NSTableColumn *)column row:(int)row {
00067     
00068     // only the key column is editable
00069     if (tableView == keyMapTableView) {           
00070         NSArray *actionKeys = [myMap allKeys];
00071         int action = [[actionKeys objectAtIndex:row] intValue];
00072         // only accept a single character
00073         // use of a formatter would be better
00074         if ([object length] == 1) {
00075             NSString *newkey = object;
00076             char c = [newkey characterAtIndex:0];
00077             [myMap setKey:c forAction:action];
00078         }
00079     }
00080 }
00081 
00082 
00083 @end

Generated on Sat Aug 26 21:14:07 2006 for MacTrek by  doxygen 1.4.7