Revision: 2605
          http://skim-app.svn.sourceforge.net/skim-app/?rev=2605&view=rev
Author:   hofman
Date:     2007-08-05 09:45:53 -0700 (Sun, 05 Aug 2007)

Log Message:
-----------
Add new toolbar item to add new notes in a single segmentedControl.

Add contextual menus for thumbnail table views. Validate custom menu items for 
those tables.

Hard code the superclass for checking wether super responds to a selector, as 
the class of super is implicitly also hard coded. Otherwise it may check the 
wrong (sub)class. 

Modified Paths:
--------------
    trunk/BDSKZoomablePDFView.m
    trunk/Dutch.lproj/Localizable.strings
    trunk/Dutch.lproj/MainWindow.nib/classes.nib
    trunk/Dutch.lproj/MainWindow.nib/data.dependency
    trunk/Dutch.lproj/MainWindow.nib/info.nib
    trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
    trunk/Dutch.lproj/NoteWindow.nib/info.nib
    trunk/Dutch.lproj/NoteWindow.nib/keyedobjects.nib
    trunk/English.lproj/MainWindow.nib/classes.nib
    trunk/English.lproj/MainWindow.nib/info.nib
    trunk/English.lproj/MainWindow.nib/keyedobjects.nib
    trunk/French.lproj/Localizable.strings
    trunk/French.lproj/MainWindow.nib/classes.nib
    trunk/French.lproj/MainWindow.nib/info.nib
    trunk/French.lproj/MainWindow.nib/keyedobjects.nib
    trunk/Italian.lproj/Localizable.strings
    trunk/Italian.lproj/MainWindow.nib/classes.nib
    trunk/Italian.lproj/MainWindow.nib/info.nib
    trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
    trunk/NSImage_SKExtensions.m
    trunk/SKApplication.m
    trunk/SKMainWindowController.h
    trunk/SKMainWindowController.m
    trunk/SKPDFView.m
    trunk/SKThumbnailTableView.h
    trunk/SKThumbnailTableView.m

Modified: trunk/BDSKZoomablePDFView.m
===================================================================
--- trunk/BDSKZoomablePDFView.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/BDSKZoomablePDFView.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -88,7 +88,7 @@
     id document = [[[self window] windowController] document];
     if ([document respondsToSelector:_cmd])
         [document printDocument:sender];
-    else if ([[self superclass] instancesRespondToSelector:_cmd])
+    else if ([PDFView instancesRespondToSelector:_cmd])
         [(id)super printDocument:sender];
 }
 

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

Modified: trunk/Dutch.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/classes.nib        2007-08-05 12:58:57 UTC 
(rev 2604)
+++ trunk/Dutch.lproj/MainWindow.nib/classes.nib        2007-08-05 16:45:53 UTC 
(rev 2605)
@@ -134,6 +134,7 @@
                 leftSideGradientView = BDSKGradientView; 
                 markupPopUpButton = BDSKImagePopUpButton; 
                 noteArrayController = NSArrayController; 
+                noteButton = NSSegmentedControl; 
                 noteOutlineView = SKNoteOutlineView; 
                 notePopUpButton = BDSKImagePopUpButton; 
                 noteSearchField = NSSearchField; 

Modified: trunk/Dutch.lproj/MainWindow.nib/data.dependency
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/data.dependency    2007-08-05 12:58:57 UTC 
(rev 2604)
+++ trunk/Dutch.lproj/MainWindow.nib/data.dependency    2007-08-05 16:45:53 UTC 
(rev 2605)
@@ -4,6 +4,7 @@
 <dict>
        <key>IBPaletteDependency</key>
        <array>
+               <string>Controllers</string>
                <string>PDFKit</string>
        </array>
 </dict>

Modified: trunk/Dutch.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/info.nib   2007-08-05 12:58:57 UTC (rev 
2604)
+++ trunk/Dutch.lproj/MainWindow.nib/info.nib   2007-08-05 16:45:53 UTC (rev 
2605)
@@ -7,7 +7,7 @@
        <key>IBEditorPositions</key>
        <dict>
                <key>168</key>
-               <string>601 521 237 239 0 0 1440 938 </string>
+               <string>601 495 237 265 0 0 1440 938 </string>
                <key>224</key>
                <string>610 420 220 442 0 0 1440 938 </string>
                <key>256</key>
@@ -29,11 +29,6 @@
        <array>
                <integer>208</integer>
        </array>
-       <key>IBOpenObjects</key>
-       <array>
-               <integer>687</integer>
-               <integer>694</integer>
-       </array>
        <key>IBSystem Version</key>
        <string>8R218</string>
 </dict>

Modified: trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/Dutch.lproj/NoteWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/NoteWindow.nib/info.nib   2007-08-05 12:58:57 UTC (rev 
2604)
+++ trunk/Dutch.lproj/NoteWindow.nib/info.nib   2007-08-05 16:45:53 UTC (rev 
2605)
@@ -6,10 +6,6 @@
        <string>69 58 356 240 0 0 1440 938 </string>
        <key>IBFramework Version</key>
        <string>446.1</string>
