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