From: <ho...@us...> - 2007-02-24 12:35:00
|
Revision: 9911 http://svn.sourceforge.net/bibdesk/?rev=9911&view=rev Author: hofman Date: 2007-02-24 04:34:57 -0800 (Sat, 24 Feb 2007) Log Message: ----------- Swap containing views rather than tableviews. These are already retained as top-level objects in the nib. Reorganize ivar declarations in header file. Modified Paths: -------------- skim/English.lproj/MainWindow.nib/classes.nib skim/English.lproj/MainWindow.nib/info.nib skim/English.lproj/MainWindow.nib/keyedobjects.nib skim/SKMainWindowController.h skim/SKMainWindowController.m Modified: skim/English.lproj/MainWindow.nib/classes.nib =================================================================== --- skim/English.lproj/MainWindow.nib/classes.nib 2007-02-24 10:59:51 UTC (rev 9910) +++ skim/English.lproj/MainWindow.nib/classes.nib 2007-02-24 12:34:57 UTC (rev 9911) @@ -72,20 +72,23 @@ backForwardButton = NSSegmentedControl; choosePageField = NSTextField; choosePageSheet = NSWindow; - currentTableView = NSTableView; + currentLeftSideView = NSView; + currentRightSideView = NSView; displayBoxPopUpButton = NSPopUpButton; findArrayController = NSArrayController; findCollapsibleView = BDSKCollapsibleView; findEdgeView = BDSKEdgeView; - findField = NSSearchField; findTableView = NSTableView; + findView = NSView; leftSideBox = NSBox; leftSideButton = NSSegmentedControl; + leftSideCollapsibleView = BDSKCollapsibleView; leftSideContentBox = NSBox; leftSideEdgeView = BDSKEdgeView; noteArrayController = NSArrayController; noteOutlineView = SKNoteOutlineView; noteTreeController = NSTreeController; + noteView = NSView; outlineView = NSOutlineView; pageNumberField = NSTextField; pageNumberStepper = NSStepper; @@ -99,14 +102,16 @@ saveProgressBar = NSProgressIndicator; saveProgressSheet = NSWindow; scaleField = NSTextField; - searchBox = BDSKCollapsibleView; searchField = NSSearchField; snapshotArrayController = NSArrayController; snapshotTableView = SKSnapshotTableView; + snapshotView = NSView; spinner = NSProgressIndicator; splitView = SKSplitView; thumbnailArrayController = NSArrayController; thumbnailTableView = SKThumbnailTableView; + thumbnailView = NSView; + tocView = NSView; toolModeButton = NSSegmentedControl; }; SUPERCLASS = NSWindowController; Modified: skim/English.lproj/MainWindow.nib/info.nib =================================================================== --- skim/English.lproj/MainWindow.nib/info.nib 2007-02-24 10:59:51 UTC (rev 9910) +++ skim/English.lproj/MainWindow.nib/info.nib 2007-02-24 12:34:57 UTC (rev 9911) @@ -7,13 +7,17 @@ <key>IBEditorPositions</key> <dict> <key>168</key> - <string>511 575 417 132 0 0 1440 938 </string> + <string>511 549 237 158 0 0 1440 938 </string> <key>224</key> - <string>574 377 292 527 0 0 1440 938 </string> + <string>610 420 220 442 0 0 1440 938 </string> <key>256</key> <string>610 420 220 442 0 0 1440 938 </string> <key>314</key> <string>610 420 220 442 0 0 1440 938 </string> + <key>502</key> + <string>610 420 220 442 0 0 1440 938 </string> + <key>511</key> + <string>610 420 220 442 0 0 1440 938 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> @@ -23,12 +27,14 @@ </array> <key>IBOpenObjects</key> <array> + <integer>208</integer> + <integer>256</integer> + <integer>168</integer> + <integer>511</integer> + <integer>314</integer> <integer>224</integer> <integer>5</integer> - <integer>168</integer> - <integer>256</integer> - <integer>314</integer> - <integer>208</integer> + <integer>502</integer> </array> <key>IBSystem Version</key> <string>8L127</string> Modified: skim/English.lproj/MainWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: skim/SKMainWindowController.h =================================================================== --- skim/SKMainWindowController.h 2007-02-24 10:59:51 UTC (rev 9910) +++ skim/SKMainWindowController.h 2007-02-24 12:34:57 UTC (rev 9911) @@ -72,30 +72,70 @@ @end @interface SKMainWindowController : NSWindowController { + IBOutlet SKSplitView *splitView; + IBOutlet SKPDFView *pdfView; IBOutlet BDSKEdgeView *pdfContentBox; - IBOutlet SKSplitView *splitView; IBOutlet NSBox *leftSideContentBox; IBOutlet NSBox *leftSideBox; IBOutlet BDSKEdgeView *leftSideEdgeView; + IBOutlet BDSKCollapsibleView *leftSideCollapsibleView; + IBOutlet NSSegmentedControl *leftSideButton; + IBOutlet NSSearchField *searchField; + IBOutlet NSBox *rightSideContentBox; IBOutlet NSBox *rightSideBox; IBOutlet BDSKEdgeView *rightSideEdgeView; + IBOutlet NSSegmentedControl *rightSideButton; + IBOutlet NSView *currentLeftSideView; + IBOutlet NSView *currentRightSideView; + SKLeftSidePaneState leftSidePaneState; + SKRightSidePaneState rightSidePaneState; + IBOutlet NSOutlineView *outlineView; + IBOutlet NSView *tocView; PDFOutline *pdfOutline; BOOL updatingOutlineSelection; - IBOutlet NSSearchField *findField; + IBOutlet NSArrayController *thumbnailArrayController; + IBOutlet SKThumbnailTableView *thumbnailTableView; + IBOutlet NSView *thumbnailView; + NSMutableArray *thumbnails; + BOOL updatingThumbnailSelection; + NSMutableIndexSet *dirtyThumbnailIndexes; + NSTimer *thumbnailTimer; + IBOutlet NSArrayController *findArrayController; + IBOutlet NSTableView *findTableView; + IBOutlet NSView *findView; + IBOutlet BDSKEdgeView *findEdgeView; + IBOutlet BDSKCollapsibleView *findCollapsibleView; + IBOutlet NSProgressIndicator *spinner; + NSMutableArray *searchResults; + BOOL findPanelFind; + IBOutlet NSArrayController *noteArrayController; IBOutlet NSTreeController *noteTreeController; IBOutlet SKNoteOutlineView *noteOutlineView; + IBOutlet NSView *noteView; BOOL updatingNoteSelection; NSArray *selectedNoteIndexPaths; PDFAnnotation *selectedNote; + IBOutlet NSArrayController *snapshotArrayController; + IBOutlet SKSnapshotTableView *snapshotTableView; + IBOutlet NSView *snapshotView; + NSMutableArray *snapshots; + NSMutableIndexSet *dirtySnapshotIndexes; + NSTimer *snapshotTimer; + + NSWindow *mainWindow; + SKFullScreenWindow *fullScreenWindow; + SKSideWindow *leftSideWindow; + SKSideWindow *rightSideWindow; + IBOutlet NSSegmentedControl *backForwardButton; IBOutlet NSView *pageNumberView; IBOutlet NSStepper *pageNumberStepper; @@ -104,49 +144,19 @@ IBOutlet NSSegmentedControl *annotationModeButton; IBOutlet NSTextField *scaleField; IBOutlet NSPopUpButton *displayBoxPopUpButton; - IBOutlet NSSearchField *searchField; - IBOutlet BDSKCollapsibleView *searchBox; NSMutableDictionary *toolbarItems; - IBOutlet NSSegmentedControl *leftSideButton; - IBOutlet NSSegmentedControl *rightSideButton; - IBOutlet NSWindow *choosePageSheet; IBOutlet NSTextField *choosePageField; - NSWindow *mainWindow; - SKFullScreenWindow *fullScreenWindow; - SKSideWindow *leftSideWindow; - SKSideWindow *rightSideWindow; + IBOutlet NSWindow *saveProgressSheet; + IBOutlet NSProgressIndicator *saveProgressBar; + NSMutableArray *lastViewedPages; + BOOL isPresentation; SKPDFViewState savedState; - IBOutlet NSTableView *currentTableView; - SKLeftSidePaneState leftSidePaneState; - SKRightSidePaneState rightSidePaneState; - - IBOutlet NSTableView *findTableView; - NSMutableArray *searchResults; - IBOutlet NSArrayController *findArrayController; - IBOutlet BDSKEdgeView *findEdgeView; - IBOutlet BDSKCollapsibleView *findCollapsibleView; - IBOutlet NSProgressIndicator *spinner; - - IBOutlet NSArrayController *thumbnailArrayController; - IBOutlet SKThumbnailTableView *thumbnailTableView; - NSMutableArray *thumbnails; - BOOL updatingThumbnailSelection; - NSMutableIndexSet *dirtyThumbnailIndexes; - NSTimer *thumbnailTimer; - - NSMutableIndexSet *dirtySnapshotIndexes; - NSTimer *snapshotTimer; - - IBOutlet NSArrayController *snapshotArrayController; - IBOutlet SKSnapshotTableView *snapshotTableView; - NSMutableArray *snapshots; - float lastLeftSidePaneWidth; float lastRightSidePaneWidth; @@ -154,13 +164,6 @@ float snapshotCacheSize; BOOL edited; - - BOOL findPanelFind; - - IBOutlet NSWindow *saveProgressSheet; - IBOutlet NSProgressIndicator *saveProgressBar; - - NSMutableArray *lastViewedPages; } - (IBAction)pickColor:(id)sender; Modified: skim/SKMainWindowController.m =================================================================== --- skim/SKMainWindowController.m 2007-02-24 10:59:51 UTC (rev 9910) +++ skim/SKMainWindowController.m 2007-02-24 12:34:57 UTC (rev 9911) @@ -90,7 +90,6 @@ static NSString *SKDocumentToolbarDisplayBoxItemIdentifier = @"SKDocumentToolbarDisplayBoxItemIdentifier"; static NSString *SKDocumentToolbarContentsPaneItemIdentifier = @"SKDocumentToolbarContentsPaneItemIdentifier"; static NSString *SKDocumentToolbarNotesPaneItemIdentifier = @"SKDocumentToolbarNotesPaneItemIdentifier"; -static NSString *SKDocumentToolbarSearchItemIdentifier = @"SKDocumentToolbarSearchItemIdentifier"; #define TOOLBAR_SEARCHFIELD_MIN_SIZE NSMakeSize(110.0, 22.0) #define TOOLBAR_SEARCHFIELD_MAX_SIZE NSMakeSize(1000.0, 22.0) @@ -99,6 +98,14 @@ - (id)observedObject; @end +@interface NSResponder (SKExtensions) +- (BOOL)isDescendantOf:(NSView *)aView; +@end + +@implementation NSResponder (SKExtensions) +- (BOOL)isDescendantOf:(NSView *)aView { return NO; } +@end + @implementation SKMainWindowController + (void)initialize { @@ -148,11 +155,6 @@ [lastViewedPages release]; [selectedNoteIndexPaths release]; [selectedNote release]; - [[outlineView enclosingScrollView] release]; - [[[findTableView enclosingScrollView] superview] release]; - [[thumbnailTableView enclosingScrollView] release]; - [[noteOutlineView enclosingScrollView] release]; - [[snapshotTableView enclosingScrollView] release]; [leftSideWindow release]; [rightSideWindow release]; [fullScreenWindow release]; @@ -169,12 +171,6 @@ // this is not called automatically, because the document overrides makeWindowControllers [[self document] windowControllerDidLoadNib:self]; - [[outlineView enclosingScrollView] retain]; - [[[findTableView enclosingScrollView] superview] retain]; - [[thumbnailTableView enclosingScrollView] retain]; - [[noteOutlineView enclosingScrollView] retain]; - [[snapshotTableView enclosingScrollView] retain]; - NSRect frame = [leftSideButton frame]; frame.size.height = SEGMENTED_CONTROL_HEIGHT; [leftSideButton setFrame:frame]; @@ -187,8 +183,8 @@ [[rightSideButton cell] setToolTip:NSLocalizedString(@"View Notes", @"Tool tip message") forSegment:SKNoteSidePaneState]; [[rightSideButton cell] setToolTip:NSLocalizedString(@"View Snapshots", @"Tool tip message") forSegment:SKSnapshotSidePaneState]; - [searchBox setCollapseEdges:BDSKMaxXEdgeMask | BDSKMinYEdgeMask]; - [searchBox setMinSize:NSMakeSize(100.0, 42.0)]; + [leftSideCollapsibleView setCollapseEdges:BDSKMaxXEdgeMask | BDSKMinYEdgeMask]; + [leftSideCollapsibleView setMinSize:NSMakeSize(100.0, 42.0)]; [findCollapsibleView setCollapseEdges:BDSKMaxXEdgeMask | BDSKMinYEdgeMask]; [findCollapsibleView setMinSize:NSMakeSize(50.0, 25.0)]; @@ -198,6 +194,9 @@ [leftSideEdgeView setEdges:BDSKMaxXEdgeMask]; [rightSideEdgeView setEdges:BDSKMinXEdgeMask]; + [self displayOutlineView]; + [self displayNoteView]; + // we retain as we might replace it with the full screen window mainWindow = [[self window] retain]; @@ -466,8 +465,8 @@ if (leftSidePaneState != newLeftSidePaneState) { leftSidePaneState = newLeftSidePaneState; - if ([findField stringValue] && [[findField stringValue] isEqualToString:@""] == NO) { - [findField setStringValue:@""]; + if ([searchField stringValue] && [[searchField stringValue] isEqualToString:@""] == NO) { + [searchField setStringValue:@""]; [self removeTemporaryAnnotations]; } @@ -833,7 +832,7 @@ [fullScreenWindow setFrame:[screen frame] display:NO]; } - if ([[mainWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[mainWindow firstResponder] isDescendantOf:pdfView]) + if ([[mainWindow firstResponder] isDescendantOf:pdfView]) [mainWindow makeFirstResponder:nil]; [fullScreenWindow setMainView:pdfView]; [pdfView setBackgroundColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKFullScreenBackgroundColorKey]]]; @@ -898,13 +897,13 @@ [rightSideWindow moveToScreen:[[self window] screen]]; } - if ([[mainWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[mainWindow firstResponder] isDescendantOf:leftSideBox]) + if ([[mainWindow firstResponder] isDescendantOf:leftSideBox]) [mainWindow makeFirstResponder:nil]; [leftSideBox retain]; // leftSideBox is removed from its old superview in the process [leftSideWindow setMainView:leftSideBox]; [leftSideBox release]; - if ([[mainWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[mainWindow firstResponder] isDescendantOf:rightSideBox]) + if ([[mainWindow firstResponder] isDescendantOf:rightSideBox]) [mainWindow makeFirstResponder:nil]; [rightSideBox retain]; [rightSideWindow setMainView:rightSideBox]; @@ -925,14 +924,14 @@ [leftSideWindow orderOut:self]; [rightSideWindow orderOut:self]; - if ([[leftSideWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[leftSideWindow firstResponder] isDescendantOf:leftSideBox]) + if ([[leftSideWindow firstResponder] isDescendantOf:leftSideBox]) [leftSideWindow makeFirstResponder:nil]; [leftSideBox retain]; // leftSideBox is removed from its old superview in the process [leftSideBox setFrame:[leftSideContentBox bounds]]; [leftSideContentBox addSubview:leftSideBox]; [leftSideBox release]; - if ([[rightSideWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[rightSideWindow firstResponder] isDescendantOf:rightSideBox]) + if ([[rightSideWindow firstResponder] isDescendantOf:rightSideBox]) [rightSideWindow makeFirstResponder:nil]; [rightSideBox retain]; // rightSideBox is removed from its old superview in the process [rightSideBox setFrame:[rightSideContentBox bounds]]; @@ -1037,7 +1036,7 @@ if ([self isFullScreen]) [self hideSideWindows]; - if ([[fullScreenWindow firstResponder] respondsToSelector:@selector(isDescendantOf:)] && [(NSView *)[fullScreenWindow firstResponder] isDescendantOf:pdfView]) + if ([[fullScreenWindow firstResponder] isDescendantOf:pdfView]) [fullScreenWindow makeFirstResponder:nil]; [pdfView setHasNavigation:NO autohidesCursor:NO]; [pdfView setFrame:[[pdfContentBox contentView] bounds]]; @@ -1071,25 +1070,18 @@ #pragma mark Swapping tables -- (void)replaceTable:(NSTableView *)oldTableView withTable:(NSTableView *)newTableView animate:(BOOL)animate { - if ([newTableView window] == nil) { - NSView *newTable = [newTableView enclosingScrollView]; - NSView *oldTable = [oldTableView enclosingScrollView]; - BOOL wasFirstResponder = [[[oldTableView window] firstResponder] isEqual:oldTableView]; +- (void)replaceSideView:(NSView *)oldView withView:(NSView *)newView animate:(BOOL)animate { + if ([newView window] == nil) { + BOOL wasFirstResponder = [[[oldView window] firstResponder] isDescendantOf:oldView]; - if ([oldTableView isEqual:findTableView]) - oldTable = [oldTable superview]; - if ([newTableView isEqual:findTableView]) - newTable = [newTable superview]; + [newView setFrame:[oldView frame]]; + [newView setHidden:animate]; + [[oldView superview] addSubview:newView]; - [newTable setFrame:[oldTable frame]]; - [newTable setHidden:animate]; - [[oldTable superview] addSubview:newTable]; - if (animate) { NSViewAnimation *animation; - NSDictionary *fadeOutDict = [[NSDictionary alloc] initWithObjectsAndKeys:oldTable, NSViewAnimationTargetKey, NSViewAnimationFadeOutEffect, NSViewAnimationEffectKey, nil]; - NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:newTable, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; + NSDictionary *fadeOutDict = [[NSDictionary alloc] initWithObjectsAndKeys:oldView, NSViewAnimationTargetKey, NSViewAnimationFadeOutEffect, NSViewAnimationEffectKey, nil]; + NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:newView, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; animation = [[[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeOutDict, fadeInDict, nil]] autorelease]; [fadeOutDict release]; @@ -1102,63 +1094,67 @@ } if (wasFirstResponder) - [[newTableView window] makeFirstResponder:newTableView]; - [oldTable removeFromSuperview]; - [oldTable setHidden:NO]; + [[newView window] makeFirstResponder:[newView nextKeyView]]; + [oldView removeFromSuperview]; + [oldView setHidden:NO]; } } - (void)displayOutlineView { - [self replaceTable:currentTableView withTable:outlineView animate:NO]; - currentTableView = outlineView; + [self replaceSideView:currentLeftSideView withView:tocView animate:NO]; + currentLeftSideView = tocView; [self updateOutlineSelection]; } - (void)fadeInOutlineView { - [self replaceTable:currentTableView withTable:outlineView animate:YES]; - currentTableView = outlineView; + [self replaceSideView:currentLeftSideView withView:tocView animate:YES]; + currentLeftSideView = tocView; [self updateOutlineSelection]; } - (void)displayThumbnailView { - [self replaceTable:currentTableView withTable:thumbnailTableView animate:NO]; - currentTableView = thumbnailTableView; + [self replaceSideView:currentLeftSideView withView:thumbnailView animate:NO]; + currentLeftSideView = thumbnailView; [self updateThumbnailSelection]; [self updateThumbnailsIfNeeded]; } - (void)fadeInThumbnailView { - [self replaceTable:currentTableView withTable:thumbnailTableView animate:YES]; - currentTableView = thumbnailTableView; + [self replaceSideView:currentLeftSideView withView:thumbnailView animate:YES]; + currentLeftSideView = thumbnailView; [self updateThumbnailSelection]; [self updateThumbnailsIfNeeded]; } - (void)displaySearchView { - [self replaceTable:currentTableView withTable:findTableView animate:NO]; - currentTableView = findTableView; + [self replaceSideView:currentLeftSideView withView:findView animate:NO]; + currentLeftSideView = findView; } - (void)fadeInSearchView { - [self replaceTable:currentTableView withTable:findTableView animate:YES]; - currentTableView = findTableView; + [self replaceSideView:currentLeftSideView withView:findView animate:YES]; + currentLeftSideView = findView; } - (void)displayNoteView { - [self replaceTable:snapshotTableView withTable:noteOutlineView animate:NO]; + [self replaceSideView:currentRightSideView withView:noteView animate:NO]; + currentRightSideView = noteView; } - (void)fadeInNoteView { - [self replaceTable:snapshotTableView withTable:noteOutlineView animate:YES]; + [self replaceSideView:currentRightSideView withView:noteView animate:YES]; + currentRightSideView = noteView; } - (void)displaySnapshotView { - [self replaceTable:noteOutlineView withTable:snapshotTableView animate:NO]; + [self replaceSideView:currentRightSideView withView:snapshotView animate:NO]; + currentRightSideView = snapshotView; [self updateSnapshotsIfNeeded]; } - (void)fadeInSnapshotView { - [self replaceTable:noteOutlineView withTable:snapshotTableView animate:YES]; + [self replaceSideView:currentRightSideView withView:snapshotTableView animate:YES]; + currentRightSideView = snapshotTableView; [self updateSnapshotsIfNeeded]; } @@ -1513,7 +1509,7 @@ } } else if ([key isEqualToString:SKSearchHighlightColorKey]) { if ([[NSUserDefaults standardUserDefaults] boolForKey:SKShouldHighlightSearchResultsKey] && - [[findField stringValue] length] && [findTableView numberOfSelectedRows]) { + [[searchField stringValue] length] && [findTableView numberOfSelectedRows]) { // clear the selection [self removeTemporaryAnnotations]; @@ -1524,7 +1520,7 @@ [self addAnnotationsForSelection:sel]; } } else if ([key isEqualToString:SKShouldHighlightSearchResultsKey]) { - if ([[findField stringValue] length] && [findTableView numberOfSelectedRows]) { + if ([[searchField stringValue] length] && [findTableView numberOfSelectedRows]) { // clear the selection [self removeTemporaryAnnotations]; @@ -2233,17 +2229,6 @@ [item setMaxSize:[displayBoxPopUpButton bounds].size]; [toolbarItems setObject:item forKey:SKDocumentToolbarDisplayBoxItemIdentifier]; [item release]; - - item = [[NSToolbarItem alloc] initWithItemIdentifier:SKDocumentToolbarSearchItemIdentifier]; - [item setLabel:NSLocalizedString(@"Search", @"Toolbar item label")]; - [item setPaletteLabel:NSLocalizedString(@"Search", @"Toolbar item label")]; - [item setToolTip:NSLocalizedString(@"Search", @"Tool tip message")]; - [item setTarget:self]; - [item setView:searchField]; - [item setMinSize:TOOLBAR_SEARCHFIELD_MIN_SIZE]; - [item setMaxSize:TOOLBAR_SEARCHFIELD_MAX_SIZE]; - [toolbarItems setObject:item forKey:SKDocumentToolbarSearchItemIdentifier]; - [item release]; item = [[NSToolbarItem alloc] initWithItemIdentifier:SKDocumentToolbarInfoItemIdentifier]; [item setLabel:NSLocalizedString(@"Info", @"Toolbar item label")]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |