Revision: 27713
          http://sourceforge.net/p/bibdesk/svn/27713
Author:   hofman
Date:     2022-07-08 16:41:30 +0000 (Fri, 08 Jul 2022)
Log Message:
-----------
add editor text field button to accessibility tree and make images accessible

Modified Paths:
--------------
    trunk/bibdesk/BDSKEditor.h
    trunk/bibdesk/BDSKEditor.m
    trunk/bibdesk/BDSKEditorTextField.h
    trunk/bibdesk/BDSKEditorTextField.m
    trunk/bibdesk/Base.lproj/BDSKEditor.xib
    trunk/bibdesk/NSImage_BDSKExtensions.m
    trunk/bibdesk/de.lproj/Localizable.strings
    trunk/bibdesk/en.lproj/Localizable.strings
    trunk/bibdesk/fr.lproj/Localizable.strings

Modified: trunk/bibdesk/BDSKEditor.h
===================================================================
--- trunk/bibdesk/BDSKEditor.h  2022-07-08 16:04:15 UTC (rev 27712)
+++ trunk/bibdesk/BDSKEditor.h  2022-07-08 16:41:30 UTC (rev 27713)
@@ -238,3 +238,7 @@
 
 @interface BDSKEditorRowView : NSTableRowView
 @end
+
+
+@interface BDSKEditorCellView : NSTableCellView
+@end

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2022-07-08 16:04:15 UTC (rev 27712)
+++ trunk/bibdesk/BDSKEditor.m  2022-07-08 16:41:30 UTC (rev 27713)
@@ -3728,3 +3728,13 @@
 }
 
 @end
+
+
+@implementation BDSKEditorCellView
+
+- (NSArray *)accessibilityChildren {
+    return NSAccessibilityUnignoredChildren([NSArray arrayWithObjects:[self 
textField], [(BDSKEditorTextField *)[self textField] button], nil]);
+}
+
+@end
+

Modified: trunk/bibdesk/BDSKEditorTextField.h
===================================================================
--- trunk/bibdesk/BDSKEditorTextField.h 2022-07-08 16:04:15 UTC (rev 27712)
+++ trunk/bibdesk/BDSKEditorTextField.h 2022-07-08 16:41:30 UTC (rev 27713)
@@ -45,6 +45,7 @@
 }
 @property (nonatomic) SEL buttonAction;
 @property (nonatomic, retain) id representedObject;
+@property (nonatomic, readonly) NSButton * button;
 @end
 
 

Modified: trunk/bibdesk/BDSKEditorTextField.m
===================================================================
--- trunk/bibdesk/BDSKEditorTextField.m 2022-07-08 16:04:15 UTC (rev 27712)
+++ trunk/bibdesk/BDSKEditorTextField.m 2022-07-08 16:41:30 UTC (rev 27713)
@@ -47,7 +47,7 @@
 @implementation BDSKEditorTextField
 
 @synthesize buttonAction;
-@dynamic representedObject;
+@dynamic representedObject, button;
 
 + (Class)cellClass { return [BDSKComplexStringCell class]; }
 
@@ -120,14 +120,24 @@
         [self addSubview:button];
     }
     [[button cell] setRepresentedObject:object];