-       <key>IBOpenObjects</key>
-       <array>
-               <integer>7</integer>
-       </array>
        <key>IBSystem Version</key>
        <string>8R218</string>
 </dict>

Modified: trunk/Dutch.lproj/NoteWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/English.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/classes.nib      2007-08-05 12:58:57 UTC 
(rev 2604)
+++ trunk/English.lproj/MainWindow.nib/classes.nib      2007-08-05 16:45:53 UTC 
(rev 2605)
@@ -134,6 +134,7 @@
                 leftSideGradientView = BDSKGradientView; 
                 markupPopUpButton = BDSKImagePopUpButton; 
                 noteArrayController = NSArrayController; 
+                noteButton = NSSegmentedControl; 
                 noteOutlineView = SKNoteOutlineView; 
                 notePopUpButton = BDSKImagePopUpButton; 
                 noteSearchField = NSSearchField; 

Modified: trunk/English.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev 
2604)
+++ trunk/English.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev 
2605)
@@ -7,7 +7,7 @@
        <key>IBEditorPositions</key>
        <dict>
                <key>168</key>
-               <string>601 521 237 239 0 0 1440 938 </string>
+               <string>601 495 237 265 0 0 1440 938 </string>
                <key>224</key>
                <string>610 420 220 442 0 0 1440 938 </string>
                <key>256</key>
@@ -31,20 +31,20 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
-               <integer>553</integer>
-               <integer>208</integer>
-               <integer>687</integer>
+               <integer>314</integer>
+               <integer>633</integer>
                <integer>511</integer>
-               <integer>585</integer>
-               <integer>633</integer>
+               <integer>539</integer>
+               <integer>168</integer>
                <integer>256</integer>
                <integer>5</integer>
-               <integer>314</integer>
                <integer>502</integer>
+               <integer>687</integer>
+               <integer>224</integer>
+               <integer>585</integer>
                <integer>694</integer>
-               <integer>168</integer>
-               <integer>224</integer>
-               <integer>539</integer>
+               <integer>208</integer>
+               <integer>553</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/English.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

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

Modified: trunk/French.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/classes.nib       2007-08-05 12:58:57 UTC 
(rev 2604)
+++ trunk/French.lproj/MainWindow.nib/classes.nib       2007-08-05 16:45:53 UTC 
(rev 2605)
@@ -134,6 +134,7 @@
                 leftSideGradientView = BDSKGradientView; 
                 markupPopUpButton = BDSKImagePopUpButton; 
                 noteArrayController = NSArrayController; 
+                noteButton = NSSegmentedControl; 
                 noteOutlineView = SKNoteOutlineView; 
                 notePopUpButton = BDSKImagePopUpButton; 
                 noteSearchField = NSSearchField; 

Modified: trunk/French.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/info.nib  2007-08-05 12:58:57 UTC (rev 
2604)
+++ trunk/French.lproj/MainWindow.nib/info.nib  2007-08-05 16:45:53 UTC (rev 
2605)
@@ -7,7 +7,7 @@
        <key>IBEditorPositions</key>
        <dict>
                <key>168</key>
-               <string>601 521 237 239 0 0 1440 938 </string>
+               <string>601 493 237 267 0 0 1440 938 </string>
                <key>224</key>
                <string>610 420 220 442 0 0 1440 938 </string>
                <key>256</key>
@@ -31,16 +31,16 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
-               <integer>256</integer>
+               <integer>511</integer>
+               <integer>168</integer>
                <integer>314</integer>
+               <integer>5</integer>
                <integer>661</integer>
+               <integer>256</integer>
                <integer>660</integer>
+               <integer>633</integer>
+               <integer>502</integer>
                <integer>224</integer>
-               <integer>5</integer>
-               <integer>511</integer>
-               <integer>168</integer>
-               <integer>502</integer>
-               <integer>633</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/French.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

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

Modified: trunk/Italian.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/classes.nib      2007-08-05 12:58:57 UTC 
(rev 2604)
+++ trunk/Italian.lproj/MainWindow.nib/classes.nib      2007-08-05 16:45:53 UTC 
(rev 2605)
@@ -134,6 +134,7 @@
                 leftSideGradientView = BDSKGradientView; 
                 markupPopUpButton = BDSKImagePopUpButton; 
                 noteArrayController = NSArrayController; 
+                noteButton = NSSegmentedControl; 
                 noteOutlineView = SKNoteOutlineView; 
                 notePopUpButton = BDSKImagePopUpButton; 
                 noteSearchField = NSSearchField; 

Modified: trunk/Italian.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev 
2604)
+++ trunk/Italian.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev 
2605)
@@ -7,7 +7,7 @@
        <key>IBEditorPositions</key>
        <dict>
                <key>168</key>
