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
00029 [notificationCenter addObserver:self selector:@selector(newMessage:) name:@"SP_S_MESSAGE"
00030 object:nil useLocks:NO useMainRunLoop:YES];
00031 [notificationCenter addObserver:self selector:@selector(newMessage:) name:@"SPW_MESSAGE"
00032 object:nil useLocks:NO useMainRunLoop:YES];
00033 [notificationCenter addObserver:self selector:@selector(newMessageInDictionairy:) name:@"SP_MESSAGE"
00034 object:nil useLocks:NO useMainRunLoop:YES];
00035
00036
00037
00038
00039
00040
00041
00042
00043 }
00044
00045 - (void) newMessageInDictionairy:(NSDictionary*)package {
00046
00047 NSString *message = [package objectForKey:@"message"];
00048
00049
00050
00051
00052
00053
00054
00055
00056 [self newMessage:message];
00057 }
00058
00059
00060 - (void) newMessage:(NSString *)message {
00061
00062
00063 if (universe == nil) {
00064 return;
00065 }
00066
00067 if (message == nil) {
00068 return;
00069 }
00070
00071
00072 NSLog(@"MessagesDataSource.newMessage (%@)", message);
00073 [messages addObject:message];
00074 if ([messages count] > maxMessages) {
00075 [messages removeObjectAtIndex:0];
00076 }
00077
00078
00079
00080 [messagesList reloadData];
00081
00082 [messagesList scrollRowToVisible:[messages count] - 1];
00083 }
00084
00085 - (int)numberOfRowsInTableView:(NSTableView *)aTableView {
00086 return [messages count];
00087 }
00088
00089 - (id)tableView:(NSTableView *)aTableView
00090 objectValueForTableColumn:(NSTableColumn *)aTableColumn
00091 row:(int)rowIndex {
00092
00093 NSString *message = [messages objectAtIndex:rowIndex];
00094
00095 return message;
00096 }
00097
00098 @end