Revision: 11878
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=11878&view=rev
Author:   hofman
Date:     2007-12-12 05:47:35 -0800 (Wed, 12 Dec 2007)

Log Message:
-----------
Make all custom fieldEditor delegate methods go through NSControl delegate 
methods, implement those in the NSTableView category.

Modified Paths:
--------------
    trunk/bibdesk/BDSKEditor.m
    trunk/bibdesk/BDSKEditorTableView.m
    trunk/bibdesk/BDSKFieldEditor.h
    trunk/bibdesk/NSTableView_BDSKExtensions.m

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2007-12-12 12:54:38 UTC (rev 11877)
+++ trunk/bibdesk/BDSKEditor.m  2007-12-12 13:47:35 UTC (rev 11878)
@@ -2190,8 +2190,8 @@
        }
 }
 
-- (BOOL)tableView:(NSTableView *)tv textViewShouldLinkKeys:(NSTextView 
*)textView forTableColumn:(NSTableColumn *)tableColumn row:(int)row {
-    return [tv isEqual:tableView] && [[tableColumn identifier] 
isEqualToString:@"value"] && [[fields objectAtIndex:row] isCitationField];
+- (BOOL)control:(NSControl *)control textViewShouldLinkKeys:(NSTextView 
*)textView {
+    return [control isEqual:tableView] && [[fields objectAtIndex:[tableView 
editedRow]] isCitationField];
 }
 
 static NSString *queryStringWithCiteKey(NSString *citekey)
@@ -2199,21 +2199,20 @@
     return [NSString stringWithFormat:@"(net_sourceforge_bibdesk_citekey = 
'%@'cd) && ((kMDItemContentType != *) || (kMDItemContentType != 
com.apple.mail.emlx))", citekey];
 }
 