-               <string>601 521 237 239 0 0 1440 938 </string>
+               <string>601 493 237 267 0 0 1440 938 </string>
                <key>224</key>
                <string>610 420 220 442 0 0 1440 938 </string>
                <key>256</key>
@@ -31,19 +31,19 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
+               <integer>511</integer>
+               <integer>314</integer>
+               <integer>208</integer>
                <integer>224</integer>
+               <integer>502</integer>
+               <integer>256</integer>
                <integer>628</integer>
-               <integer>314</integer>
-               <integer>502</integer>
+               <integer>676</integer>
                <integer>677</integer>
-               <integer>676</integer>
+               <integer>553</integer>
                <integer>168</integer>
-               <integer>511</integer>
+               <integer>539</integer>
                <integer>5</integer>
-               <integer>539</integer>
-               <integer>553</integer>
-               <integer>208</integer>
-               <integer>256</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/NSImage_SKExtensions.m
===================================================================
--- trunk/NSImage_SKExtensions.m        2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/NSImage_SKExtensions.m        2007-08-05 16:45:53 UTC (rev 2605)
@@ -41,6 +41,32 @@
 
 @implementation NSImage (SKExtensions)
 
+- (NSImage *)createMenuAdornImage {
+    NSBezierPath *arrowPath = [NSBezierPath bezierPath];
+    [arrowPath moveToPoint:NSMakePoint(20.5,4.0)];
+    [arrowPath lineToPoint:NSMakePoint(18.0,7.0)];
+    [arrowPath lineToPoint:NSMakePoint(23.0,7.0)];
+    [arrowPath closePath];
+    
+    NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(25.0, 13.0)];
+    [image lockFocus];
+    [self compositeToPoint:NSMakePoint(2.0, 1.0) operation:NSCompositeCopy];
+    [[NSColor colorWithCalibratedWhite:0.0 alpha:0.85] setFill];
+    [arrowPath fill];
+    [image unlockFocus];
+    
+    return image;
+}
+
+- (NSImage *)createLargeNoteAdornImage {
+    NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(19.0, 11.0)];
+    [image lockFocus];
+    [self compositeToPoint:NSMakePoint(2.0, 0.0) operation:NSCompositeCopy];
+    [image unlockFocus];
+    
+    return image;
+}
+
 + (void)makeAdornImages {
     static NSImage *backAdornImage = nil;
     static NSImage *forwardAdornImage = nil;
@@ -68,6 +94,14 @@
     static NSImage *underlineNoteAdornImage = nil;
     static NSImage *strikeOutNoteAdornImage = nil;
     static NSImage *lineNoteAdornImage = nil;
+    static NSImage *textNoteAdorn2Image = nil;
+    static NSImage *anchoredNoteAdorn2Image = nil;
+    static NSImage *circleNoteAdorn2Image = nil;
+    static NSImage *squareNoteAdorn2Image = nil;
+    static NSImage *highlightNoteAdorn2Image = nil;
+    static NSImage *underlineNoteAdorn2Image = nil;
+    static NSImage *strikeOutNoteAdorn2Image = nil;
+    static NSImage *lineNoteAdorn2Image = nil;
     
     NSShadow *shadow = [[NSShadow alloc] init];
     [shadow setShadowBlurRadius:0.0];
@@ -78,13 +112,7 @@
     
     NSSize size = NSMakeSize(25.0, 13.0);
     NSSize noteSize = NSMakeSize(15.0, 11.0);
-    NSPoint point = NSMakePoint(2.0, 1.0);
     NSBezierPath *path;
-    NSBezierPath *arrowPath = [NSBezierPath bezierPath];
-    [arrowPath moveToPoint:NSMakePoint(20.5,4.0)];
-    [arrowPath lineToPoint:NSMakePoint(18.0,7.0)];
-    [arrowPath lineToPoint:NSMakePoint(23.0,7.0)];
-    [arrowPath closePath];
     
     backAdornImage = [[NSImage alloc] initWithSize:size];
     [backAdornImage lockFocus];
@@ -347,13 +375,10 @@
     [textNoteAdornImage unlockFocus];
     [textNoteAdornImage setName:@"TextNoteAdorn"];
 
-    textNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [textNoteToolAdornImage lockFocus];
-    [[NSGraphicsContext currentContext] saveGraphicsState];
-    [textNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [textNoteToolAdornImage unlockFocus];
+    textNoteAdorn2Image = [textNoteAdornImage createLargeNoteAdornImage];
+    [textNoteAdorn2Image setName:@"TextNoteAdorn2"];
+
+    textNoteToolAdornImage = [textNoteAdornImage createMenuAdornImage];
     [textNoteToolAdornImage setName:@"TextNoteToolAdorn"];
     
     anchoredNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -380,12 +405,10 @@
     [anchoredNoteAdornImage unlockFocus];
     [anchoredNoteAdornImage setName:@"AnchoredNoteAdorn"];
 
-    anchoredNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [anchoredNoteToolAdornImage lockFocus];
-    [anchoredNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [shadow set];
-    [arrowPath fill];
-    [anchoredNoteToolAdornImage unlockFocus];
+    anchoredNoteAdorn2Image = [anchoredNoteAdornImage 
createLargeNoteAdornImage];
+    [anchoredNoteAdorn2Image setName:@"AnchoredNoteAdorn2"];
+
+    anchoredNoteToolAdornImage = [anchoredNoteAdornImage createMenuAdornImage];
     [anchoredNoteToolAdornImage setName:@"AnchoredNoteToolAdorn"];
     
     circleNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -410,12 +433,10 @@
     [circleNoteAdornImage unlockFocus];
     [circleNoteAdornImage setName:@"CircleNoteAdorn"];
 
-    circleNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [circleNoteToolAdornImage lockFocus];
-    [circleNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [circleNoteToolAdornImage unlockFocus];
+    circleNoteAdorn2Image = [circleNoteAdornImage createLargeNoteAdornImage];
+    [circleNoteAdorn2Image setName:@"CircleNoteAdorn2"];
+
+    circleNoteToolAdornImage = [circleNoteAdornImage createMenuAdornImage];
     [circleNoteToolAdornImage setName:@"CircleNoteToolAdorn"];
     
     squareNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -432,12 +453,10 @@
     [squareNoteAdornImage unlockFocus];
     [squareNoteAdornImage setName:@"SquareNoteAdorn"];
 
-    squareNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [squareNoteToolAdornImage lockFocus];
-    [squareNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [squareNoteToolAdornImage unlockFocus];
+    squareNoteAdorn2Image = [squareNoteAdornImage createLargeNoteAdornImage];
+    [squareNoteAdorn2Image setName:@"SquareNoteAdorn2"];
+
+    squareNoteToolAdornImage = [squareNoteAdornImage createMenuAdornImage];
     [squareNoteToolAdornImage setName:@"SquareNoteToolAdorn"];
     
     highlightNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -458,12 +477,10 @@
     [highlightNoteAdornImage unlockFocus];
     [highlightNoteAdornImage setName:@"HighlightNoteAdorn"];
 
-    highlightNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [highlightNoteToolAdornImage lockFocus];
-    [highlightNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [highlightNoteToolAdornImage unlockFocus];
+    highlightNoteAdorn2Image = [highlightNoteAdornImage 
createLargeNoteAdornImage];
+    [highlightNoteAdorn2Image setName:@"HighlightNoteAdorn2"];
+
+    highlightNoteToolAdornImage = [highlightNoteAdornImage 
createMenuAdornImage];
     [highlightNoteToolAdornImage setName:@"HighlightNoteToolAdorn"];
     
     underlineNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -479,12 +496,10 @@
     [underlineNoteAdornImage unlockFocus];
     [underlineNoteAdornImage setName:@"UnderlineNoteAdorn"];
 
-    underlineNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [underlineNoteToolAdornImage lockFocus];
-    [underlineNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [underlineNoteToolAdornImage unlockFocus];
+    underlineNoteAdorn2Image = [underlineNoteAdornImage 
createLargeNoteAdornImage];
+    [underlineNoteAdorn2Image setName:@"UnderlineNoteAdorn2"];
+
+    underlineNoteToolAdornImage = [underlineNoteAdornImage 
createMenuAdornImage];
     [underlineNoteToolAdornImage setName:@"UnderlineNoteToolAdorn"];
     
     strikeOutNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -500,12 +515,10 @@
     [strikeOutNoteAdornImage unlockFocus];
     [strikeOutNoteAdornImage setName:@"StrikeOutNoteAdorn"];
 
-    strikeOutNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [strikeOutNoteToolAdornImage lockFocus];
-    [strikeOutNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [strikeOutNoteToolAdornImage unlockFocus];
+    strikeOutNoteAdorn2Image = [strikeOutNoteAdornImage 
createLargeNoteAdornImage];
+    [strikeOutNoteAdorn2Image setName:@"StrikeOutNoteAdorn2"];
+
+    strikeOutNoteToolAdornImage = [strikeOutNoteAdornImage 
createMenuAdornImage];
     [strikeOutNoteToolAdornImage setName:@"StrikeOutNoteToolAdorn"];
     
     lineNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -523,12 +536,10 @@
     [lineNoteAdornImage unlockFocus];
     [lineNoteAdornImage setName:@"LineNoteAdorn"];
 
-    lineNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
-    [lineNoteToolAdornImage lockFocus];
-    [lineNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
-    [color setFill];
-    [arrowPath fill];
-    [lineNoteToolAdornImage unlockFocus];
+    lineNoteAdorn2Image = [lineNoteAdornImage createLargeNoteAdornImage];
+    [lineNoteAdorn2Image setName:@"LineNoteAdorn2"];
+
+    lineNoteToolAdornImage = [lineNoteAdornImage createMenuAdornImage];
     [lineNoteToolAdornImage setName:@"LineNoteToolAdorn"];
     
     [shadow release];

Modified: trunk/SKApplication.m
===================================================================
--- trunk/SKApplication.m       2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKApplication.m       2007-08-05 16:45:53 UTC (rev 2605)
@@ -103,7 +103,7 @@
        id source = [args objectForKey:@"source"];
     
     if (lineNumber == nil || ([file isKindOfClass:[NSArray class]] && [file 
count] != 1)) {
-        if ([[self superclass] instancesRespondToSelector:_cmd])
+        if ([NSApplication instancesRespondToSelector:_cmd])
             [super handleOpenScriptCommand:command];
         return;
     }

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKMainWindowController.h      2007-08-05 16:45:53 UTC (rev 2605)
@@ -150,6 +150,7 @@
     IBOutlet BDSKImagePopUpButton *notePopUpButton;
     IBOutlet BDSKImagePopUpButton *circlePopUpButton;
     IBOutlet BDSKImagePopUpButton *markupPopUpButton;
+    IBOutlet NSSegmentedControl *noteButton;
     IBOutlet SKColorSwatch      *colorSwatch;
     NSMutableDictionary         *toolbarItems;
     NSToolbarItem               *colorSwatchToolbarItem;

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKMainWindowController.m      2007-08-05 16:45:53 UTC (rev 2605)
@@ -105,6 +105,7 @@
 static NSString *SKDocumentToolbarNewCircleNoteItemIdentifier = 
@"SKDocumentToolbarNewCircleNoteItemIdentifier";
 static NSString *SKDocumentToolbarNewMarkupItemIdentifier = 
@"SKDocumentToolbarNewMarkupItemIdentifier";
 static NSString *SKDocumentToolbarNewLineItemIdentifier = 
@"SKDocumentToolbarNewLineItemIdentifier";
+static NSString *SKDocumentToolbarNewNotesItemIdentifier = 
@"SKDocumentToolbarNewNotesItemIdentifier";
 static NSString *SKDocumentToolbarInfoItemIdentifier = 
@"SKDocumentToolbarInfoItemIdentifier";
 static NSString *SKDocumentToolbarToolModeItemIdentifier = 
@"SKDocumentToolbarToolModeItemIdentifier";
 static NSString *SKDocumentToolbarDisplayBoxItemIdentifier = 
@"SKDocumentToolbarDisplayBoxItemIdentifier";
@@ -1118,7 +1119,8 @@
 
 - (IBAction)createNewNote:(id)sender{
     if ([pdfView hideNotes] == NO) {
-        [pdfView addAnnotationFromSelectionWithType:[sender tag]];
+        int type = [sender respondsToSelector:@selector(selectedSegment)] ? 
[sender selectedSegment] : [sender tag];
+        [pdfView addAnnotationFromSelectionWithType:type];
     } else NSBeep();
 }
 
@@ -3339,6 +3341,13 @@
     }
 }
 
+- (BOOL)tableView:(NSTableView *)tv canDeleteRowsWithIndexes:(NSIndexSet 
*)rowIndexes {
+    if ([tv isEqual:snapshotTableView]) {
+        return [rowIndexes count] > 0;
+    }
+    return NO;
+}
+
 - (void)tableView:(NSTableView *)tv copyRowsWithIndexes:(NSIndexSet 
*)rowIndexes {
     if ([tv isEqual:thumbnailTableView]) {
         unsigned int index = [rowIndexes firstIndex];
@@ -3354,6 +3363,13 @@
     }
 }
 
+- (BOOL)tableView:(NSTableView *)tv canCopyRowsWithIndexes:(NSIndexSet 
*)rowIndexes {
+    if ([tv isEqual:thumbnailTableView]) {
+        return [rowIndexes count] > 0;
+    }
+    return NO;
+}
+
 - (NSArray *)tableViewHighlightedRows:(NSTableView *)tv {
     if ([tv isEqual:thumbnailTableView]) {
         return lastViewedPages;
@@ -3882,6 +3898,13 @@
     [toolbarItems setObject:item 
forKey:SKDocumentToolbarNewMarkupItemIdentifier];
     [item release];
     
+    [markupPopUpButton setShowsMenuWhenIconClicked:NO];
+    [[markupPopUpButton cell] setAltersStateOfSelectedItem:YES];
+    [[markupPopUpButton cell] setAlwaysUsesFirstItemAsSelected:NO];
+    [[markupPopUpButton cell] setUsesItemFromMenu:YES];
+    [markupPopUpButton setRefreshesMenu:NO];
+    [markupPopUpButton setMenu:menu];
+    
     item = [[SKToolbarItem alloc] 
initWithItemIdentifier:SKDocumentToolbarNewLineItemIdentifier];
     [item setLabels:NSLocalizedString(@"Add Line", @"Toolbar item label")];
     [item setToolTip:NSLocalizedString(@"Add New Line", @"Tool tip message")];
@@ -3892,12 +3915,59 @@
     [toolbarItems setObject:item 
forKey:SKDocumentToolbarNewLineItemIdentifier];
     [item release];
     
-    [markupPopUpButton setShowsMenuWhenIconClicked:NO];
-    [[markupPopUpButton cell] setAltersStateOfSelectedItem:YES];
-    [[markupPopUpButton cell] setAlwaysUsesFirstItemAsSelected:NO];
-    [[markupPopUpButton cell] setUsesItemFromMenu:YES];
-    [markupPopUpButton setRefreshesMenu:NO];
-    [markupPopUpButton setMenu:menu];
+    menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] initWithTitle:@""] 
autorelease];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Text Note", @"Menu 
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKFreeTextNote];
+       [menuItem setImage:[NSImage imageNamed:@"TextNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Anchored Note", 
@"Menu item title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKAnchoredNote];
+       [menuItem setImage:[NSImage imageNamed:@"AnchoredNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Circle", @"Menu item 
title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKCircleNote];
+       [menuItem setImage:[NSImage imageNamed:@"CircleNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Box", @"Menu item 
title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKSquareNote];
+       [menuItem setImage:[NSImage imageNamed:@"SquareNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Highlight", @"Menu 
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKHighlightNote];
+       [menuItem setImage:[NSImage imageNamed:@"HighlightNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Underline", @"Menu 
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKUnderlineNote];
+       [menuItem setImage:[NSImage imageNamed:@"UnderlineNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Strike Out", @"Menu 
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKStrikeOutNote];
+       [menuItem setImage:[NSImage imageNamed:@"StrikeOutNoteAdorn"]];
+    menuItem = [menu addItemWithTitle:NSLocalizedString(@"Line", @"Menu item 
title") action:@selector(createNewNote:) keyEquivalent:@""];
+       [menuItem setTarget:self];
+       [menuItem setTag:SKLineNote];
+       [menuItem setImage:[NSImage imageNamed:@"LineNoteAdorn"]];
+       menuItem = [[[NSMenuItem allocWithZone:[NSMenu menuZone]] 
initWithTitle:NSLocalizedString(@"Add Note", @"Toolbar item label") action:NULL 
keyEquivalent:@""] autorelease];
+    [menuItem setSubmenu:menu];
+    item = [[SKToolbarItem alloc] 
initWithItemIdentifier:SKDocumentToolbarNewNotesItemIdentifier];
+    [item setLabels:NSLocalizedString(@"Add Note", @"Toolbar item label")];
+    [item setToolTip:NSLocalizedString(@"Add New Note", @"Tool tip message")];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Text Note", 
@"Tool tip message") forSegment:SKFreeTextNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Anchored Note", 
@"Tool tip message") forSegment:SKAnchoredNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Circle", @"Tool 
tip message") forSegment:SKCircleNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Box", @"Tool tip 
message") forSegment:SKSquareNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Highlight", 
@"Tool tip message") forSegment:SKHighlightNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Underline", 
@"Tool tip message") forSegment:SKUnderlineNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Strike Out", 
@"Tool tip message") forSegment:SKStrikeOutNote];
+    [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Line", @"Tool 
tip message") forSegment:SKLineNote];
+    frame = [noteButton frame];
+    frame.size.height = SEGMENTED_CONTROL_HEIGHT;
+    [noteButton setFrame:frame];
+    [item setViewWithSizes:noteButton];
+    [item setMenuFormRepresentation:menuItem];
+    [toolbarItems setObject:item 
forKey:SKDocumentToolbarNewNotesItemIdentifier];
+    [item release];
     
     menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] initWithTitle:@""] 
autorelease];
     menuItem = [menu addItemWithTitle:NSLocalizedString(@"Text Tool", @"Menu 
item title") action:@selector(changeToolMode:) keyEquivalent:@""];
@@ -4143,6 +4213,7 @@
         SKDocumentToolbarNewCircleNoteItemIdentifier, 
         SKDocumentToolbarNewMarkupItemIdentifier,
         SKDocumentToolbarNewLineItemIdentifier,
+        SKDocumentToolbarNewNotesItemIdentifier, 
         SKDocumentToolbarContentsPaneItemIdentifier, 
         SKDocumentToolbarNotesPaneItemIdentifier, 
         SKDocumentToolbarInfoItemIdentifier, 
@@ -4185,6 +4256,14 @@
         return ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] == 
SKNoteToolMode) && [pdfView hideNotes] == NO;
     } else if ([identifier 
isEqualToString:SKDocumentToolbarNewMarkupItemIdentifier]) {
         return ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] == 
SKNoteToolMode) && [[[pdfView currentSelection] pages] count] && [pdfView 
hideNotes] == NO;
+    } else if ([identifier 
isEqualToString:SKDocumentToolbarNewNotesItemIdentifier]) {
+        if (([pdfView toolMode] != SKTextToolMode && [pdfView toolMode] != 
SKNoteToolMode) || [pdfView hideNotes])
+            return NO;
+        BOOL enabled = [[[pdfView currentSelection] pages] count] > 0;
+        [noteButton setEnabled:enabled forSegment:SKHighlightNote];
+        [noteButton setEnabled:enabled forSegment:SKUnderlineNote];
+        [noteButton setEnabled:enabled forSegment:SKStrikeOutNote];
+        return YES;
     } else if ([identifier 
isEqualToString:SKDocumentToolbarInfoItemIdentifier]) {
         return YES;
     } else {

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKPDFView.m   2007-08-05 16:45:53 UTC (rev 2605)
@@ -618,7 +618,7 @@
     id document = [[[self window] windowController] document];
     if ([document respondsToSelector:_cmd])
         [document printDocument:sender];
-    else if ([[self superclass] instancesRespondToSelector:_cmd])
+    else if ([PDFView instancesRespondToSelector:_cmd])
         [(id)super printDocument:sender];
 }
 
@@ -1404,7 +1404,7 @@
     NSString *pboardType = [pboard availableTypeFromArray:[NSArray 
arrayWithObjects:NSColorPboardType, SKLineStylePboardType, nil]];
     if (pboardType) {
         return [self draggingUpdated:sender];
-    } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+    } else if ([PDFView instancesRespondToSelector:_cmd]) {
         dragOp = [super draggingEntered:sender];
     }
     return dragOp;
@@ -1442,7 +1442,7 @@
             [self setNeedsDisplayForAnnotation:highlightAnnotation];
             highlightAnnotation = nil;
         }
-    } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+    } else if ([PDFView instancesRespondToSelector:_cmd]) {
         dragOp = [super draggingUpdated:sender];
     }
     return dragOp;
@@ -1456,7 +1456,7 @@
             [self setNeedsDisplayForAnnotation:highlightAnnotation];
             highlightAnnotation = nil;
         }
-    } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+    } else if ([PDFView instancesRespondToSelector:_cmd]) {
         [super draggingExited:sender];
     }
 }
@@ -1490,7 +1490,7 @@
             [self setNeedsDisplayForAnnotation:highlightAnnotation];
             highlightAnnotation = nil;
         }
-    } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+    } else if ([PDFView instancesRespondToSelector:_cmd]) {
         performedDrag = [super performDragOperation:sender];
     }
     return performedDrag;
@@ -1792,7 +1792,7 @@
     if (editAnnotation && (command == @selector(insertNewline:) || command == 
@selector(insertTab:) || command == @selector(insertBacktab:))) {
         [self endAnnotationEdit:self];
         [[self window] makeFirstResponder:self];
-    } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+    } else if ([PDFView instancesRespondToSelector:_cmd]) {
        rv = [super control:control textView:textView 
doCommandBySelector:command];
     }
     return rv;

Modified: trunk/SKThumbnailTableView.h
===================================================================
--- trunk/SKThumbnailTableView.h        2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKThumbnailTableView.h        2007-08-05 16:45:53 UTC (rev 2605)
@@ -44,10 +44,12 @@
     BOOL isScrolling;
 }
 - (BOOL)isScrolling;
+- (BOOL)canCopy;
 @end
 
 
 @interface SKSnapshotTableView : SKThumbnailTableView
+- (BOOL)canDelete;
 @end
 
 
@@ -59,6 +61,7 @@
 
 @interface NSObject (SKSnapshotTableViewDelegate)
 - (void)tableView:(NSTableView *)aTableView deleteRowsWithIndexes:(NSIndexSet 
*)rowIndexes;
+- (BOOL)tableView:(NSTableView *)aTableView 
canDeleteRowsWithIndexes:(NSIndexSet *)rowIndexes;
 @end
 
 
@@ -66,4 +69,5 @@
 - (NSArray *)tableViewHighlightedRows:(NSTableView *)tableView;
 - (BOOL)tableView:(NSTableView *)tableView commandSelectRow:(int)rowIndex;
 - (void)tableView:(NSTableView *)aTableView copyRowsWithIndexes:(NSIndexSet 
*)rowIndexes;
+- (BOOL)tableView:(NSTableView *)aTableView canCopyRowsWithIndexes:(NSIndexSet 
*)rowIndexes;
 @end

Modified: trunk/SKThumbnailTableView.m
===================================================================
--- trunk/SKThumbnailTableView.m        2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKThumbnailTableView.m        2007-08-05 16:45:53 UTC (rev 2605)
@@ -131,24 +131,73 @@
     [super mouseDown:theEvent];
 }
 