-    if ([object isKindOfClass:[NSURL class]])
+    if ([object isKindOfClass:[NSURL class]]) {
         [button setImage:[NSImage imageForURL:object]];
-    else
-        [button setImage:[NSImage 
imageNamed:NSImageNameFollowLinkFreestandingTemplate]];
+    } else {
+        static NSImage *linkImage = nil;
+        if (linkImage == nil) {
+            linkImage = [[NSImage 
imageNamed:NSImageNameFollowLinkFreestandingTemplate] retain];
+            [linkImage 
setAccessibilityDescription:NSLocalizedString(@"crossref", @"Accessibility 
description")];
+        }
+        [button setImage:linkImage];
+    }
     [(BDSKComplexStringCell *)[self cell] setRightInset:object ? 
NSWidth([button frame]) + BUTTON_MARGIN_X : 0.0];
     [self setNeedsDisplay:YES];
 }
 
+- (NSButton *)button {
+    return [button superview] ? button : nil;
+}
+
 @end
 
 

Modified: trunk/bibdesk/Base.lproj/BDSKEditor.xib
===================================================================
--- trunk/bibdesk/Base.lproj/BDSKEditor.xib     2022-07-08 16:04:15 UTC (rev 
27712)
+++ trunk/bibdesk/Base.lproj/BDSKEditor.xib     2022-07-08 16:41:30 UTC (rev 
27713)
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" 
useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" 
useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
-        <development version="8000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="18122"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="19529"/>
         <capability name="documents saved in the Xcode 8 format" 
minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -268,7 +267,7 @@
                                                                                
 </textFieldCell>
                                                                                
 <tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
                                                                                
 <prototypeCellViews>
-                                                                               
     <tableCellView id="WSC-RJ-GoF">
+                                                                               
     <tableCellView id="WSC-RJ-GoF" customClass="BDSKEditorCellView">
                                                                                
         <rect key="frame" x="76" y="1" width="416" height="22"/>
                                                                                
         <autoresizingMask key="autoresizingMask" widthSizable="YES" 
heightSizable="YES"/>
                                                                                
         <subviews>

Modified: trunk/bibdesk/NSImage_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSImage_BDSKExtensions.m      2022-07-08 16:04:15 UTC (rev 
27712)
+++ trunk/bibdesk/NSImage_BDSKExtensions.m      2022-07-08 16:41:30 UTC (rev 
27713)
@@ -535,25 +535,28 @@
 }
 
 + (NSImage *)imageForURL:(NSURL *)aURL{
-    if (aURL == nil)
-        return nil;
-    else if ([aURL isFileURL])
-        return [[NSWorkspace sharedWorkspace] iconForFile:[aURL path]];
-    
-    NSString *scheme = [aURL scheme];
-    OSType typeCode = kInternetLocationGenericIcon;
-    
-    if([scheme isCaseInsensitiveEqual:@"http"] || [scheme 
isCaseInsensitiveEqual:@"https"])
-        typeCode = kInternetLocationHTTPIcon;
-    else if([scheme isCaseInsensitiveEqual:@"ftp"])
-        typeCode = kInternetLocationFTPIcon;
-    else if([scheme isCaseInsensitiveEqual:@"mailto"])
-        typeCode = kInternetLocationMailIcon;
-    else if([scheme isCaseInsensitiveEqual:@"news"])
-        typeCode = kInternetLocationNewsIcon;
-    
-    NSImage *image = [[NSWorkspace sharedWorkspace] 
iconForFileType:NSFileTypeForHFSTypeCode(typeCode)];
-    [image setAccessibilityDescription:NSLocalizedString(@"URL", 
@"Accessibility description")];
+    NSImage *image = nil;
+    if (aURL == nil) {
+        image = nil;
+    } else if ([aURL isFileURL]) {
+        image = [[NSWorkspace sharedWorkspace] iconForFile:[aURL path]];
+        [image setAccessibilityDescription:NSLocalizedString(@"file", 
@"Accessibility description")];
+    } else {
+        NSString *scheme = [aURL scheme];
+        OSType typeCode = kInternetLocationGenericIcon;
+        
+        if([scheme isCaseInsensitiveEqual:@"http"] || [scheme 
isCaseInsensitiveEqual:@"https"])
+            typeCode = kInternetLocationHTTPIcon;
+        else if([scheme isCaseInsensitiveEqual:@"ftp"])
+            typeCode = kInternetLocationFTPIcon;
+        else if([scheme isCaseInsensitiveEqual:@"mailto"])
+            typeCode = kInternetLocationMailIcon;
+        else if([scheme isCaseInsensitiveEqual:@"news"])
+            typeCode = kInternetLocationNewsIcon;
+        
+        image = [[NSWorkspace sharedWorkspace] 
iconForFileType:NSFileTypeForHFSTypeCode(typeCode)];
+        [image setAccessibilityDescription:NSLocalizedString(@"URL", 
@"Accessibility description")];
+    }
     return image;
 }
 

Modified: trunk/bibdesk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)

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



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to