Revision: 26242
          http://sourceforge.net/p/bibdesk/svn/26242
Author:   hofman
Date:     2021-06-16 22:33:56 +0000 (Wed, 16 Jun 2021)
Log Message:
-----------
Use validation control text delegate method

Modified Paths:
--------------
    trunk/bibdesk/BDSKDocumentInfoWindowController.m

Modified: trunk/bibdesk/BDSKDocumentInfoWindowController.m
===================================================================
--- trunk/bibdesk/BDSKDocumentInfoWindowController.m    2021-06-16 15:05:22 UTC 
(rev 26241)
+++ trunk/bibdesk/BDSKDocumentInfoWindowController.m    2021-06-16 22:33:56 UTC 
(rev 26242)
@@ -163,64 +163,68 @@
     NSString *key = [keys objectAtIndex:row];
     NSString *value = [[[info objectForKey:key] retain] autorelease];
     
-    if([[tableColumn identifier] isEqualToString:@"key"]){
+    if ([[tableColumn identifier] isEqualToString:@"key"]) {
                
-               if([object isEqualToString:@""]){
-                       [tv reloadData];
-            [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 
byExtendingSelection:NO];
-            [tableView editColumn:0 row:row withEvent:nil select:YES];
-               
+               if ([object isEqualToString:@""] == NO && [key 
isCaseInsensitiveEqual:object] == NO) {
+            [info removeObjectForKey:key];
+            [info setObject:value forKey:object];
+            [self refreshKeys];
+        }
+        
+    } else {
+        
+        if ([value isEqualToString:object] == NO)
+            [info setObject:object forKey:key];
+    }
+}
+
+#pragma mark TableView Delegate methods
+
+- (void)tableViewSelectionDidChange:(NSNotification *)notification{
+    [self updateButtons];
+}
+
+#pragma mark TableView Control Delegate methods
+
+- (BOOL)control:(NSControl *)control isValidObject:(id)object {
+    NSInteger row = [tableView editedRow];
+    NSInteger column = [tableView editedColumn];
+    NSString *key = [keys objectAtIndex:row];
+    NSString *value = [[[info objectForKey:key] retain] autorelease];
+    
+    if (column == 0) {
+        
+        if ([object isEqualToString:@""]) {
             NSAlert *alert = [[[NSAlert alloc] init] autorelease];
             [alert setMessageText:NSLocalizedString(@"Empty Key", @"Message in 
alert dialog when trying to set an empty string for a key")];
             [alert setInformativeText:NSLocalizedString(@"The key can not be 
empty.", @"Informative text in alert dialog when trying to set an empty string 
for a key")];
             [alert beginSheetModalForWindow:[self window] 
completionHandler:NULL];
-                       return;
-               }
+            return NO;
+        }
         
-        if([info objectForKey:object]){
-            if([key isCaseInsensitiveEqual:object] == NO){                     
-                [tv reloadData];
-                [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 
byExtendingSelection:NO];
-                [tableView editColumn:0 row:row withEvent:nil select:YES];
-                
-                NSAlert *alert = [[[NSAlert alloc] init] autorelease];
-                [alert setMessageText:NSLocalizedString(@"Duplicate Key", 
@"Message in alert dialog when trying to add a duplicate key")];
-                [alert setInformativeText:NSLocalizedString(@"The key must be 
unique.", @"Informative text in alert dialog when trying to add a duplicate 
key")];
-                [alert beginSheetModalForWindow:[self window] 
completionHandler:NULL];
-                       }
-            return;
-               }
+        if ([info objectForKey:object] && [key isCaseInsensitiveEqual:object] 
== NO) {
+            NSAlert *alert = [[[NSAlert alloc] init] autorelease];
+            [alert setMessageText:NSLocalizedString(@"Duplicate Key", 
@"Message in alert dialog when trying to add a duplicate key")];
+            [alert setInformativeText:NSLocalizedString(@"The key must be 
unique.", @"Informative text in alert dialog when trying to add a duplicate 
key")];
+            [alert beginSheetModalForWindow:[self window] 
completionHandler:NULL];
+            return NO;
+        }
         
-        [info removeObjectForKey:key];
-        [info setObject:value forKey:object];
-        [self refreshKeys];
+    } else {
         
-    }else{
-        
-        if([value isEqualToString:object]) return;
-        
-        if([value isStringTeXQuotingBalancedWithBraces:YES connected:NO] == 
NO){
+        if ([value isStringTeXQuotingBalancedWithBraces:YES connected:NO] == 
NO) {
             NSAlert *alert = [[[NSAlert alloc] init] autorelease];
             [alert setMessageText:NSLocalizedString(@"Unbalanced Braces", 
@"Message in alert dialog when trying to set a value with unbalanced braces")];
             [alert setInformativeText:NSLocalizedString(@"Braces must be 
balanced within the value.", @"Informative text in alert dialog")];
             [alert beginSheetModalForWindow:[self window] 
completionHandler:NULL];
-            
-            [tv reloadData];
-            [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 
byExtendingSelection:NO];
-            [tableView editColumn:0 row:row withEvent:nil select:YES];
-            return;
-               }
+            return NO;
+        }
         
-        [info setObject:object forKey:key];
     }
+    
+    return YES;
 }
 
-#pragma mark TableView Delegate methods
-
-- (void)tableViewSelectionDidChange:(NSNotification *)notification{
-    [self updateButtons];
-}
-
 #pragma mark Touch Bar
 
 - (NSTouchBar *)makeTouchBar {

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



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to