+- (BOOL)canCopy {
+    NSIndexSet *indexes = [self selectedRowIndexes];
+    return [indexes count] && 
+           [[self delegate] 
respondsToSelector:@selector(tableView:canCopyRowsWithIndexes:)] && 
+           [[self delegate] 
respondsToSelector:@selector(tableView:copyRowsWithIndexes:)] && 
+           [[self delegate] tableView:self canCopyRowsWithIndexes:indexes];
+}
+
 - (void)copy:(id)sender {
-    if ([[self delegate] 
respondsToSelector:@selector(tableView:copyRowsWithIndexes:)])
+    if ([self canCopy])
         [[self delegate] tableView:self copyRowsWithIndexes:[self 
selectedRowIndexes]];
+    else
+        NSBeep();
 }
 
+- (void)copyFromContextualMenu:(id)sender {
+    [[self delegate] tableView:self copyRowsWithIndexes:[sender 
representedObject]];
+}
+
+- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
+    NSMenu *menu = [super menuForEvent:theEvent];
+    NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+    int row = [self rowAtPoint:mouseLoc];
+    if (row != -1) {
+        NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:row];
+        if ([[self delegate] 
respondsToSelector:@selector(tableView:canCopyRowsWithIndexes:)] && 
+            [[self delegate] 
respondsToSelector:@selector(tableView:copyRowsWithIndexes:)] && 
+            [[self delegate] tableView:self canCopyRowsWithIndexes:indexes]) {
+            if (menu == nil)
+                menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] 
autorelease];
+            NSMenuItem *item = [menu 
addItemWithTitle:NSLocalizedString(@"Copy", @"Menu item title") 
action:@selector(copyFromContextualMenu:) keyEquivalent:@""];
+            [item setTarget:self];
+            [item setRepresentedObject:indexes];
+        }
+    }
+       return menu;
+}
+
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
+    if ([menuItem action] == @selector(copy:))
+        return [self canCopy];
+    else if ([menuItem action] == @selector(copyFromContextualMenu:))
+        return YES;
+    else if ([NSTableView 
instancesRespondToSelector:@selector(validateMenuItem:)])
+        return [super validateMenuItem:menuItem];
+    return YES;
+}
+
 @end
 
 #pragma mark -
 
 @implementation SKSnapshotTableView
 
