--- chimera/BrowserWindowController.mm 2002/01/31 03:13:19 1.4 +++ chimera/BrowserWindowController.mm 2002/02/07 05:11:38 1.18 @@ -13,6 +13,7 @@ static NSString *StopToolbarItemIdentifi static NSString *HomeToolbarItemIdentifier = @"Home Toolbar Item"; static NSString *LocationToolbarItemIdentifier = @"Location Toolbar Item"; static NSString *SidebarToolbarItemIdentifier = @"Sidebar Toolbar Item"; +static NSString *PrintToolbarItemIdentifier = @"Print Toolbar Item"; @interface BrowserWindowController(Private) - (void)setupToolbar; @@ -26,6 +27,17 @@ static NSString *SidebarToolbarItemIdent return [super init]; } +- (void)windowWillClose:(NSNotification *)notification +{ + [self autorelease]; +} + +- (void)dealloc +{ + [mBrowserView windowClosed]; + [super dealloc]; +} + - (void)windowDidLoad { mInitialized = YES; @@ -35,6 +47,13 @@ static NSString *SidebarToolbarItemIdent [self loadURL: mURL]; [mURL release]; } + + [mSidebarDrawer setDelegate: self]; +} + +- (void)drawerDidOpen:(NSNotification *)aNotification +{ + [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html"] flags:NSLoadFlagsNone]; } - (void)setupToolbar @@ -58,6 +77,7 @@ static NSString *SidebarToolbarItemIdent HomeToolbarItemIdentifier, LocationToolbarItemIdentifier, SidebarToolbarItemIdentifier, + PrintToolbarItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarSpaceItemIdentifier, @@ -136,11 +156,19 @@ static NSString *SidebarToolbarItemIdent [toolbarItem setMaxSize:NSMakeSize(2560,32)]; [menuFormRep setTarget:self]; - [menuFormRep setAction:@selector(displayLocationSheet:)]; + [menuFormRep setAction:@selector(performAppropriateLocationAction)]; [menuFormRep setTitle:[toolbarItem label]]; [toolbarItem setMenuFormRepresentation:menuFormRep]; - + mLocationToolbarItem = toolbarItem; + + } else if ( [itemIdent isEqual:PrintToolbarItemIdentifier] ) { + [toolbarItem setLabel:@"Print"]; + [toolbarItem setPaletteLabel:@"Print"]; + [toolbarItem setToolTip:@"Print this page"]; + [toolbarItem setImage:[NSImage imageNamed:@"print"]]; + [toolbarItem setTarget:self]; + [toolbarItem setAction:@selector(printDocument)]; } else { toolbarItem = nil; } @@ -165,43 +193,102 @@ static NSString *SidebarToolbarItemIdent return YES; } --(void)updateToolbarItems +- (void)updateToolbarItems { [[[self window] toolbar] validateVisibleItems]; } --(void) focusURLBar +- (void)performAppropriateLocationAction +{ + if ( [[[self window] toolbar] isVisible] ) { + if ( ([[[self window] toolbar] displayMode] == NSToolbarDisplayModeIconAndLabel) || + ([[[self window] toolbar] displayMode] == NSToolbarDisplayModeIconOnly) ) { + [self focusURLBar]; + } else { + [self beginLocationSheet]; + } + } else { + [self beginLocationSheet]; + } +} + +- (void)focusURLBar { [mURLBar selectText: self]; } --(IBAction) back:(id)aSender +- (void)beginLocationSheet +{ + [NSApp beginSheet: mLocationSheetWindow + modalForWindow: [self window] + modalDelegate: nil + didEndSelector: nil + contextInfo: nil]; +} + +- (IBAction)endLocationSheet:(id)sender +{ + [mLocationSheetWindow orderOut:self]; + [NSApp endSheet:mLocationSheetWindow returnCode:1]; + [self loadURL:[NSURL URLWithString:[mLocationSheetURLField stringValue]]]; +} + +- (IBAction)goToLocationFromToolbarURLField:(id)sender +{ + [self loadURL:[NSURL URLWithString:[sender stringValue]]]; +} + +- (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList +{ + [[mBrowserView getBrowserView] saveDocument: aFilterView filterList: aFilterList]; +} + +- (void)printDocument +{ + [[mBrowserView getBrowserView] printDocument]; +} + +- (void)printPreview +{ + [[mBrowserView getBrowserView] printPreview]; +} + +- (void)findInPage +{ + [[mBrowserView getBrowserView] findInPage]; +} + +- (void)findAgain +{ + [[mBrowserView getBrowserView] findAgain]; +} + +- (IBAction)back:(id)aSender { [[mBrowserView getBrowserView] goBack]; } --(IBAction) forward:(id)aSender +- (IBAction)forward:(id)aSender { [[mBrowserView getBrowserView] goForward]; } --(IBAction) reload:(id)aSender +- (IBAction)reload:(id)aSender { [[mBrowserView getBrowserView] reload: 0]; } --(IBAction) stop:(id)aSender +- (IBAction)stop:(id)aSender { [[mBrowserView getBrowserView] stop: 0]; } --(IBAction) home:(id)aSender +- (IBAction)home:(id)aSender { - NSURL* url = [NSURL URLWithString:@"about:blank"]; - [[mBrowserView getBrowserView] loadURI:url flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString:@"about:blank"] flags:NSLoadFlagsNone]; } --(IBAction) toggleSidebar:(id)aSender +- (IBAction)toggleSidebar:(id)aSender { if ( ([mSidebarDrawer state] == NSDrawerClosedState) || ([mSidebarDrawer state] == NSDrawerClosingState) ) { [mSidebarDrawer open]; @@ -219,5 +306,24 @@ static NSString *SidebarToolbarItemIdent [mURL retain]; } } + +- (void)updateLocationFields:(NSString *)locationString +{ +/* //commenting this out because it doesn't work right yet. + if ( [locationString length] > 30 ) { + [[mLocationToolbarItem menuFormRepresentation] setTitle: + [NSString stringWithFormat:@"Location: %@...", [locationString substringToIndex:31]]]; + } else { + [[mLocationToolbarItem menuFormRepresentation] setTitle: + [NSString stringWithFormat:@"Location: %@", locationString]]; + } +*/ + + [mURLBar setStringValue:locationString]; + [mLocationSheetURLField setStringValue:locationString]; + + [[self window] update]; + [[self window] display]; +} @end