Revision: 3813
http://skim-app.svn.sourceforge.net/skim-app/?rev=3813&view=rev
Author: hofman
Date: 2008-04-24 11:57:06 -0700 (Thu, 24 Apr 2008)
Log Message:
-----------
Add convenience method to identify link annotations. Implement static text
accessibility properties in appropriate annotation classes.
Modified Paths:
--------------
trunk/PDFAnnotation_SKExtensions.h
trunk/PDFAnnotation_SKExtensions.m
trunk/SKAccessibilityPDFAnnotationElement.m
trunk/SKPDFAnnotationCircle.m
trunk/SKPDFAnnotationFreeText.m
trunk/SKPDFAnnotationLine.m
trunk/SKPDFAnnotationMarkup.m
trunk/SKPDFAnnotationNote.m
trunk/SKPDFAnnotationSquare.m
trunk/SKPDFHoverWindow.m
trunk/SKPDFView.m
Modified: trunk/PDFAnnotation_SKExtensions.h
===================================================================
--- trunk/PDFAnnotation_SKExtensions.h 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/PDFAnnotation_SKExtensions.h 2008-04-24 18:57:06 UTC (rev 3813)
@@ -108,6 +108,7 @@
- (BOOL)isNoteAnnotation;
- (BOOL)isMarkup;
+- (BOOL)isLink;
- (BOOL)isResizable;
- (BOOL)isMovable;
- (BOOL)isEditable;
@@ -145,10 +146,5 @@
- (id)accessibilityRoleDescriptionAttribute;
- (id)accessibilityTitleAttribute;
- (id)accessibilityValueAttribute;
-- (id)accessibilityURLAttribute;
-- (id)accessibilitySelectedTextAttribute;
-- (id)accessibilitySelectedTextRangeAttribute;
-- (id)accessibilityNumberOfCharactersAttribute;
-- (id)accessibilityVisibleCharacterRangeAttribute;
@end
Modified: trunk/PDFAnnotation_SKExtensions.m
===================================================================
--- trunk/PDFAnnotation_SKExtensions.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/PDFAnnotation_SKExtensions.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -297,6 +297,8 @@
- (BOOL)isMarkup { return NO; }
+- (BOOL)isLink { return NO; }
+
- (BOOL)isResizable { return NO; }
- (BOOL)isMovable { return NO; }
@@ -551,17 +553,13 @@
NSAccessibilityEnabledAttribute,
NSAccessibilityPositionAttribute,
NSAccessibilitySizeAttribute,
- NSAccessibilitySelectedTextAttribute,
- NSAccessibilitySelectedTextRangeAttribute,
- NSAccessibilityNumberOfCharactersAttribute,
- NSAccessibilityVisibleCharacterRangeAttribute,
nil];
}
return attributes;
}
- (id)accessibilityRoleAttribute {
- return NSAccessibilityStaticTextRole;
+ return NSAccessibilityUnknownRole;
}
- (id)accessibilityRoleDescriptionAttribute {
@@ -576,26 +574,6 @@
return [self contents];
}
-- (id)accessibilityURLAttribute {
- return nil;
-}
-
-- (id)accessibilitySelectedTextAttribute {
- return @"";
-}
-
-- (id)accessibilitySelectedTextRangeAttribute {
- return [NSValue valueWithRange:NSMakeRange(0, 0)];
-}
-
-- (id)accessibilityNumberOfCharactersAttribute {
- return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
-}
-
-- (id)accessibilityVisibleCharacterRangeAttribute {
- return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
-}
-
@end
#pragma mark -
@@ -618,23 +596,12 @@
originalToolTip = OBReplaceMethodImplementationWithSelector(self,
@selector(toolTip), @selector(replacementToolTip));
}
+- (BOOL)isLink { return YES; }
+
- (NSArray *)accessibilityAttributeNames {
static NSArray *attributes = nil;
if (attributes == nil) {
- attributes = [[NSArray alloc] initWithObjects:
- NSAccessibilityRoleAttribute,
- NSAccessibilityRoleDescriptionAttribute,
- NSAccessibilityTitleAttribute,
- NSAccessibilityValueAttribute,
- NSAccessibilityURLAttribute,
- NSAccessibilityParentAttribute,
- NSAccessibilityWindowAttribute,
- NSAccessibilityTopLevelUIElementAttribute,
- NSAccessibilityFocusedAttribute,
- NSAccessibilityEnabledAttribute,
- NSAccessibilityPositionAttribute,
- NSAccessibilitySizeAttribute,
- nil];
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObject:NSAccessibilityURLAttribute] retain];
}
return attributes;
}
Modified: trunk/SKAccessibilityPDFAnnotationElement.m
===================================================================
--- trunk/SKAccessibilityPDFAnnotationElement.m 2008-04-24 17:05:28 UTC (rev
3812)
+++ trunk/SKAccessibilityPDFAnnotationElement.m 2008-04-24 18:57:06 UTC (rev
3813)
@@ -99,7 +99,7 @@
} else if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
return [NSNumber numberWithBool:[parent
isAnnotationFocused:annotation]];
} else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) {
- return [NSNumber numberWithBool:NO];
+ return [NSNumber numberWithBool:[annotation isEditable] || [annotation
isLink]];
} else if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) {
return [NSValue valueWithPoint:[parent
screenRectForAnnotation:annotation].origin];
} else if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) {
@@ -134,7 +134,7 @@
}
- (NSArray *)accessibilityActionNames {
- if ([[annotation type] isEqualToString:SKLinkString] || [annotation
isEditable])
+ if ([annotation isLink] || [annotation isEditable])
return [NSArray arrayWithObject:NSAccessibilityPressAction];
else
return [NSArray array];
Modified: trunk/SKPDFAnnotationCircle.m
===================================================================
--- trunk/SKPDFAnnotationCircle.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationCircle.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -118,6 +118,41 @@
return customCircleScriptingKeys;
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ static NSArray *attributes = nil;
+ if (attributes == nil) {
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ nil]] retain];
+ }
+ return attributes;
+}
+
+- (id)accessibilityRoleAttribute {
+ return NSAccessibilityStaticTextRole;
+}
+
+- (id)accessibilitySelectedTextAttribute {
+ return @"";
+}
+
+- (id)accessibilitySelectedTextRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
+}
+
+- (id)accessibilityNumberOfCharactersAttribute {
+ return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
+}
+
+- (id)accessibilityVisibleCharacterRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
+}
+
@end
#pragma mark -
Modified: trunk/SKPDFAnnotationFreeText.m
===================================================================
--- trunk/SKPDFAnnotationFreeText.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationFreeText.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -165,6 +165,41 @@
[self setFont:font];
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ static NSArray *attributes = nil;
+ if (attributes == nil) {
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ nil]] retain];
+ }
+ return attributes;
+}
+
+- (id)accessibilityRoleAttribute {
+ return NSAccessibilityStaticTextRole;
+}
+
+- (id)accessibilitySelectedTextAttribute {
+ return @"";
+}
+
+- (id)accessibilitySelectedTextRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
+}
+
+- (id)accessibilityNumberOfCharactersAttribute {
+ return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
+}
+
+- (id)accessibilityVisibleCharacterRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
+}
+
@end
#pragma mark -
Modified: trunk/SKPDFAnnotationLine.m
===================================================================
--- trunk/SKPDFAnnotationLine.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationLine.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -301,6 +301,41 @@
[self setEndLineStyle:SKLineStyleFromScriptingLineStyle(style)];
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ static NSArray *attributes = nil;
+ if (attributes == nil) {
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ nil]] retain];
+ }
+ return attributes;
+}
+
+- (id)accessibilityRoleAttribute {
+ return NSAccessibilityStaticTextRole;
+}
+
+- (id)accessibilitySelectedTextAttribute {
+ return @"";
+}
+
+- (id)accessibilitySelectedTextRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
+}
+
+- (id)accessibilityNumberOfCharactersAttribute {
+ return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
+}
+
+- (id)accessibilityVisibleCharacterRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
+}
+
@end
#pragma mark -
Modified: trunk/SKPDFAnnotationMarkup.m
===================================================================
--- trunk/SKPDFAnnotationMarkup.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationMarkup.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -420,6 +420,41 @@
[currentCommand
setScriptErrorNumber:NSReceiversCantHandleCommandScriptError];
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ static NSArray *attributes = nil;
+ if (attributes == nil) {
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ nil]] retain];
+ }
+ return attributes;
+}
+
+- (id)accessibilityRoleAttribute {
+ return NSAccessibilityStaticTextRole;
+}
+
+- (id)accessibilitySelectedTextAttribute {
+ return @"";
+}
+
+- (id)accessibilitySelectedTextRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
+}
+
+- (id)accessibilityNumberOfCharactersAttribute {
+ return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
+}
+
+- (id)accessibilityVisibleCharacterRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
+}
+
@end
#pragma mark -
Modified: trunk/SKPDFAnnotationNote.m
===================================================================
--- trunk/SKPDFAnnotationNote.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationNote.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -295,25 +295,13 @@
else
return [[NSScriptCoercionHandler sharedCoercionHandler]
coerceValue:value toClass:[NSTextStorage class]];
}
+
#pragma mark Accessibility
- (NSArray *)accessibilityAttributeNames {
static NSArray *attributes = nil;
if (attributes == nil) {
- attributes = [[NSArray alloc] initWithObjects:
- NSAccessibilityRoleAttribute,
- NSAccessibilityRoleDescriptionAttribute,
- NSAccessibilityTitleAttribute,
- NSAccessibilityValueAttribute,
- NSAccessibilityDescriptionAttribute,
- NSAccessibilityParentAttribute,
- NSAccessibilityWindowAttribute,
- NSAccessibilityTopLevelUIElementAttribute,
- NSAccessibilityFocusedAttribute,
- NSAccessibilityEnabledAttribute,
- NSAccessibilityPositionAttribute,
- NSAccessibilitySizeAttribute,
- nil];
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObject:NSAccessibilityDescriptionAttribute] retain];
}
return attributes;
}
Modified: trunk/SKPDFAnnotationSquare.m
===================================================================
--- trunk/SKPDFAnnotationSquare.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFAnnotationSquare.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -118,6 +118,41 @@
return customSquareScriptingKeys;
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ static NSArray *attributes = nil;
+ if (attributes == nil) {
+ attributes = [[[super accessibilityAttributeNames]
arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilitySelectedTextAttribute,
+ NSAccessibilitySelectedTextRangeAttribute,
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ nil]] retain];
+ }
+ return attributes;
+}
+
+- (id)accessibilityRoleAttribute {
+ return NSAccessibilityStaticTextRole;
+}
+
+- (id)accessibilitySelectedTextAttribute {
+ return @"";
+}
+
+- (id)accessibilitySelectedTextRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, 0)];
+}
+
+- (id)accessibilityNumberOfCharactersAttribute {
+ return [NSNumber numberWithUnsignedInt:[[self accessibilityValueAttribute]
length]];
+}
+
+- (id)accessibilityVisibleCharacterRangeAttribute {
+ return [NSValue valueWithRange:NSMakeRange(0, [[self
accessibilityValueAttribute] length])];
+}
+
@end
#pragma mark -
Modified: trunk/SKPDFHoverWindow.m
===================================================================
--- trunk/SKPDFHoverWindow.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFHoverWindow.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -177,7 +177,7 @@
[self cancelDelayedAnimations];
- if ([[annotation type] isEqualToString:SKLinkString]) {
+ if ([annotation isLink]) {
PDFDestination *dest = [annotation destination];
PDFPage *page = [dest page];
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2008-04-24 17:05:28 UTC (rev 3812)
+++ trunk/SKPDFView.m 2008-04-24 18:57:06 UTC (rev 3813)
@@ -348,13 +348,13 @@
for (i = 0; i < count; i++) {
PDFAnnotation *annotation = [allAnnotations objectAtIndex: i];
- if ([[annotation type] isEqualToString:SKLinkString])
+ if ([annotation isLink])
[(PDFAnnotationLink *)annotation fixRelativeURLIfNeeded];
}
// activeAnnotation may be a leftover, and we don't want to outline it
on the wrong page
if (activeAnnotation && [[activeAnnotation page] isEqual:pdfPage]) {
- BOOL isLink = [[activeAnnotation type]
isEqualToString:SKLinkString];
+ BOOL isLink = [activeAnnotation isLink];
float lineWidth = isLink ? 2.0 : 1.0;
NSRect bounds = [activeAnnotation bounds];
NSRect rect = NSInsetRect(NSIntegralRect(bounds), 0.5 * lineWidth,
0.5 * lineWidth);
@@ -1015,7 +1015,7 @@
}
- (void)mouseDown:(NSEvent *)theEvent{
- if ([[activeAnnotation type] isEqualToString:SKLinkString])
+ if ([activeAnnotation isLink])
[self setActiveAnnotation:nil];
mouseDownLoc = [theEvent locationInWindow];
@@ -1109,7 +1109,7 @@
[self setNeedsDisplayInRect:selectionRect];
selectionRect = NSZeroRect;
[[NSNotificationCenter defaultCenter]
postNotificationName:SKPDFViewSelectionChangedNotification object:self];
- } else if ([[activeAnnotation type]
isEqualToString:SKLinkString]) {
+ } else if ([activeAnnotation isLink]) {
NSPoint p = [self convertPoint:[theEvent
locationInWindow] fromView:nil];
PDFPage *page = [self pageForPoint:p nearest:NO];
if (page && NSPointInRect([self convertPoint:p
toPage:page], [activeAnnotation bounds]))
@@ -1167,7 +1167,7 @@
else
[super mouseMoved:theEvent];
- if ([[activeAnnotation type] isEqualToString:SKLinkString]) {
+ if ([activeAnnotation isLink]) {
[[SKPDFHoverWindow sharedHoverWindow] fadeOut];
[self setActiveAnnotation:nil];
}
@@ -2032,7 +2032,7 @@
NSArray *annotations = [[pdfDoc pageAtIndex:pageIndex] annotations];
while (++i < (int)[annotations count] && annotation == nil) {
annotation = [annotations objectAtIndex:i];
- if (([self hideNotes] || [annotation isNoteAnnotation] == NO) &&
[[annotation type] isEqualToString:SKLinkString] == NO)
+ if (([self hideNotes] || [annotation isNoteAnnotation] == NO) &&
[annotation isLink] == NO)
annotation = nil;
}
if (startPageIndex == -1)
@@ -2046,7 +2046,7 @@
if (annotation) {
[self scrollAnnotationToVisible:annotation];
[self setActiveAnnotation:annotation];
- if ([[annotation type] isEqualToString:SKLinkString] || [annotation
text]) {
+ if ([annotation isLink] || [annotation text]) {
NSRect bounds = [annotation bounds];
NSPoint point = NSMakePoint(NSMinX(bounds) + 0.3 *
NSWidth(bounds), NSMinY(bounds) + 0.3 * NSHeight(bounds));
point = [self convertPoint:[self convertPoint:point
fromPage:[annotation page]] toView:nil];
@@ -2080,7 +2080,7 @@
while (annotation == nil) {
while (--i >= 0 && annotation == nil) {
annotation = [annotations objectAtIndex:i];
- if (([self hideNotes] || [annotation isNoteAnnotation] == NO) &&
[[annotation type] isEqualToString:SKLinkString] == NO)
+ if (([self hideNotes] || [annotation isNoteAnnotation] == NO) &&
[annotation isLink] == NO)
annotation = nil;
}
if (startPageIndex == -1)
@@ -2095,7 +2095,7 @@
if (annotation) {
[self scrollAnnotationToVisible:annotation];
[self setActiveAnnotation:annotation];
- if ([[annotation type] isEqualToString:SKLinkString] || [annotation
text]) {
+ if ([annotation isLink] || [annotation text]) {
NSRect bounds = [annotation bounds];
NSPoint point = NSMakePoint(NSMinX(bounds) + 0.3 *
NSWidth(bounds), NSMinY(bounds) + 0.3 * NSHeight(bounds));
point = [self convertPoint:[self convertPoint:point
fromPage:[annotation page]] toView:nil];
@@ -2160,7 +2160,7 @@
NSEnumerator *annotationEnum = [[page annotations]
objectEnumerator];
PDFAnnotation *annotation;
while (annotation = [annotationEnum nextObject]) {
- if ([[annotation type] isEqualToString:SKLinkString] ||
[annotation isNoteAnnotation])
+ if ([annotation isLink] || [annotation isNoteAnnotation])
[children addObject:[SKAccessibilityPDFAnnotationElement
elementWithAnnotation:annotation parent:[self documentView]]];
}
}
@@ -2181,7 +2181,7 @@
PDFPage *page = [self pageForPoint:localPoint nearest:NO];
if (page) {
PDFAnnotation *annotation = [page annotationAtPoint:[self
convertPoint:localPoint toPage:page]];
- if ([[annotation type] isEqualToString:SKLinkString] ||
[annotation isNoteAnnotation])
+ if ([annotation isLink] || [annotation isNoteAnnotation])
child =
NSAccessibilityUnignoredAncestor([SKAccessibilityPDFAnnotationElement
elementWithAnnotation:annotation parent:[self documentView]]);
}
}
@@ -2858,7 +2858,7 @@
if ([annotation isTemporaryAnnotation]) {
// register this, so we can do our own selection later
mouseDownInAnnotation = YES;
- } else if ([[annotation type] isEqualToString:SKLinkString]) {
+ } else if ([annotation isLink]) {
if (mouseDownInAnnotation && (toolMode == SKTextToolMode ||
annotationMode == SKHighlightNote || annotationMode == SKUnderlineNote ||
annotationMode == SKStrikeOutNote))
newActiveAnnotation = annotation;
break;
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