00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "MessagesDataSource.h"
00010
00011
00012 @implementation MessagesDataSource
00013
00014 int maxMessages = 10;
00015 NSMutableArray *messages = nil;
00016
00017 - (id) init {
00018 self = [super init];
00019 if (self != nil) {
00020 universe = [Universe defaultInstance];
00021 messages = [[NSMutableArray alloc] init];
00022 [self newMessage:@"Client started"];
00023 }
00024 return self;
00025 }
00026
00027 - (void) awakeFromNib {
00028 [notificationCenter addObserver:self selector:@selector(newMessage:) name:@"SP_S_MESSAGE"];
00029 [notificationCenter addObserver:self selector:@selector(newMessage:) name:@"SPW_MESSAGE"];
00030 [notificationCenter addObserver:self selector:@selector(newMessageInDictionairy:) name:@"SP_MESSAGE"];
00031
00032
00033
00034
00035
00036
00037
00038
00039 }
00040
00041 - (void) newMessageInDictionairy:(NSDictionary*)package {
00042
00043 NSString *message = [package objectForKey:@"message"];
00044
00045
00046
00047
00048
00049
00050
00051
00052 [self newMessage:message];
00053 }
00054
00055
00056 - (void) newMessage:(NSString *)message {
00057
00058
00059 if (universe == nil) {
00060 return;
00061 }
00062
00063 if (message == nil) {
00064 return;
00065 }
00066
00067
00068 NSLog(@"MessagesDataSource.newMessage (%@)", message);
00069 [messages addObject:message];
00070 if ([messages count] > maxMessages) {
00071 [messages removeObjectAtIndex:0];
00072 }
00073
00074
00075
00076
00077
00078 [messagesList scrollRowToVisible:[messages count] - 1];
00079 }
00080
00081 - (int)numberOfRowsInTableView:(NSTableView *)aTableView {
00082 return [messages count];
00083 }
00084
00085 - (id)tableView:(NSTableView *)aTableView
00086 objectValueForTableColumn:(NSTableColumn *)aTableColumn
00087 row:(int)rowIndex {
00088
00089 NSString *message = [messages objectAtIndex:rowIndex];
00090
00091 return message;
00092 }
00093
00094 @end