Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base: 9ca45f4e55
...
compare: b19179a2b7
Checking mergeability… Don't worry, you can still create the pull request.
  • 2 commits
  • 18 files changed
  • 0 commit comments
  • 1 contributor
Commits on Sep 06, 2012
@binarybucks messages should now be sorted by date 5fb6054
Commits on Sep 07, 2012
@binarybucks Message style now similar to WebView branch, messages sorted correctl…
…y, autmatic scrolling working when scrolled to bottom
b19179a
View
36 Osprey.xcodeproj/project.pbxproj
@@ -171,6 +171,12 @@
1197356815E9686D002C2BE7 /* XMPPChatStateNotificationModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 1197356715E9686D002C2BE7 /* XMPPChatStateNotificationModule.m */; };
11D1CCC215C3DF3C00FEEF34 /* OSPChat.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 11D1CCC115C3DF3C00FEEF34 /* OSPChat.xcdatamodel */; };
11DCB3AA15F790F3001C8400 /* OSPChatTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3A915F790F3001C8400 /* OSPChatTableView.m */; };
+ 11DCB3B415F91C31001C8400 /* OSPChatArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3B315F91C31001C8400 /* OSPChatArrayController.m */; };
+ 11DCB3B715F91DAE001C8400 /* OSPOutgoingMessageTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3B615F91DAE001C8400 /* OSPOutgoingMessageTableCellView.m */; };
+ 11DCB3BA15F9EF8C001C8400 /* OSPMessageTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3B915F9EF8B001C8400 /* OSPMessageTableCellView.m */; };
+ 11DCB3BD15F9F117001C8400 /* OSPIncommingMessageTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3BC15F9F117001C8400 /* OSPIncommingMessageTableCellView.m */; };
+ 11DCB3CF15FA3BEC001C8400 /* OSPLastIncommingMessageTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3CE15FA3BEB001C8400 /* OSPLastIncommingMessageTableCellView.m */; };
+ 11DCB3D215FA3BF8001C8400 /* OSPLastOutgoingMessageTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11DCB3D115FA3BF7001C8400 /* OSPLastOutgoingMessageTableCellView.m */; };
11EA735815B230BF00EF1DC6 /* rosterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 11EA735715B230BF00EF1DC6 /* rosterView.xib */; };
11ED0C5C15ADE20600F0930E /* sparklePublicDSAKey.pem in Resources */ = {isa = PBXBuildFile; fileRef = 11ED0C5B15ADE20600F0930E /* sparklePublicDSAKey.pem */; };
11ED23C315DFFB9C001A169D /* libidn.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1186EF6C15DFF971003BA0A6 /* libidn.a */; };
@@ -520,6 +526,18 @@
11D1CCC115C3DF3C00FEEF34 /* OSPChat.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = OSPChat.xcdatamodel; path = XMPPFrameworkCustom/OSPChat.xcdatamodel; sourceTree = "<group>"; };
11DCB3A815F790F3001C8400 /* OSPChatTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPChatTableView.h; sourceTree = "<group>"; };
11DCB3A915F790F3001C8400 /* OSPChatTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPChatTableView.m; sourceTree = "<group>"; };
+ 11DCB3B215F91C31001C8400 /* OSPChatArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPChatArrayController.h; sourceTree = "<group>"; };
+ 11DCB3B315F91C31001C8400 /* OSPChatArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPChatArrayController.m; sourceTree = "<group>"; };
+ 11DCB3B515F91DAE001C8400 /* OSPOutgoingMessageTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPOutgoingMessageTableCellView.h; sourceTree = "<group>"; };
+ 11DCB3B615F91DAE001C8400 /* OSPOutgoingMessageTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPOutgoingMessageTableCellView.m; sourceTree = "<group>"; };
+ 11DCB3B815F9EF8B001C8400 /* OSPMessageTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPMessageTableCellView.h; sourceTree = "<group>"; };
+ 11DCB3B915F9EF8B001C8400 /* OSPMessageTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPMessageTableCellView.m; sourceTree = "<group>"; };
+ 11DCB3BB15F9F116001C8400 /* OSPIncommingMessageTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPIncommingMessageTableCellView.h; sourceTree = "<group>"; };
+ 11DCB3BC15F9F117001C8400 /* OSPIncommingMessageTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPIncommingMessageTableCellView.m; sourceTree = "<group>"; };
+ 11DCB3CD15FA3BEA001C8400 /* OSPLastIncommingMessageTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPLastIncommingMessageTableCellView.h; sourceTree = "<group>"; };
+ 11DCB3CE15FA3BEB001C8400 /* OSPLastIncommingMessageTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPLastIncommingMessageTableCellView.m; sourceTree = "<group>"; };
+ 11DCB3D015FA3BF6001C8400 /* OSPLastOutgoingMessageTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSPLastOutgoingMessageTableCellView.h; sourceTree = "<group>"; };
+ 11DCB3D115FA3BF7001C8400 /* OSPLastOutgoingMessageTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSPLastOutgoingMessageTableCellView.m; sourceTree = "<group>"; };
11EA735715B230BF00EF1DC6 /* rosterView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = rosterView.xib; sourceTree = "<group>"; };
11ED0C5B15ADE20600F0930E /* sparklePublicDSAKey.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sparklePublicDSAKey.pem; sourceTree = "<group>"; };
11ED23C415DFFBB2001A169D /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = Osprey/Vendor/Sparkle.framework; sourceTree = "<group>"; };
@@ -1401,6 +1419,18 @@
119164F015A9AFAD0021C203 /* OSPPopoverHeaderView.m */,
11DCB3A815F790F3001C8400 /* OSPChatTableView.h */,
11DCB3A915F790F3001C8400 /* OSPChatTableView.m */,
+ 11DCB3B215F91C31001C8400 /* OSPChatArrayController.h */,
+ 11DCB3B315F91C31001C8400 /* OSPChatArrayController.m */,
+ 11DCB3B815F9EF8B001C8400 /* OSPMessageTableCellView.h */,
+ 11DCB3B915F9EF8B001C8400 /* OSPMessageTableCellView.m */,
+ 11DCB3B515F91DAE001C8400 /* OSPOutgoingMessageTableCellView.h */,
+ 11DCB3B615F91DAE001C8400 /* OSPOutgoingMessageTableCellView.m */,
+ 11DCB3BB15F9F116001C8400 /* OSPIncommingMessageTableCellView.h */,
+ 11DCB3BC15F9F117001C8400 /* OSPIncommingMessageTableCellView.m */,
+ 11DCB3CD15FA3BEA001C8400 /* OSPLastIncommingMessageTableCellView.h */,
+ 11DCB3CE15FA3BEB001C8400 /* OSPLastIncommingMessageTableCellView.m */,
+ 11DCB3D015FA3BF6001C8400 /* OSPLastOutgoingMessageTableCellView.h */,
+ 11DCB3D115FA3BF7001C8400 /* OSPLastOutgoingMessageTableCellView.m */,
);
name = Subclasses;
sourceTree = "<group>";
@@ -1650,6 +1680,12 @@
1186F1F415DFF973003BA0A6 /* DDXMLNode.m in Sources */,
1197356815E9686D002C2BE7 /* XMPPChatStateNotificationModule.m in Sources */,
11DCB3AA15F790F3001C8400 /* OSPChatTableView.m in Sources */,
+ 11DCB3B415F91C31001C8400 /* OSPChatArrayController.m in Sources */,
+ 11DCB3B715F91DAE001C8400 /* OSPOutgoingMessageTableCellView.m in Sources */,
+ 11DCB3BA15F9EF8C001C8400 /* OSPMessageTableCellView.m in Sources */,
+ 11DCB3BD15F9F117001C8400 /* OSPIncommingMessageTableCellView.m in Sources */,
+ 11DCB3CF15FA3BEC001C8400 /* OSPLastIncommingMessageTableCellView.m in Sources */,
+ 11DCB3D215FA3BF8001C8400 /* OSPLastOutgoingMessageTableCellView.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
View
5 Osprey/OSPChatArrayController.h
@@ -0,0 +1,5 @@
+#import <Cocoa/Cocoa.h>
+
+@interface OSPChatArrayController : NSArrayController
+
+@end
View
14 Osprey/OSPChatArrayController.m
@@ -0,0 +1,14 @@
+#import "OSPChatArrayController.h"
+
+@implementation OSPChatArrayController
+- (void)awakeFromNib
+
+{
+ NSLog(@"here");
+ NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:YES];
+ [self setSortDescriptors:[NSArray arrayWithObject:sort]];
+ [super awakeFromNib];
+
+}
+
+@end
View
8 Osprey/OSPChatTableView.h
@@ -1,11 +1,3 @@
-//
-// OSPChatTableView.h
-// Osprey
-//
-// Created by Alexander Rust on 05.09.12.
-// Copyright (c) 2012 IBM Deutschland GmbH. All rights reserved.
-//
-
#import <Cocoa/Cocoa.h>
@interface OSPChatTableView : NSTableView
View
12 Osprey/OSPChatTableView.m
@@ -1,15 +1,11 @@
-//
-// OSPChatTableView.m
-// Osprey
-//
-// Created by Alexander Rust on 05.09.12.
-// Copyright (c) 2012 IBM Deutschland GmbH. All rights reserved.
-//
-
#import "OSPChatTableView.h"
@implementation OSPChatTableView
+- (void) awakeFromNib {
+ [self setIntercellSpacing:NSMakeSize(0.0, 0.0)];
+}
+
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
View
1  Osprey/OSPChatViewController.h
@@ -14,6 +14,7 @@
XMPPJID *remoteJid;
XMPPJID *lastMessageFromJid;
DOMHTMLElement *streakElement;
+ NSMutableDictionary *cachedUsernames;
// NSMutableArray *messageQueue;
View
144 Osprey/OSPChatViewController.m
@@ -2,7 +2,9 @@
#import "NSColor+HexAdditions.h"
#import "Types.h"
#import "XMPPMessage+XEP_0224.h"
+#import "OSPMessageTableCellView.h"
#import "XMPPMessage+XEP_0085.h"
+
typedef enum {
localToRemote = 1,
remoteToLocal = 2,
@@ -79,8 +81,8 @@ - (id)initWithRemoteJid:(XMPPJID*)rjid
// dispatch_suspend(processingQueue);
// processionQueueIsSuspended = YES;
typing = NO;
-
-
+ cachedUsernames = [[NSMutableDictionary alloc] init];
+
}
@@ -98,7 +100,7 @@ - (void) dealloc {
- (void) awakeFromNib {
[self setArrayControllerFetchPredicate];
[self setArrayControllerFilterPredicate];
-
+
[inputField bind:@"hidden" toObject:[[NSApp delegate] connectionController] withKeyPath:@"connectionState" options:[NSDictionary dictionaryWithObjectsAndKeys:@"OSPConnectionStateToNotAuthenticatedTransformer",NSValueTransformerNameBindingOption, nil]];
}
@@ -306,29 +308,141 @@ - (void)controlTextDidBeginEditing:(NSNotification *)notification{
- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
-
- NSTableCellView *view = nil;
+ OSPMessageTableCellView *view = nil;
XMPPMessageArchiving_Message_CoreDataObject *item = [[arrayController arrangedObjects] objectAtIndex:row];
+ BOOL isLastInStreak = [self isLastInStreak:row tableView:tableView item:item];
+
+
+
+
+
if ([item isOutgoing]) {
- view = [tableView makeViewWithIdentifier:@"outgoingMessageCellView" owner:self];
+ if (isLastInStreak && (row != [tableView numberOfRows]-1)) {
+ view = [tableView makeViewWithIdentifier:@"lastOutgoingMessageCellView" owner:self];
+ } else {
+ view = [tableView makeViewWithIdentifier:@"outgoingMessageCellView" owner:self];
+ }
+
} else {
- view = [tableView makeViewWithIdentifier:@"incommingMessageCellView" owner:self];
+ if (isLastInStreak && (row != [tableView numberOfRows]-1)) {
+ view = [tableView makeViewWithIdentifier:@"lastIncommingMessageCellView" owner:self];
+ } else {
+ view = [tableView makeViewWithIdentifier:@"incommingMessageCellView" owner:self];
+ }
}
return view;
}
-- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
+
+//- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row {
+// OSPMessageTableRowView *rowView = nil;
+//
+//// BOOL isFirstInStreak = [self isNewStreak:row];
+// XMPPMessageArchiving_Message_CoreDataObject *item = [[arrayController arrangedObjects] objectAtIndex:row];
//
-// NSInteger numberOfRows = [tableView numberOfRows];
-////
-//// if (numberOfRows > 0)
-//// [tableView scrollRowToVisible:numberOfRows - 1];
-// NSLog(@"row: %lu, %lu numberOfRows ", row, numberOfRows);
-// if (row == numberOfRows-1) {
-// [tableView scrollRowToVisible:numberOfRows - 1];
+// BOOL isLastInStreak = [self isLastInStreak:row tableView:tableView item:item];
+//
+//
+//
+// if ([item isOutgoing]) {
+// if (isLastInStreak) {
+// rowView = [[OSPOutgoingMessageTableRowView alloc] init];
+// } else {
+// rowView = [[OSPFirstOutgoingMessageTableRowView alloc] init];
+// }
+// } else {
+// if (isLastInStreak) {
+// rowView = [[OSPIncommingMessageTableRowView alloc] init];
+// } else {
+// rowView = [[OSPFirstIncommingMessageTableRowView alloc] init];
+// }
// }
+// return rowView;
+//
+//}
+
+- (BOOL)isLastInStreak:(NSInteger)row tableView:(NSTableView*)tableView item:(XMPPMessageArchiving_Message_CoreDataObject *)item{
+ if (row == [tableView numberOfRows]-1) {
+ return YES;
+ }
+
+ XMPPMessageArchiving_Message_CoreDataObject *nextItem = [[arrayController arrangedObjects] objectAtIndex:row+1];
+
+ BOOL currentRowOutgoing = item.isOutgoing;
+ BOOL nextRowOutgoing = nextItem.isOutgoing;
+
+ if ((currentRowOutgoing && nextRowOutgoing) || (!currentRowOutgoing && !nextRowOutgoing)) {
+ return NO;
+ } else {
+ return YES;
+ }
+}
+
+- (BOOL)isFirstInStreak:(NSInteger)row{
+ if (row == 0) {
+ return YES;
+ }
+
+ XMPPMessageArchiving_Message_CoreDataObject *item = [[arrayController arrangedObjects] objectAtIndex:row];
+ XMPPMessageArchiving_Message_CoreDataObject *previousItem = [[arrayController arrangedObjects] objectAtIndex:row-1];
+
+ BOOL currentRowOutgoing = item.isOutgoing;
+ BOOL previousRowOutgoing = previousItem.isOutgoing;
+
+ if ((currentRowOutgoing && previousRowOutgoing) || (!currentRowOutgoing && !previousRowOutgoing)) {
+ return NO;
+ } else {
+ return YES;
+ }
}
+- (NSString*)cachedUsernameForJid:(XMPPJID*)jid {
+
+ NSString *username = [cachedUsernames valueForKey:jid.bare];
+ if (username == nil) {
+ OSPUserStorageObject *user = [[self xmppRosterStorage] userForJID:jid xmppStream:[self xmppStream] managedObjectContext:[self managedObjectContext]];
+
+ username = user.displayName;
+
+ [cachedUsernames setValue:username forKey:jid.bare];
+ }
+ NSLog(@"name: %@", username);
+ return username;
+}
+
+//- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
+//
+//// BOOL previousRowIsOutgoing = NO;
+//// BOOL currentRowIsOutgoing;
+//// BOOL nextRowIsOutgoing = NO;
+//////NSInteger rows = [tableView numberOfRows]-1;
+////
+//////
+//// currentRowIsOutgoing = [((XMPPMessageArchiving_Message_CoreDataObject*)[[arrayController arrangedObjects] objectAtIndex:row]) isOutgoing];
+//////
+////// // Check if we're last
+//// if (row < rows) {
+//// nextRowIsOutgoing = [((XMPPMessageArchiving_Message_CoreDataObject*)[[arrayController arrangedObjects] objectAtIndex:row+1]) isOutgoing];
+//// }
+////
+//// if (row > 0) {
+//// previousRowIsOutgoing = [((XMPPMessageArchiving_Message_CoreDataObject*)[[arrayController arrangedObjects] objectAtIndex:row-1]) isOutgoing];
+//// }
+////
+//// if ((currentRowIsOutgoing && nextRowIsOutgoing && previousRowIsOutgoing) || (!currentRowIsOutgoing && !nextRowIsOutgoing && !previousRowIsOutgoing)) {
+//// // in a streak
+//// return 25.0;
+//// } else if ((currentRowIsOutgoing && !nextRowIsOutgoing && !previousRowIsOutgoing) || (!currentRowIsOutgoing && nextRowIsOutgoing && previousRowIsOutgoing)){
+//// // one between two
+//// return 60.0;
+//// } else {
+//// // first or last in streak
+//// return 40.0;
+//// }
+//// return 45.0;
+//}
+
+
/*!
* @brief Refreshes timer when new text is entered, resends typing notification ajd refreshes timer when user restarts typing
*/
View
5 Osprey/OSPIncommingMessageTableCellView.h
@@ -0,0 +1,5 @@
+#import "OSPMessageTableCellView.h"
+
+@interface OSPIncommingMessageTableCellView : OSPMessageTableCellView
+
+@end
View
21 Osprey/OSPIncommingMessageTableCellView.m
@@ -0,0 +1,21 @@
+#import "OSPIncommingMessageTableCellView.h"
+#import "NSColor+HexAdditions.h"
+@implementation OSPIncommingMessageTableCellView
+
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ // Initialization code here.
+ }
+
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [super drawRect:dirtyRect];
+}
+
+
+@end
View
14 Osprey/OSPLastIncommingMessageTableCellView.h
@@ -0,0 +1,14 @@
+//
+// OSPLastIncommingMessageTableCellView.h
+// Osprey
+//
+// Created by Alexander Rust on 07.09.12.
+// Copyright (c) 2012 IBM Deutschland GmbH. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "OSPMessageTableCellView.h"
+
+@interface OSPLastIncommingMessageTableCellView : OSPMessageTableCellView
+
+@end
View
37 Osprey/OSPLastIncommingMessageTableCellView.m
@@ -0,0 +1,37 @@
+//
+// OSPLastIncommingMessageTableCellView.m
+// Osprey
+//
+// Created by Alexander Rust on 07.09.12.
+// Copyright (c) 2012 IBM Deutschland GmbH. All rights reserved.
+//
+
+#import "OSPLastIncommingMessageTableCellView.h"
+#import "NSColor+HexAdditions.h"
+
+@implementation OSPLastIncommingMessageTableCellView
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ // Initialization code here.
+ }
+
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [super drawRect:dirtyRect];
+
+
+ NSColor *topBorderColor = [NSColor colorFromHexRGB:@"e9e9e9"];
+ NSBezierPath *topBorder = [[NSBezierPath alloc] init];
+
+ [topBorder moveToPoint:NSMakePoint(0.0, 0.0+0.5)];
+ [topBorder lineToPoint:NSMakePoint(self.bounds.size.width, 0.0+0.5)];
+ [topBorderColor set];
+ [topBorder stroke];
+
+}
+@end
View
6 Osprey/OSPLastOutgoingMessageTableCellView.h
@@ -0,0 +1,6 @@
+#import <Cocoa/Cocoa.h>
+#import "OSPOutgoingMessageTableCellView.h"
+
+@interface OSPLastOutgoingMessageTableCellView : OSPOutgoingMessageTableCellView
+
+@end
View
38 Osprey/OSPLastOutgoingMessageTableCellView.m
@@ -0,0 +1,38 @@
+//
+// OSPLastOutgoingMessageTableCellView.m
+// Osprey
+//
+// Created by Alexander Rust on 07.09.12.
+// Copyright (c) 2012 IBM Deutschland GmbH. All rights reserved.
+//
+
+#import "OSPLastOutgoingMessageTableCellView.h"
+#import "NSColor+HexAdditions.h"
+
+@implementation OSPLastOutgoingMessageTableCellView
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ // Initialization code here.
+ }
+
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [super drawRect:dirtyRect];
+
+
+ NSColor *topBorderColor = [NSColor colorFromHexRGB:@"e9e9e9"];
+ NSBezierPath *topBorder = [[NSBezierPath alloc] init];
+
+ [topBorder moveToPoint:NSMakePoint(0.0, 0.0+0.5)];
+ [topBorder lineToPoint:NSMakePoint(self.bounds.size.width, 0.0+0.5)];
+ [topBorderColor set];
+ [topBorder stroke];
+
+}
+@end
+
View
14 Osprey/OSPMessageTableCellView.h
@@ -0,0 +1,14 @@
+#import <Cocoa/Cocoa.h>
+
+@interface OSPMessageTableCellView : NSTableCellView {
+
+}
+
+@property (weak) IBOutlet NSTextField* username;
+@property (weak) IBOutlet NSTextField* body;
+@property (weak) IBOutlet NSTextField* timestamp;
+
+@property (assign) BOOL firstInStreak;
+@property (assign) BOOL lastInStreak;
+
+@end
View
23 Osprey/OSPMessageTableCellView.m
@@ -0,0 +1,23 @@
+#import "OSPMessageTableCellView.h"
+#import "NSColor+HexAdditions.h"
+@implementation OSPMessageTableCellView
+
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ // Initialization code here.
+ }
+
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [super drawRect:dirtyRect];
+ NSColor *textColor = [NSColor colorFromHexRGB:@"969696"];
+ self.body.textColor = textColor;
+ self.timestamp.textColor = textColor;
+}
+
+@end
View
5 Osprey/OSPOutgoingMessageTableCellView.h
@@ -0,0 +1,5 @@
+#import <Cocoa/Cocoa.h>
+#import "OSPMessageTableCellView.h"
+
+@interface OSPOutgoingMessageTableCellView : OSPMessageTableCellView
+@end
View
27 Osprey/OSPOutgoingMessageTableCellView.m
@@ -0,0 +1,27 @@
+#import "OSPOutgoingMessageTableCellView.h"
+#import "NSColor+HexAdditions.h"
+
+@implementation OSPOutgoingMessageTableCellView
+
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ // Initialization code here.
+ }
+
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [super drawRect:dirtyRect];
+ [[NSColor colorFromHexRGB:@"f5f5f5"] set];
+ NSRectFill(dirtyRect);
+
+ [super drawRect:dirtyRect];
+}
+
+
+
+@end
View
624 Osprey/chatView.xib
@@ -138,7 +138,7 @@
<int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">message</string>
- <object class="NSFont" key="NSSupport">
+ <object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
@@ -194,7 +194,7 @@
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
- <double key="NSRowHeight">17</double>
+ <double key="NSRowHeight">35</double>
<int key="NSTvFlags">-633339904</int>
<reference key="NSDelegate"/>
<reference key="NSDataSource"/>
@@ -248,7 +248,7 @@
<reference key="NSVScroller" ref="350058519"/>
<reference key="NSHScroller" ref="66096535"/>
<reference key="NSContentView" ref="389277643"/>
- <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <bytes key="NSScrollAmts">QSAAAEEgAABCFAAAQhQAAA</bytes>
<double key="NSMinMagnification">0.25</double>
<double key="NSMaxMagnification">4</double>
<double key="NSMagnification">1</double>
@@ -262,7 +262,7 @@
<object class="NSUserDefaultsController" id="512110216">
<bool key="NSSharedInstance">YES</bool>
</object>
- <object class="NSTextFieldCell" id="1057418778">
+ <object class="NSTextFieldCell" id="236767139">
<int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
@@ -316,6 +316,14 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
+ <string key="label">tableView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="735700205"/>
+ </object>
+ <int key="connectionID">109</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="716692880"/>
<reference key="destination" ref="1001"/>
@@ -380,7 +388,7 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">textField</string>
+ <string key="label">body</string>
<object class="NSTableCellView" key="source" id="468312945">
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
@@ -389,9 +397,9 @@
<object class="NSTextField" id="52705307">
<reference key="NSNextResponder" ref="468312945"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{15, 0}, {442, 17}}</string>
+ <string key="NSFrame">{{22, 9}, {440, 17}}</string>
<reference key="NSSuperview" ref="468312945"/>
- <reference key="NSNextKeyView" ref="876046563"/>
+ <reference key="NSNextKeyView" ref="484884126"/>
<string key="NSAntiCompressionPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="441197574">
@@ -410,13 +418,41 @@
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
+ <object class="NSTextField" id="484884126">
+ <reference key="NSNextResponder" ref="468312945"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{385, 7}, {60, 17}}</string>
+ <reference key="NSSuperview" ref="468312945"/>
+ <reference key="NSNextKeyView" ref="220667597"/>
+ <string key="NSReuseIdentifierKey">_NS:1535</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="222774350">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">time</string>
+ <reference key="NSSupport" ref="26"/>
+ <string key="NSCellIdentifier">_NS:1535</string>
+ <reference key="NSControlView" ref="484884126"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
</object>
- <string key="NSFrame">{{1, 1}, {457, 17}}</string>
+ <string key="NSFrame">{{1, 1}, {457, 35}}</string>
<reference key="NSNextKeyView" ref="52705307"/>
</object>
<reference key="destination" ref="52705307"/>
</object>
- <int key="connectionID">82</int>
+ <int key="connectionID">121</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">timestamp</string>
+ <reference key="source" ref="468312945"/>
+ <reference key="destination" ref="484884126"/>
+ </object>
+ <int key="connectionID">122</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
@@ -436,47 +472,75 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">textField</string>
- <object class="NSTableCellView" key="source" id="876046563">
+ <string key="label">body</string>
+ <object class="NSTableCellView" key="source" id="642066328">
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="707116881">
- <reference key="NSNextResponder" ref="876046563"/>
+ <object class="NSTextField" id="852309516">
+ <reference key="NSNextResponder" ref="642066328"/>
<int key="NSvFlags">266</int>
- <string key="NSFrameSize">{444, 17}</string>
- <reference key="NSSuperview" ref="876046563"/>
- <reference key="NSNextKeyView" ref="350058519"/>
+ <string key="NSFrame">{{21, 9}, {362, 17}}</string>
+ <reference key="NSSuperview" ref="642066328"/>
+ <reference key="NSNextKeyView" ref="339658995"/>
<string key="NSAntiCompressionPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="647088670">
+ <object class="NSTextFieldCell" key="NSCell" id="486124864">
<int key="NSCellFlags">67108864</int>
- <int key="NSCellFlags2">104861696</int>
+ <int key="NSCellFlags2">37752832</int>
<string key="NSContents">Out</string>
<reference key="NSSupport" ref="20703832"/>
- <reference key="NSControlView" ref="707116881"/>
+ <reference key="NSControlView" ref="852309516"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="339658995">
+ <reference key="NSNextResponder" ref="642066328"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{385, 8}, {58, 17}}</string>
+ <reference key="NSSuperview" ref="642066328"/>
+ <reference key="NSNextKeyView" ref="1059762984"/>
+ <string key="NSReuseIdentifierKey">_NS:1535</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="714075269">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">time</string>
+ <reference key="NSSupport" ref="26"/>
+ <string key="NSCellIdentifier">_NS:1535</string>
+ <reference key="NSControlView" ref="339658995"/>
<reference key="NSBackgroundColor" ref="164054626"/>
<reference key="NSTextColor" ref="594526765"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
- <string key="NSFrame">{{1, 20}, {457, 17}}</string>
- <reference key="NSNextKeyView" ref="707116881"/>
+ <string key="NSFrame">{{1, 75}, {457, 35}}</string>
+ <reference key="NSNextKeyView" ref="852309516"/>
</object>
- <reference key="destination" ref="707116881"/>
+ <reference key="destination" ref="852309516"/>
</object>
- <int key="connectionID">106</int>
+ <int key="connectionID">115</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">timestamp</string>
+ <reference key="source" ref="642066328"/>
+ <reference key="destination" ref="339658995"/>
+ </object>
+ <int key="connectionID">118</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: objectValue.body</string>
- <reference key="source" ref="707116881"/>
- <reference key="destination" ref="876046563"/>
+ <reference key="source" ref="852309516"/>
+ <reference key="destination" ref="642066328"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="707116881"/>
- <reference key="NSDestination" ref="876046563"/>
+ <reference key="NSSource" ref="852309516"/>
+ <reference key="NSDestination" ref="642066328"/>
<string key="NSLabel">value: objectValue.body</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">objectValue.body</string>
@@ -485,6 +549,164 @@
</object>
<int key="connectionID">107</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">body</string>
+ <object class="NSTableCellView" key="source" id="1059762984">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="558830615">
+ <reference key="NSNextResponder" ref="1059762984"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{20, 9}, {363, 17}}</string>
+ <reference key="NSSuperview" ref="1059762984"/>
+ <reference key="NSNextKeyView" ref="90042187"/>
+ <string key="NSAntiCompressionPriority">{250, 750}</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="752891758">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">37752832</int>
+ <string key="NSContents">Out</string>
+ <reference key="NSSupport" ref="20703832"/>
+ <reference key="NSControlView" ref="558830615"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="90042187">
+ <reference key="NSNextResponder" ref="1059762984"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{385, 8}, {58, 17}}</string>
+ <reference key="NSSuperview" ref="1059762984"/>
+ <reference key="NSNextKeyView" ref="350058519"/>
+ <string key="NSReuseIdentifierKey">_NS:1535</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="338245072">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">time</string>
+ <reference key="NSSupport" ref="26"/>
+ <string key="NSCellIdentifier">_NS:1535</string>
+ <reference key="NSControlView" ref="90042187"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 112}, {457, 35}}</string>
+ <reference key="NSNextKeyView" ref="558830615"/>
+ </object>
+ <reference key="destination" ref="558830615"/>
+ </object>
+ <int key="connectionID">132</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">timestamp</string>
+ <reference key="source" ref="1059762984"/>
+ <reference key="destination" ref="90042187"/>
+ </object>
+ <int key="connectionID">133</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: objectValue.body</string>
+ <reference key="source" ref="558830615"/>
+ <reference key="destination" ref="1059762984"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="558830615"/>
+ <reference key="NSDestination" ref="1059762984"/>
+ <string key="NSLabel">value: objectValue.body</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">objectValue.body</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">134</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">body</string>
+ <object class="NSTableCellView" key="source" id="220667597">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="562064434">
+ <reference key="NSNextResponder" ref="220667597"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{23, 9}, {439, 17}}</string>
+ <reference key="NSSuperview" ref="220667597"/>
+ <reference key="NSNextKeyView" ref="598917212"/>
+ <string key="NSAntiCompressionPriority">{250, 750}</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="920563015">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">306188288</int>
+ <string key="NSContents">In</string>
+ <reference key="NSSupport" ref="20703832"/>
+ <reference key="NSControlView" ref="562064434"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="598917212">
+ <reference key="NSNextResponder" ref="220667597"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{385, 7}, {60, 17}}</string>
+ <reference key="NSSuperview" ref="220667597"/>
+ <reference key="NSNextKeyView" ref="642066328"/>
+ <string key="NSReuseIdentifierKey">_NS:1535</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="679455868">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">time</string>
+ <reference key="NSSupport" ref="26"/>
+ <string key="NSCellIdentifier">_NS:1535</string>
+ <reference key="NSControlView" ref="598917212"/>
+ <reference key="NSBackgroundColor" ref="164054626"/>
+ <reference key="NSTextColor" ref="594526765"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 38}, {457, 35}}</string>
+ <reference key="NSNextKeyView" ref="562064434"/>
+ </object>
+ <reference key="destination" ref="562064434"/>
+ </object>
+ <int key="connectionID">140</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">timestamp</string>
+ <reference key="source" ref="220667597"/>
+ <reference key="destination" ref="598917212"/>
+ </object>
+ <int key="connectionID">141</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: objectValue.body</string>
+ <reference key="source" ref="562064434"/>
+ <reference key="destination" ref="220667597"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="562064434"/>
+ <reference key="NSDestination" ref="220667597"/>
+ <string key="NSLabel">value: objectValue.body</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">objectValue.body</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -586,7 +808,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="266162088"/>
<reference ref="468312945"/>
- <reference ref="876046563"/>
+ <reference ref="642066328"/>
+ <reference ref="1059762984"/>
+ <reference ref="220667597"/>
</object>
<reference key="parent" ref="735700205"/>
</object>
@@ -601,6 +825,7 @@
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="52705307"/>
+ <reference ref="484884126"/>
</object>
<reference key="parent" ref="675457163"/>
</object>
@@ -620,31 +845,136 @@
</object>
<object class="IBObjectRecord">
<int key="objectID">100</int>
- <reference key="object" ref="1057418778"/>
+ <reference key="object" ref="236767139"/>
<reference key="parent" ref="1002"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">103</int>
- <reference key="object" ref="876046563"/>
+ <reference key="object" ref="642066328"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="707116881"/>
+ <reference ref="852309516"/>
+ <reference ref="339658995"/>
</object>
<reference key="parent" ref="675457163"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">104</int>
- <reference key="object" ref="707116881"/>
+ <reference key="object" ref="852309516"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="647088670"/>
+ <reference ref="486124864"/>
</object>
- <reference key="parent" ref="876046563"/>
+ <reference key="parent" ref="642066328"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">105</int>
- <reference key="object" ref="647088670"/>
- <reference key="parent" ref="707116881"/>
+ <reference key="object" ref="486124864"/>
+ <reference key="parent" ref="852309516"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">116</int>
+ <reference key="object" ref="339658995"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="714075269"/>
+ </object>
+ <reference key="parent" ref="642066328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">117</int>
+ <reference key="object" ref="714075269"/>
+ <reference key="parent" ref="339658995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">119</int>
+ <reference key="object" ref="484884126"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="222774350"/>
+ </object>
+ <reference key="parent" ref="468312945"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">120</int>
+ <reference key="object" ref="222774350"/>
+ <reference key="parent" ref="484884126"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">127</int>
+ <reference key="object" ref="1059762984"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="90042187"/>
+ <reference ref="558830615"/>
+ </object>
+ <reference key="parent" ref="675457163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">128</int>
+ <reference key="object" ref="90042187"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="338245072"/>
+ </object>
+ <reference key="parent" ref="1059762984"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="558830615"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="752891758"/>
+ </object>
+ <reference key="parent" ref="1059762984"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752891758"/>
+ <reference key="parent" ref="558830615"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="338245072"/>
+ <reference key="parent" ref="90042187"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">135</int>
+ <reference key="object" ref="220667597"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="598917212"/>
+ <reference ref="562064434"/>
+ </object>
+ <reference key="parent" ref="675457163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="598917212"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="679455868"/>
+ </object>
+ <reference key="parent" ref="220667597"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">137</int>
+ <reference key="object" ref="562064434"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="920563015"/>
+ </object>
+ <reference key="parent" ref="220667597"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">138</int>
+ <reference key="object" ref="920563015"/>
+ <reference key="parent" ref="562064434"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">139</int>
+ <reference key="object" ref="679455868"/>
+ <reference key="parent" ref="598917212"/>
</object>
</object>
</object>
@@ -658,10 +988,30 @@
<string>1.IBPluginDependency</string>
<string>10.IBPluginDependency</string>
<string>100.IBPluginDependency</string>
+ <string>103.CustomClassName</string>
<string>103.IBPluginDependency</string>
<string>103.userInterfaceItemIdentifier</string>
<string>104.IBPluginDependency</string>
<string>105.IBPluginDependency</string>
+ <string>116.IBPluginDependency</string>
+ <string>117.IBPluginDependency</string>
+ <string>119.IBPluginDependency</string>
+ <string>120.IBPluginDependency</string>
+ <string>127.CustomClassName</string>
+ <string>127.IBPluginDependency</string>
+ <string>127.userInterfaceItemIdentifier</string>
+ <string>128.IBPluginDependency</string>
+ <string>129.IBPluginDependency</string>
+ <string>130.IBPluginDependency</string>
+ <string>131.IBPluginDependency</string>
+ <string>135.CustomClassName</string>
+ <string>135.IBPluginDependency</string>
+ <string>135.userInterfaceItemIdentifier</string>
+ <string>136.IBPluginDependency</string>
+ <string>137.IBPluginDependency</string>
+ <string>138.IBPluginDependency</string>
+ <string>139.IBPluginDependency</string>
+ <string>41.CustomClassName</string>
<string>41.IBPluginDependency</string>
<string>42.IBPluginDependency</string>
<string>66.IBPluginDependency</string>
@@ -674,6 +1024,7 @@
<string>72.isInViewBasedMode</string>
<string>72.prototypeCellViews</string>
<string>73.IBPluginDependency</string>
+ <string>79.CustomClassName</string>
<string>79.IBPluginDependency</string>
<string>79.userInterfaceItemIdentifier</string>
<string>80.IBPluginDependency</string>
@@ -689,6 +1040,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>OSPOutgoingMessageTableCellView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>outgoingMessageCellView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -696,6 +1048,25 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>OSPLastOutgoingMessageTableCellView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>lastOutgoingMessageCellView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>OSPLastIncommingMessageTableCellView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>lastIncommingMessageCellView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>OSPChatArrayController</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>OSPChatTableView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
@@ -706,9 +1077,12 @@
<object class="NSArray">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="468312945"/>
- <reference ref="876046563"/>
+ <reference ref="220667597"/>
+ <reference ref="642066328"/>
+ <reference ref="1059762984"/>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>OSPIncommingMessageTableCellView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>incommingMessageCellView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -729,9 +1103,181 @@
<reference key="dict.values" ref="1002"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">108</int>
+ <int key="maxID">142</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPChatArrayController</string>
+ <string key="superclassName">NSArrayController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPChatArrayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPChatTableView</string>
+ <string key="superclassName">NSTableView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPChatTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPChatViewController</string>
+ <string key="superclassName">NSViewController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">send:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">send:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">send:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>arrayController</string>
+ <string>inputField</string>
+ <string>scrollView</string>
+ <string>window</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSArrayController</string>
+ <string>NSTextField</string>
+ <string>NSScrollView</string>
+ <string>NSWindow</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>arrayController</string>
+ <string>inputField</string>
+ <string>scrollView</string>
+ <string>window</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">arrayController</string>
+ <string key="candidateClassName">NSArrayController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">inputField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">scrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPChatViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPIncommingMessageTableCellView</string>
+ <string key="superclassName">OSPMessageTableCellView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPIncommingMessageTableCellView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPLastIncommingMessageTableCellView</string>
+ <string key="superclassName">OSPMessageTableCellView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPLastIncommingMessageTableCellView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPLastOutgoingMessageTableCellView</string>
+ <string key="superclassName">OSPOutgoingMessageTableCellView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPLastOutgoingMessageTableCellView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPMessageTableCellView</string>
+ <string key="superclassName">NSTableCellView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>body</string>
+ <string>timestamp</string>
+ <string>username</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>body</string>
+ <string>timestamp</string>
+ <string>username</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">body</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">timestamp</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">username</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPMessageTableCellView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPOutgoingMessageTableCellView</string>
+ <string key="superclassName">OSPMessageTableCellView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPOutgoingMessageTableCellView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OSPTextField</string>
+ <string key="superclassName">NSTextField</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/OSPTextField.h</string>
+ </object>
+ </object>
+ </object>
</object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">

No commit comments for this range

Something went wrong with that request. Please try again.