-- (BOOL)tableView:(NSTableView *)tv textView:(NSTextView *)textView 
isValidKey:(NSString *)key forTableColumn:(NSTableColumn *)tableColumn 
row:(int)row {
-    if ([tv isEqual:tableView] == NO || [[tableColumn identifier] 
isEqualToString:@"value"] == NO) {
-        return NO;
-    } else if ([[[publication owner] publications] itemForCiteKey:key] == nil) 
{
-        // don't add a search with the query here, since it gets called on 
every keystroke; the formatter method gets called at the end, or when scrolling
-        NSString *queryString = queryStringWithCiteKey(key);
-        return [[[BDSKPersistentSearch sharedSearch] 
resultsForQuery:queryString attribute:(id)kMDItemPath] count] > 0;
+- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView 
isValidKey:(NSString *)key {
+    if ([control isEqual:tableView]) {
+        if ([[[publication owner] publications] itemForCiteKey:key] == nil) {
+            // don't add a search with the query here, since it gets called on 
every keystroke; the formatter method gets called at the end, or when scrolling
+            NSString *queryString = queryStringWithCiteKey(key);
+            return [[[BDSKPersistentSearch sharedSearch] 
resultsForQuery:queryString attribute:(id)kMDItemPath] count] > 0;
+        }
+        return YES;
     }
-    return YES;
+    return NO;
 }
 
-- (BOOL)tableView:(NSTableView *)tv textView:(NSTextView *)textView 
clickedOnLink:(id)aLink atIndex:(unsigned)charIndex 
forTableColumn:(NSTableColumn *)tableColumn row:(int)row {
-    if ([tv isEqual:tableView] == NO || [[tableColumn identifier] 
isEqualToString:@"value"] == NO) {
-        return NO;
-    } else {
+- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView 
clickedOnLink:(id)aLink atIndex:(unsigned)charIndex {
+    if ([control isEqual:tableView]) {
         BibItem *pub = [[[publication owner] publications] 
itemForCiteKey:aLink];
         if (nil == pub) {
             NSString *path = [[[BDSKPersistentSearch sharedSearch] 
resultsForQuery:queryStringWithCiteKey(aLink) attribute:(id)kMDItemPath] 
firstObject];
@@ -2227,6 +2226,7 @@
         }
         return YES;
     }
+    return NO;
 }
 
 - (BOOL)citationFormatter:(BDSKCitationFormatter *)formatter 
isValidKey:(NSString *)key {

Modified: trunk/bibdesk/BDSKEditorTableView.m
===================================================================
--- trunk/bibdesk/BDSKEditorTableView.m 2007-12-12 12:54:38 UTC (rev 11877)
+++ trunk/bibdesk/BDSKEditorTableView.m 2007-12-12 13:47:35 UTC (rev 11878)
@@ -118,27 +118,4 @@
 
 - (void)highlightSelectionInClipRect:(NSRect)clipRect {}
 
-#pragma mark BDSKFieldEditorDelegate protocol
-
-- (BOOL)textViewShouldLinkKeys:(NSTextView *)textView {
-    int row = [self editedRow], column = [self editedColumn];
-    NSTableColumn *tableColumn = [[self tableColumns] objectAtIndex:column];
-    return [[self delegate] 
respondsToSelector:@selector(tableView:textViewShouldLinkKeys:forTableColumn:row:)]
 &&
-           [[self delegate] tableView:self textViewShouldLinkKeys:textView 
forTableColumn:tableColumn row:row];
-}
-
-- (BOOL)textView:(NSTextView *)textView isValidKey:(NSString *)key{
-    int row = [self editedRow], column = [self editedColumn];
-    NSTableColumn *tableColumn = [[self tableColumns] objectAtIndex:column];
-    return [[self delegate] 
respondsToSelector:@selector(tableView:textView:isValidKey:forTableColumn:row:)]
 &&
-           [[self delegate] tableView:self textView:textView isValidKey:key 
forTableColumn:tableColumn row:row];
-}
-
-- (BOOL)textView:(NSTextView *)textView clickedOnLink:(id)aLink 
atIndex:(unsigned)charIndex{
-    int row = [self editedRow], column = [self editedColumn];
-    NSTableColumn *tableColumn = [[self tableColumns] objectAtIndex:column];
-    return [[self delegate] 
respondsToSelector:@selector(tableView:textView:clickedOnLink:atIndex:forTableColumn:row:)]
 &&
-           [[self delegate] tableView:self textView:textView 
clickedOnLink:aLink atIndex:charIndex forTableColumn:tableColumn row:row];
-}
-
 @end

Modified: trunk/bibdesk/BDSKFieldEditor.h
===================================================================
--- trunk/bibdesk/BDSKFieldEditor.h     2007-12-12 12:54:38 UTC (rev 11877)
+++ trunk/bibdesk/BDSKFieldEditor.h     2007-12-12 13:47:35 UTC (rev 11878)
@@ -54,7 +54,12 @@
 - (BOOL)textView:(NSTextView *)textView isValidKey:(NSString *)key;
 @end
 
+// the above delegate methods could be implemented by calling these delegate 
methods for NSControl subclasses that actually have a delegate
+// currently implemented for NSTableView
 @interface NSControl (NSControlBDSKFieldEditorDelegate)
 - (NSRange)control:(NSControl *)control textView:(NSTextView *)textView 
rangeForUserCompletion:(NSRange)charRange;
 - (BOOL)control:(NSControl *)control textViewShouldAutoComplete:(NSTextView 
*)textView;
+- (BOOL)control:(NSControl *)control textViewShouldLinkKeys:(NSTextView 
*)textView;
+- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView 
isValidKey:(NSString *)key;
+- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView 
clickedOnLink:(id)aLink atIndex:(unsigned)charIndex;
 @end

Modified: trunk/bibdesk/NSTableView_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSTableView_BDSKExtensions.m  2007-12-12 12:54:38 UTC (rev 
11877)
+++ trunk/bibdesk/NSTableView_BDSKExtensions.m  2007-12-12 13:47:35 UTC (rev 
11878)
@@ -37,10 +37,10 @@
  */
 
 #import "NSTableView_BDSKExtensions.h"
-#import "BDSKFieldEditor.h"
 #import "BDSKStringConstants.h"
 #import "NSBezierPath_BDSKExtensions.h"
 #import "NSLayoutManager_BDSKExtensions.h"
+#import "BDSKFieldEditor.h"
 #import <OmniAppKit/OAApplication.h>
 #import <OmniFoundation/OFPreference.h>
 
@@ -127,20 +127,6 @@
     return YES; // we assume that any other implemented action is always valid
 }
 
-#pragma mark Autocompletion
-
-- (NSRange)textView:(NSTextView *)textView 
rangeForUserCompletion:(NSRange)charRange {
-       if (textView == [self currentEditor] && [[self delegate] 
respondsToSelector:@selector(control:textView:rangeForUserCompletion:)]) 
-               return [[self delegate] control:self textView:textView 
rangeForUserCompletion:charRange];
-       return charRange;
-}
-
-- (BOOL)textViewShouldAutoComplete:(NSTextView *)textView {
-       if (textView == [self currentEditor] && [[self delegate] 
respondsToSelector:@selector(control:textViewShouldAutoComplete:)]) 
-               return [(id)[self delegate] control:self 
textViewShouldAutoComplete:textView];
-       return NO;
-}
-
 #pragma mark Font preferences methods
 
 - (NSString *)fontNamePreferenceKey{
@@ -342,4 +328,36 @@
     [self unlockFocus];
 }
 
+#pragma mark BDSKFieldEditor delegate methods for NSControl
+
+- (NSRange)textView:(NSTextView *)textView 
rangeForUserCompletion:(NSRange)charRange {
+       if (textView == [self currentEditor] && [[self delegate] 
respondsToSelector:@selector(control:textView:rangeForUserCompletion:)]) 
+               return [[self delegate] control:self textView:textView 
rangeForUserCompletion:charRange];
+       return charRange;
+}
+
+- (BOOL)textViewShouldAutoComplete:(NSTextView *)textView {
+       if (textView == [self currentEditor] && [[self delegate] 
respondsToSelector:@selector(control:textViewShouldAutoComplete:)]) 
+               return [(id)[self delegate] control:self 
textViewShouldAutoComplete:textView];
+       return NO;
+}
+
+- (BOOL)textViewShouldLinkKeys:(NSTextView *)textView {
+    return textView == [self currentEditor] && 
+           [[self delegate] 
respondsToSelector:@selector(control:textViewShouldLinkKeys:)] &&
+           [[self delegate] control:self textViewShouldLinkKeys:textView];
+}
+
+- (BOOL)textView:(NSTextView *)textView isValidKey:(NSString *)key{
+    return textView == [self currentEditor] && 
+           [[self delegate] 
respondsToSelector:@selector(control:textView:isValidKey:)] &&
+           [[self delegate] control:self textView:textView isValidKey:key];
+}
+
+- (BOOL)textView:(NSTextView *)textView clickedOnLink:(id)aLink 
atIndex:(unsigned)charIndex{
+    return textView == [self currentEditor] && 
+           [[self delegate] 
respondsToSelector:@selector(control:textView:clickedOnLink:atIndex:)] &&
+           [[self delegate] control:self textView:textView clickedOnLink:aLink 
atIndex:charIndex];
+}
+
 @end


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

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to