+- (BOOL)canDelete {
+    NSIndexSet *indexes = [self selectedRowIndexes];
+    return [indexes count] && 
+           [[self delegate] 
respondsToSelector:@selector(tableView:canDeleteRowsWithIndexes:)] && 
+           [[self delegate] 
respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)] && 
+           [[self delegate] tableView:self canDeleteRowsWithIndexes:indexes];
+}
+
 - (void)delete:(id)sender {
-    if ([[self delegate] 
respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)]) {
-               if ([self selectedRow] == -1)
-                       NSBeep();
-               else
-                       [[self delegate] tableView:self 
deleteRowsWithIndexes:[self selectedRowIndexes]];
-    }
+    if ([self canDelete])
+        [[self delegate] tableView:self deleteRowsWithIndexes:[self 
selectedRowIndexes]];
+    else
+        NSBeep();
 }
 
 - (void)keyDown:(NSEvent *)theEvent {
@@ -156,12 +205,43 @@
     unichar eventChar = [characters length] > 0 ? [characters 
characterAtIndex:0] : 0;
        unsigned int modifiers = [theEvent modifierFlags] & 
NSDeviceIndependentModifierFlagsMask;
     
-       if ((eventChar == NSDeleteCharacter || eventChar == 
NSDeleteFunctionKey) && modifiers == 0)
+       if ((eventChar == NSDeleteCharacter || eventChar == 
NSDeleteFunctionKey) && modifiers == 0 && [self canDelete])
         [self delete:self];
        else
                [super keyDown:theEvent];
 }
 
+- (void)deleteFromContextualMenu:(id)sender {
+    [[self delegate] tableView:self deleteRowsWithIndexes:[sender 
representedObject]];
+}
+
+- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
+    NSMenu *menu = [super menuForEvent:theEvent];
+    NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+    int row = [self rowAtPoint:mouseLoc];
+    if (row != -1) {
+        NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:row];
+        if ([[self delegate] 
respondsToSelector:@selector(tableView:canDeleteRowsWithIndexes:)] && 
+            [[self delegate] 
respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)] && 
+            [[self delegate] tableView:self canDeleteRowsWithIndexes:indexes]) 
{
+            if (menu == nil)
+                menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] 
autorelease];
+            NSMenuItem *item = [menu 
addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") 
action:@selector(deleteFromContextualMenu:) keyEquivalent:@""];
+            [item setTarget:self];
+            [item setRepresentedObject:indexes];
+        }
+    }
+       return menu;
+}
+
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
+    if ([menuItem action] == @selector(delete:))
+        return [self canDelete];
+    else if ([menuItem action] == @selector(deleteFromContextualMenu:))
+        return YES;
+    return [super validateMenuItem:menuItem];
+}
+
 @end
 
 #pragma mark -


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: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to