Revision: 10953
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=10953&view=rev
Author:   hofman
Date:     2007-08-20 09:58:46 -0700 (Mon, 20 Aug 2007)

Log Message:
-----------
Implement dragging in bookmark windows to rearrange bookmarks. Drop a URL or a 
webloc file on the bookmark window to add a new bookmark.

Implement undo in bookmark windows.

Implement delete in bookmark tables.

Also use custom data objects for search bookmarks to allow undo and change 
notifications for saving.

Disable table sort in bookmark tables.

Modified Paths:
--------------
    trunk/bibdesk/BDSKBookmarkController.h
    trunk/bibdesk/BDSKBookmarkController.m
    trunk/bibdesk/BDSKSearchBookmarkController.h
    trunk/bibdesk/BDSKSearchBookmarkController.m
    trunk/bibdesk/BibAppController.m
    trunk/bibdesk/BibDocument_Groups.m
    trunk/bibdesk/English.lproj/BookmarksWindow.nib/classes.nib
    trunk/bibdesk/English.lproj/BookmarksWindow.nib/keyedobjects.nib
    trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/classes.nib
    trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/info.nib
    trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/keyedobjects.nib
    trunk/bibdesk/French.lproj/BookmarksWindow.nib/classes.nib
    trunk/bibdesk/French.lproj/BookmarksWindow.nib/keyedobjects.nib
    trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/classes.nib
    trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/info.nib
    trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/keyedobjects.nib

Modified: trunk/bibdesk/BDSKBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.h      2007-08-20 11:31:36 UTC (rev 
10952)
+++ trunk/bibdesk/BDSKBookmarkController.h      2007-08-20 16:58:46 UTC (rev 
10953)
@@ -10,7 +10,9 @@
 
 
 @interface BDSKBookmarkController : NSWindowController {
+    IBOutlet NSTableView *tableView;
     NSMutableArray *bookmarks;
+    NSUndoManager *undoManager;
 }
 
 + (id)sharedBookmarkController;
@@ -23,13 +25,16 @@
 - (void)removeObjectFromBookmarksAtIndex:(unsigned)index;
 
 - (void)addBookmarkWithUrlString:(NSString *)urlString name:(NSString *)name;
-
 - (void)handleApplicationWillTerminateNotification:(NSNotification 
*)notification;
 
+- (NSString *)uniqueName;
+
+- (NSUndoManager *)undoManager;
+
 @end
 
 
