Revision: 3749
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3749&view=rev
Author:   hofman
Date:     2008-04-17 15:07:08 -0700 (Thu, 17 Apr 2008)

Log Message:
-----------
Add accessibility for line well.

Modified Paths:
--------------
    trunk/SKLineWell.h
    trunk/SKLineWell.m

Modified: trunk/SKLineWell.h
===================================================================
--- trunk/SKLineWell.h  2008-04-17 19:32:45 UTC (rev 3748)
+++ trunk/SKLineWell.h  2008-04-17 22:07:08 UTC (rev 3749)
@@ -72,6 +72,8 @@
     
     BOOL updatingFromLineInspector;
     BOOL updatingFromBinding;
+    
+    id titleUIElement;
 }
 
 - (void)activate:(BOOL)exclusive;

Modified: trunk/SKLineWell.m
===================================================================
--- trunk/SKLineWell.m  2008-04-17 19:32:45 UTC (rev 3748)
+++ trunk/SKLineWell.m  2008-04-17 22:07:08 UTC (rev 3749)
@@ -804,4 +804,97 @@
        return dict != nil;
 }
 
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+    static NSArray *attributes = nil;
+    if (attributes == nil) {
+       attributes = [[NSArray alloc] initWithObjects:
+           NSAccessibilityRoleAttribute,
+           NSAccessibilityRoleDescriptionAttribute,
+        NSAccessibilityValueAttribute,
+        NSAccessibilityHelpAttribute,
+           NSAccessibilityFocusedAttribute,
+           NSAccessibilityParentAttribute,
+           NSAccessibilityWindowAttribute,
+           NSAccessibilityTopLevelUIElementAttribute,
+        NSAccessibilityTitleUIElementAttribute,
+           nil];
+    }
+    return attributes;
+}
+
+- (id)accessibilityAttributeValue:(NSString *)attribute {
+    if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
+        return NSAccessibilityCheckBoxRole;
+    } else if ([attribute 
isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
+        return NSAccessibilityRoleDescription(NSAccessibilityCheckBoxRole, 
nil);
+    } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
+        return [NSNumber numberWithBool:[self isActive]];
+    } else if ([attribute isEqualToString:NSAccessibilityHelpAttribute]) {
+        return [self toolTip];
+    } else if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
+        // Just check if the app thinks we're focused.
+        id focusedElement = [NSApp 
accessibilityAttributeValue:NSAccessibilityFocusedUIElementAttribute];
+        return [NSNumber numberWithBool:[focusedElement isEqual:self]];
+    } else if ([attribute isEqualToString:NSAccessibilityParentAttribute]) {
+        return NSAccessibilityUnignoredAncestor([self superview]);
+    } else if ([attribute isEqualToString:NSAccessibilityWindowAttribute]) {
+        // We're in the same window as our parent.
+        return [NSAccessibilityUnignoredAncestor([self superview]) 
accessibilityAttributeValue:NSAccessibilityWindowAttribute];
+    } else if ([attribute 
isEqualToString:NSAccessibilityTopLevelUIElementAttribute]) {
+        // We're in the same top level element as our parent.
+        return [NSAccessibilityUnignoredAncestor([self superview]) 
accessibilityAttributeValue:NSAccessibilityTopLevelUIElementAttribute];
+    } else if ([attribute 
isEqualToString:NSAccessibilityTitleUIElementAttribute]) {
+        return titleUIElement;
+    } else {
+        return nil;
+    }
+}
+
+- (BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
+    if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
+        return [self canActivate];
+    } else {
+        return NO;
+    }
+}
+
+- (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute {
+    if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
+        [[self window] makeFirstResponder:self];
+    }
+}
+
+
+// actions
+
+- (NSArray *)accessibilityActionNames {
+    return [NSArray arrayWithObject:NSAccessibilityPressAction];
+}
+
+- (NSString *)accessibilityActionDescription:(NSString *)anAction {
+    return NSAccessibilityActionDescription(anAction);
+}
+
+- (void)accessibilityPerformAction:(NSString *)anAction {
+    if ([anAction isEqualToString:NSAccessibilityPressAction])
+        [self performClick:self];
+}
+
+
+// misc
+
+- (BOOL)accessibilityIsIgnored {
+    return NO;
+}
+
+- (id)accessibilityHitTest:(NSPoint)point {
+    return NSAccessibilityUnignoredAncestor(self);
+}
+
+- (id)accessibilityFocusedUIElement {
+    return NSAccessibilityUnignoredAncestor(self);
+}
+
 @end


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 the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to