[EMAIL PROTECTED] BDSKBookmark : NSObject {
[EMAIL PROTECTED] BDSKBookmark : NSObject <NSCopying> {
     NSString *urlString;
     NSString *name;
 }

Modified: trunk/bibdesk/BDSKBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.m      2007-08-20 11:31:36 UTC (rev 
10952)
+++ trunk/bibdesk/BDSKBookmarkController.m      2007-08-20 16:58:46 UTC (rev 
10953)
@@ -8,7 +8,9 @@
 
 #import "BDSKBookmarkController.h"
 #import "NSFileManager_BDSKExtensions.h"
+#import "BibDocument.h"
 
+static NSString *BDSKBookmarkRowsPboardType = @"BDSKBookmarkRowsPboardType";
 
 @implementation BDSKBookmarkController
 
@@ -23,7 +25,8 @@
 - (id)init {
     if (self = [super init]) {
         bookmarks = [[NSMutableArray alloc] init];
-               
+               undoManager = nil;
+        
                NSString *applicationSupportPath = [[NSFileManager 
defaultManager] currentApplicationSupportPathForCurrentUser]; 
                NSString *bookmarksPath = [applicationSupportPath 
stringByAppendingPathComponent:@"Bookmarks.plist"];
                if ([[NSFileManager defaultManager] 
fileExistsAtPath:bookmarksPath]) {
@@ -44,6 +47,7 @@
 
 - (void)dealloc {
     [bookmarks release];
+    [undoManager release];
     [super dealloc];
 }
 
@@ -51,6 +55,7 @@
 
 - (void)windowDidLoad {
     [self setWindowFrameAutosaveName:@"BDSKBookmarksWindow"];
+    [tableView registerForDraggedTypes:[NSArray 
arrayWithObjects:BDSKBookmarkRowsPboardType, BDSKWeblocFilePboardType, 
NSURLPboardType, nil]];
 }
 
 - (NSArray *)bookmarks {
@@ -59,6 +64,7 @@
 
 - (void)setBookmarks:(NSArray *)newBookmarks {
     if (bookmarks != newBookmarks) {
+        [[[self undoManager] prepareWithInvocationTarget:self] 
setBookmarks:[[bookmarks copy] autorelease]];
         [bookmarks release];
         bookmarks = [newBookmarks mutableCopy];
     }
@@ -73,10 +79,12 @@
 }
 
 - (void)insertObject:(id)obj inBookmarksAtIndex:(unsigned)index {
+    [[[self undoManager] prepareWithInvocationTarget:self] 
removeObjectFromBookmarksAtIndex:index];
     [bookmarks insertObject:obj atIndex:index];
 }
 
 - (void)removeObjectFromBookmarksAtIndex:(unsigned)index {
+    [[[self undoManager] prepareWithInvocationTarget:self] 
insertObject:[[[bookmarks objectAtIndex:index] copy] autorelease] 
inBookmarksAtIndex:index];
     [bookmarks removeObjectAtIndex:index];
 }
 
@@ -102,6 +110,94 @@
        [data writeToFile:bookmarksPath atomically:YES];
 }
 
+#pragma mark Undo support
+
+- (NSUndoManager *)undoManager {
+    if(undoManager == nil)
+        undoManager = [[NSUndoManager alloc] init];
+    return undoManager;
+}
+
+- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)sender {
+    return [self undoManager];
+}
+
+#pragma mark NSTableView datasource methods
+
+- (int)numberOfRowsInTableView:(NSTableView *)tv { return 0; }
+
+- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn 
*)tableColumn row:(int)row { return nil; }
+
+- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet 
*)rowIndexes toPasteboard:(NSPasteboard *)pboard {
+    OBASSERT([rowIndexes count] == 1);
+    [pboard declareTypes:[NSArray arrayWithObjects:BDSKBookmarkRowsPboardType, 
nil] owner:nil];
+    [pboard setPropertyList:[NSNumber numberWithUnsignedInt:[rowIndexes 
firstIndex]] forType:BDSKBookmarkRowsPboardType];
+    return YES;
+}
+
+- (NSDragOperation)tableView:(NSTableView *)tv validateDrop:(id 
<NSDraggingInfo>)info proposedRow:(int)row 
proposedDropOperation:(NSTableViewDropOperation)op {
+    NSPasteboard *pboard = [info draggingPasteboard];
+    NSString *type = [pboard availableTypeFromArray:[NSArray 
arrayWithObjects:BDSKBookmarkRowsPboardType, BDSKWeblocFilePboardType, 
NSURLPboardType, nil]];
+    
+    if ([type isEqualToString:BDSKBookmarkRowsPboardType]) {
+        [tv setDropRow:row == -1 ? [tv numberOfRows] : row 
dropOperation:NSTableViewDropAbove];
+        return NSDragOperationMove;
+    } else if (type) {
+        return NSDragOperationEvery;
+    }
+    return NSDragOperationNone;
+}
+
+
+- (BOOL)tableView:(NSTableView *)tv acceptDrop:(id <NSDraggingInfo>)info 
row:(int)row dropOperation:(NSTableViewDropOperation)op {
+    NSPasteboard *pboard = [info draggingPasteboard];
+    NSString *type = [pboard availableTypeFromArray:[NSArray 
arrayWithObjects:BDSKBookmarkRowsPboardType, BDSKWeblocFilePboardType, 
NSURLPboardType, nil]];
+    
+    if ([type isEqualToString:BDSKBookmarkRowsPboardType]) {
+        int draggedRow = [[pboard 
propertyListForType:BDSKBookmarkRowsPboardType] intValue];
+        BDSKBookmark *bookmark = [[bookmarks objectAtIndex:draggedRow] retain];
+        [self removeObjectFromBookmarksAtIndex:draggedRow];
+        [self insertObject:bookmark inBookmarksAtIndex:row < draggedRow ? row 
: row - 1];
+        [bookmark release];
+        [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 
byExtendingSelection:NO];
+        return YES;
+    } else if (type) {
+        NSString *urlString = nil;
+        if ([type isEqualToString:BDSKWeblocFilePboardType])
+            urlString = [pboard stringForType:BDSKWeblocFilePboardType];
+        else if ([type isEqualToString:NSURLPboardType])
+            urlString = [[NSURL URLFromPasteboard:pboard] absoluteString];
+        if (urlString == nil)
+            return NO;
+        if (op == NSTableViewDropOn && row != -1) {
+            [[bookmarks objectAtIndex:row] setUrlString:urlString];
+        } else {
+            if (row == -1)
+                row = [bookmarks count];
+            BDSKBookmark *bookmark = [[BDSKBookmark alloc] 
initWithUrlString:urlString name:[self uniqueName]];
+            [self insertObject:bookmark inBookmarksAtIndex:row];
+            [bookmark release];
+        }
+        return YES;
+    }
+    return NO;
+}
+
+- (void)tableView:(NSTableView *)tv deleteRows:(NSArray *)rows {
+    int row = [[rows lastObject] intValue];
+    [self removeObjectFromBookmarksAtIndex:row];
+}
+
+- (NSString *)uniqueName {
+    NSArray *names = [[self bookmarks] valueForKey:@"name"];
+    NSString *baseName = NSLocalizedString(@"New Boookmark", @"Default name 
for boookmark");
+    NSString *newName = baseName;
+    int i = 0;
+    while ([names containsObject:newName])
+        newName = [baseName stringByAppendingFormat:@" %i", ++i];
+    return newName;
+}
+
 @end
 
 
@@ -116,14 +212,19 @@
 }
 
 - (id)init {
-    return [self initWithUrlString:@"http://"; name:NSLocalizedString(@"New 
Boookmark", @"Default name for boookmark")];
+    return [self initWithUrlString:@"http://"; name:[[BDSKBookmarkController 
sharedBookmarkController] uniqueName]];
 }
 
 - (id)initWithDictionary:(NSDictionary *)dictionary {
     return [self initWithUrlString:[dictionary objectForKey:@"URLString"] 
name:[dictionary objectForKey:@"Title"]];
 }
 
+- (id)copyWithZone:(NSZone *)aZone {
+    return [[[self class] allocWithZone:aZone] initWithUrlString:urlString 
name:name];
+}
+
 - (void)dealloc {
+    [[[BDSKBookmarkController sharedBookmarkController] undoManager] 
removeAllActionsWithTarget:self];
     [urlString release];
     [name release];
     [super dealloc];
@@ -143,6 +244,8 @@
 
 - (void)setUrlString:(NSString *)newUrlString {
     if (urlString != newUrlString) {
+        NSUndoManager *undoManager = [[BDSKBookmarkController 
sharedBookmarkController] undoManager];
+        [[undoManager prepareWithInvocationTarget:self] 
setUrlString:urlString];
         [urlString release];
         urlString = [newUrlString retain];
     }
@@ -168,6 +271,8 @@
 
 - (void)setName:(NSString *)newName {
     if (name != newName) {
+        NSUndoManager *undoManager = [[BDSKBookmarkController 
sharedBookmarkController] undoManager];
+        [(BDSKBookmark *)[undoManager prepareWithInvocationTarget:self] 
setName:name];
         [name release];
         name = [newName retain];
     }

Modified: trunk/bibdesk/BDSKSearchBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.h        2007-08-20 11:31:36 UTC 
(rev 10952)
+++ trunk/bibdesk/BDSKSearchBookmarkController.h        2007-08-20 16:58:46 UTC 
(rev 10953)
@@ -42,6 +42,7 @@
 @interface BDSKSearchBookmarkController : NSWindowController {
     IBOutlet NSTableView *tableView;
     NSMutableArray *bookmarks;
+    NSUndoManager *undoManager;
 }
 
 + (id)sharedBookmarkController;
@@ -53,6 +54,29 @@
 - (void)insertObject:(id)obj inBookmarksAtIndex:(unsigned)index;
 - (void)removeObjectFromBookmarksAtIndex:(unsigned)index;
 
+- (void)addBookmarkWithInfo:(NSDictionary *)info label:(NSString *)label;
+
 - (void)saveBookmarks;
+- (void)handleSearchBookmarkChangedNotification:(NSNotification *)notification;
 
+- (NSUndoManager *)undoManager;
+
 @end
+
+
[EMAIL PROTECTED] BDSKSearchBookmark : NSObject <NSCopying> {
+    NSString *label;
+    NSDictionary *info;
+}
+
+- (id)initWithInfo:(NSDictionary *)aDictionary label:(NSString *)aLabel;
+- (id)initWithDictionary:(NSDictionary *)dictionary;
+
+- (NSDictionary *)dictionaryValue;
+
+- (NSDictionary *)info;
+
+- (NSString *)label;
+- (void)setLabel:(NSString *)newLabel;
+
[EMAIL PROTECTED]

Modified: trunk/bibdesk/BDSKSearchBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.m        2007-08-20 11:31:36 UTC 
(rev 10952)
+++ trunk/bibdesk/BDSKSearchBookmarkController.m        2007-08-20 16:58:46 UTC 
(rev 10953)
@@ -39,6 +39,8 @@
 #import "BDSKSearchBookmarkController.h"
 #import "BibPrefController.h"
 
+static NSString *BDSKSearchBookmarkRowsPboardType = 
@"BDSKSearchBookmarkRowsPboardType";
+static NSString *BDSKSearchBookmarkChangedNotification = 
@"BDSKSearchBookmarkChangedNotification";
 
 @implementation BDSKSearchBookmarkController
 
@@ -52,30 +54,42 @@
 - (id)init {
     if (self = [super init]) {
         bookmarks = [[NSMutableArray alloc] init];
-        NSEnumerator *bmEnum = [[[OFPreferenceWrapper sharedPreferenceWrapper] 
arrayForKey:BDSKSearchGroupBookmarksKey] objectEnumerator];
-        NSDictionary *bm;
+        NSEnumerator *dictEnum = [[[OFPreferenceWrapper 
sharedPreferenceWrapper] arrayForKey:BDSKSearchGroupBookmarksKey] 
objectEnumerator];
+        NSDictionary *dict;
         
-        while (bm = [bmEnum nextObject]) {
-            bm = [bm mutableCopy];
+        while (dict = [dictEnum nextObject]) {
+            BDSKSearchBookmark *bm = [[BDSKSearchBookmark alloc] 
initWithDictionary:dict];
             [bookmarks addObject:bm];
             [bm release];
         }
+        
+               [[NSNotificationCenter defaultCenter] addObserver:self
+                                                 
selector:@selector(handleSearchBookmarkChangedNotification:)
+                                                     
name:BDSKSearchBookmarkChangedNotification
+                                                   object:nil];
     }
     return self;
 }
 
 - (void)dealloc {
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
     [bookmarks release];
     [super dealloc];
 }
 
 - (NSString *)windowNibName { return @"SearchBookmarksWindow"; }
 
+- (void)windowDidLoad {
+    [self setWindowFrameAutosaveName:@"BDSKSearchBookmarksWindow"];
+    [tableView registerForDraggedTypes:[NSArray 
arrayWithObject:BDSKSearchBookmarkRowsPboardType]];
+}
+
 - (NSArray *)bookmarks {
     return bookmarks;
 }
 
 - (void)setBookmarks:(NSArray *)newBookmarks {
+    [[[self undoManager] prepareWithInvocationTarget:self] 
setBookmarks:[[bookmarks copy] autorelease]];
     return [bookmarks setArray:newBookmarks];
 }
 
@@ -88,32 +102,141 @@
 }
 
 - (void)insertObject:(id)obj inBookmarksAtIndex:(unsigned)index {
+    [[[self undoManager] prepareWithInvocationTarget:self] 
removeObjectFromBookmarksAtIndex:index];
     [bookmarks insertObject:obj atIndex:index];
     [self saveBookmarks];
 }
 
 - (void)removeObjectFromBookmarksAtIndex:(unsigned)index {
+    [[[self undoManager] prepareWithInvocationTarget:self] 
insertObject:[[[bookmarks objectAtIndex:index] copy] autorelease] 
inBookmarksAtIndex:index];
     [bookmarks removeObjectAtIndex:index];
     [self saveBookmarks];
 }
 
+- (void)addBookmarkWithInfo:(NSDictionary *)info label:(NSString *)label {
+    BDSKSearchBookmark *bookmark = [[BDSKSearchBookmark alloc] 
initWithInfo:info label:label];
+    [[self mutableArrayValueForKey:@"bookmarks"] addObject:bookmark];
+    [bookmark release];
+}
+
 - (void)saveBookmarks {
-    [[OFPreferenceWrapper sharedPreferenceWrapper] setObject:bookmarks 
forKey:BDSKSearchGroupBookmarksKey];
+    [[OFPreferenceWrapper sharedPreferenceWrapper] setObject:[bookmarks 
valueForKey:@"dictionaryValue"] forKey:BDSKSearchGroupBookmarksKey];
 }
 
+- (void)handleSearchBookmarkChangedNotification:(NSNotification *)notification 
{
+    [self saveBookmarks];
+}
+
+
+#pragma mark Undo support
+
+- (NSUndoManager *)undoManager {
+    if(undoManager == nil)
+        undoManager = [[NSUndoManager alloc] init];
+    return undoManager;
+}
+
+- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)sender {
+    return [self undoManager];
+}
+
 #pragma mark tableView datasource methods
 
-- (int)numberOfRowsInTableView:(NSTableView *)tv{
-    return [bookmarks count];
+- (int)numberOfRowsInTableView:(NSTableView *)tv { return 0; }
+
+- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn 
*)tableColumn row:(int)row { return nil; }
+
+- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet 
*)rowIndexes toPasteboard:(NSPasteboard *)pboard {
+    OBASSERT([rowIndexes count] == 1);
+    [pboard declareTypes:[NSArray 
arrayWithObjects:BDSKSearchBookmarkRowsPboardType, nil] owner:nil];
+    [pboard setPropertyList:[NSNumber numberWithUnsignedInt:[rowIndexes 
firstIndex]] forType:BDSKSearchBookmarkRowsPboardType];
+    return YES;
 }
 
-- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn 
*)tableColumn row:(int)row{
-    return [[bookmarks objectAtIndex:row] objectForKey:[tableColumn 
identifier]];
+- (NSDragOperation)tableView:(NSTableView *)tv validateDrop:(id 
<NSDraggingInfo>)info proposedRow:(int)row 
proposedDropOperation:(NSTableViewDropOperation)op {
+    NSPasteboard *pboard = [info draggingPasteboard];
+    NSString *type = [pboard availableTypeFromArray:[NSArray 
arrayWithObjects:BDSKSearchBookmarkRowsPboardType, nil]];
+    
+    if (type) {
+        [tv setDropRow:row == -1 ? [tv numberOfRows] : row 
dropOperation:NSTableViewDropAbove];
+        return NSDragOperationMove;
+    }
+    return NSDragOperationNone;
 }
 
-- (void)tableView:(NSTableView *)tv setObjectValue:(id)object 
forTableColumn:(NSTableColumn *)tableColumn row:(int)row{
-    [[bookmarks objectAtIndex:row] setObject:object forKey:[tableColumn 
identifier]];
-    [self saveBookmarks];
+
+- (BOOL)tableView:(NSTableView *)tv acceptDrop:(id <NSDraggingInfo>)info 
row:(int)row dropOperation:(NSTableViewDropOperation)op {
+    NSPasteboard *pboard = [info draggingPasteboard];
+    NSString *type = [pboard availableTypeFromArray:[NSArray 
arrayWithObjects:BDSKSearchBookmarkRowsPboardType, nil]];
+    
+    if (type) {
+        int draggedRow = [[pboard 
propertyListForType:BDSKSearchBookmarkRowsPboardType] intValue];
+        NSDictionary *bookmark = [[bookmarks objectAtIndex:draggedRow] retain];
+        [self removeObjectFromBookmarksAtIndex:draggedRow];
+        [self insertObject:bookmark inBookmarksAtIndex:row < draggedRow ? row 
: row - 1];
+        [bookmark release];
+        [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 
byExtendingSelection:NO];
+        return YES;
+    }
+    return NO;
 }
 
 @end
+
+
[EMAIL PROTECTED] BDSKSearchBookmark
+
+- (id)initWithInfo:(NSDictionary *)aDictionary label:(NSString *)aLabel {
+    if (self = [super init]) {
+        info = [aDictionary copy];
+        label = [aLabel copy];
+    }
+    return self;
+}
+
+- (id)init {
+    [[super init] release];
+    return nil;
+}
+
+- (id)initWithDictionary:(NSDictionary *)dictionary {
+    NSMutableDictionary *dict = [[dictionary mutableCopy] autorelease];
+    [dict removeObjectForKey:@"label"];
+    return [self initWithInfo:dict label:[dictionary objectForKey:@"label"]];
+}
+
+- (id)copyWithZone:(NSZone *)aZone {
+    return [[[self class] allocWithZone:aZone] initWithInfo:info label:label];
+}
+
+- (void)dealloc {
+    [info release];
+    [label release];
+    [super dealloc];
+}
+
+- (NSDictionary *)dictionaryValue {
+    NSMutableDictionary *dictionary = [NSMutableDictionary 
dictionaryWithObjectsAndKeys:label, @"label", nil];
+    [dictionary addEntriesFromDictionary:info];
+    return dictionary;
+}
+
+- (NSDictionary *)info {
+    return info;
+}
+
+- (NSString *)label {
+    return label;
+}
+
+- (void)setLabel:(NSString *)newLabel {
+    if (label != newLabel) {
+        NSUndoManager *undoManager = [[BDSKSearchBookmarkController 
sharedBookmarkController] undoManager];
+        [(BDSKSearchBookmark *)[undoManager prepareWithInvocationTarget:self] 
setLabel:label];
+        [label release];
+        label = [newLabel retain];
+        [[NSNotificationCenter defaultCenter] 
postNotificationName:BDSKSearchBookmarkChangedNotification object:self];
+    }
+}
+
[EMAIL PROTECTED]

Modified: trunk/bibdesk/BibAppController.m
===================================================================
--- trunk/bibdesk/BibAppController.m    2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/BibAppController.m    2007-08-20 16:58:46 UTC (rev 10953)
@@ -557,16 +557,17 @@
         
     } else if ([menu isEqual:searchBookmarksMenu]) {
         
-        NSArray *bookmarks = [[BDSKSearchBookmarkController 
sharedBookmarkController] bookmarks];
-        int i = [menu numberOfItems], iMax = [bookmarks count];
+        BDSKSearchBookmarkController *bmController = 
[BDSKSearchBookmarkController sharedBookmarkController];
+        NSArray *bookmarks = [bmController bookmarks];
+        int i = [menu numberOfItems], iMax = [bmController countOfBookmarks];
         while (--i > 2)
             [menu removeItemAtIndex:i];
         if (iMax > 0)
             [menu addItem:[NSMenuItem separatorItem]];
         for (i = 0; i < iMax; i++) {
-            NSDictionary *bm = [bookmarks objectAtIndex:i];
-            NSMenuItem *item = [menu addItemWithTitle:[bm 
objectForKey:@"label"] action:@selector(newSearchGroupFromBookmark:)  
keyEquivalent:@""];
-            [item setRepresentedObject:bm];
+            BDSKSearchBookmark *bm = [bmController objectInBookmarksAtIndex:i];
+            NSMenuItem *item = [menu addItemWithTitle:[bm label] 
action:@selector(newSearchGroupFromBookmark:)  keyEquivalent:@""];
+            [item setRepresentedObject:[bm info]];
         }
         
     }

Modified: trunk/bibdesk/BibDocument_Groups.m
===================================================================
--- trunk/bibdesk/BibDocument_Groups.m  2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/BibDocument_Groups.m  2007-08-20 16:58:46 UTC (rev 10953)
@@ -991,12 +991,8 @@
 
 - (void)searchBookmarkSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode 
contextInfo:(void *)contextInfo {
     if (returnCode == NSOKButton) {
-        BDSKSearchBookmarkController *bmController = 
[BDSKSearchBookmarkController sharedBookmarkController];
         BDSKGroup *group = [[self selectedGroups] lastObject];
-        NSMutableDictionary *bm = [[group dictionaryValue] mutableCopy];
-        [bm setObject:[searchBookmarkField stringValue] forKey:@"label"];
-        [[bmController mutableArrayValueForKey:@"bookmarks"] addObject:bm];
-        [bm release];
+        [[BDSKSearchBookmarkController sharedBookmarkController] 
addBookmarkWithInfo:[group dictionaryValue] label:[searchBookmarkField 
stringValue]];
     }
 }
 

Modified: trunk/bibdesk/English.lproj/BookmarksWindow.nib/classes.nib
===================================================================
--- trunk/bibdesk/English.lproj/BookmarksWindow.nib/classes.nib 2007-08-20 
11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/English.lproj/BookmarksWindow.nib/classes.nib 2007-08-20 
16:58:46 UTC (rev 10953)
@@ -1,8 +1,10 @@
 {
     IBClasses = (
+        {CLASS = BDSKBookmark; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
         {
             CLASS = BDSKBookmarkController; 
             LANGUAGE = ObjC; 
+            OUTLETS = {tableView = NSTableView; }; 
             SUPERCLASS = NSWindowController; 
         }, 
         {CLASS = BDSKGradientView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 

Modified: trunk/bibdesk/English.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/classes.nib
===================================================================
--- trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/classes.nib   
2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/classes.nib   
2007-08-20 16:58:46 UTC (rev 10953)
@@ -3,6 +3,7 @@
         {
             CLASS = BDSKSearchBookmarkController; 
             LANGUAGE = ObjC; 
+            OUTLETS = {tableView = NSTableView; }; 
             SUPERCLASS = NSWindowController; 
         }, 
         {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }

Modified: trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/info.nib
===================================================================
--- trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/info.nib      
2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/info.nib      
2007-08-20 16:58:46 UTC (rev 10953)
@@ -11,6 +11,6 @@
                <integer>9</integer>
        </array>
        <key>IBSystem Version</key>
-       <string>8P135</string>
+       <string>8R218</string>
 </dict>
 </plist>

Modified: trunk/bibdesk/English.lproj/SearchBookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/French.lproj/BookmarksWindow.nib/classes.nib
===================================================================
--- trunk/bibdesk/French.lproj/BookmarksWindow.nib/classes.nib  2007-08-20 
11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/French.lproj/BookmarksWindow.nib/classes.nib  2007-08-20 
16:58:46 UTC (rev 10953)
@@ -1,8 +1,10 @@
 {
     IBClasses = (
+        {CLASS = BDSKBookmark; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
         {
             CLASS = BDSKBookmarkController; 
             LANGUAGE = ObjC; 
+            OUTLETS = {tableView = NSTableView; }; 
             SUPERCLASS = NSWindowController; 
         }, 
         {CLASS = BDSKGradientView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 

Modified: trunk/bibdesk/French.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/classes.nib
===================================================================
--- trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/classes.nib    
2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/classes.nib    
2007-08-20 16:58:46 UTC (rev 10953)
@@ -1,8 +1,10 @@
 {
     IBClasses = (
+        {CLASS = BDSKSearchBookmark; LANGUAGE = ObjC; SUPERCLASS = NSObject; 
}, 
         {
             CLASS = BDSKSearchBookmarkController; 
             LANGUAGE = ObjC; 
+            OUTLETS = {tableView = NSTableView; }; 
             SUPERCLASS = NSWindowController; 
         }, 
         {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }

Modified: trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/info.nib
===================================================================
--- trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/info.nib       
2007-08-20 11:31:36 UTC (rev 10952)
+++ trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/info.nib       
2007-08-20 16:58:46 UTC (rev 10953)
@@ -3,10 +3,14 @@
 <plist version="1.0">
 <dict>
        <key>IBDocumentLocation</key>
-       <string>79 78 356 240 0 0 1600 1178 </string>
+       <string>69 58 356 240 0 0 1440 938 </string>
        <key>IBFramework Version</key>
        <string>446.1</string>
+       <key>IBOpenObjects</key>
+       <array>
+               <integer>9</integer>
+       </array>
        <key>IBSystem Version</key>
-       <string>8P2137</string>
+       <string>8R218</string>
 </dict>
 </plist>

Modified: trunk/bibdesk/French.lproj/SearchBookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to