version 1.10, 2002/02/05 00:16:30
|
version 1.24, 2002/03/08 03:18:00
|
Line 1
|
Line 1
|
/* | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
* MyBrowserView.mm | /* ***** BEGIN LICENSE BLOCK ***** |
*/ | * Version: NPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Netscape Public License |
| * Version 1.1 (the "License"); you may not use this file except in |
| * compliance with the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/NPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is mozilla.org code. |
| * |
| * The Initial Developer of the Original Code is |
| * Netscape Communications Corporation. |
| * Portions created by the Initial Developer are Copyright (C) 2002 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either the GNU General Public License Version 2 or later (the "GPL"), or |
| * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the NPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the NPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
|
|
#import "MyBrowserView.h" |
#import "MyBrowserView.h" |
|
#import "BrowserWindowController.h" |
|
|
#include "nsCOMPtr.h" |
#include "nsCOMPtr.h" |
#include "nsIServiceManager.h" |
#include "nsIServiceManager.h" |
#include "nsIIOService.h" |
#include "nsIIOService.h" |
|
#include "ContentClickListener.h" |
|
#include "nsIDOMWindow.h" |
|
#include "nsIChromeEventHandler.h" |
|
#include "nsPIDOMWindow.h" |
|
#include "nsIDOMEventReceiver.h" |
|
|
#define DOCUMENT_DONE_STRING @"Document: Done" |
#define DOCUMENT_DONE_STRING @"Document: Done" |
#define LOADING_STRING @"Loading..." |
#define LOADING_STRING @"Loading..." |
Line 25 static const char* ioServiceContractID =
|
Line 64 static const char* ioServiceContractID =
|
|
|
-(void)dealloc |
-(void)dealloc |
{ |
{ |
|
printf("My browser view died.\n"); |
|
|
|
[[NSNotificationCenter defaultCenter] removeObserver: self]; |
|
|
[defaultStatus release]; |
[defaultStatus release]; |
[loadingStatus release]; |
[loadingStatus release]; |
|
|
Line 36 static const char* ioServiceContractID =
|
Line 79 static const char* ioServiceContractID =
|
[browserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; |
[browserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; |
} |
} |
|
|
- (void)awakeFromNib | -(void)disconnectView |
| { |
| urlbar = nil; |
| status = nil; |
| progress = nil; |
| progressSuper = nil; |
| mIsPrimary = NO; |
| [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| |
| [browserView setActive: NO]; |
| } |
| |
| - (id)initWithFrame:(NSRect)frameRect |
{ |
{ |
browserView = [[[NSBrowserView alloc] initWithFrame:[self bounds]] autorelease]; | [super initWithFrame: frameRect]; |
[self addSubview:browserView]; | browserView = [[[NSBrowserView alloc] initWithFrame:[self bounds]] autorelease]; |
[browserView setContainer:self]; | [self addSubview:browserView]; |
[browserView addListener:self]; | [browserView setContainer:self]; |
| [browserView addListener:self]; |
| mIsBusy = NO; |
| mListenersAttached = NO; |
| return self; |
| } |
|
|
|
-(void)setTab: (NSTabViewItem*)tab |
|
{ |
|
mTab = tab; |
|
} |
|
|
|
-(void)makePrimaryBrowserView: (id)aUrlbar status: (id)aStatus |
|
progress: (id)aProgress windowController: aWindowController |
|
{ |
|
urlbar = aUrlbar; |
|
status = aStatus; |
|
progress = aProgress; |
|
progressSuper = [aProgress superview]; |
|
mWindowController = aWindowController; |
|
|
|
if (!mIsBusy) |
|
[progress removeFromSuperview]; |
|
|
defaultStatus = NULL; |
defaultStatus = NULL; |
loadingStatus = DOCUMENT_DONE_STRING; |
loadingStatus = DOCUMENT_DONE_STRING; |
[status setStringValue:loadingStatus]; |
[status setStringValue:loadingStatus]; |
mIsBusy = NO; |
|
|
|
[progress retain]; |
|
[progress removeFromSuperview]; |
|
|
|
|
mIsPrimary = YES; |
|
|
nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID)); |
nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID)); |
if (!ioService) |
if (!ioService) |
return; |
return; |
PRBool offline = PR_FALSE; |
PRBool offline = PR_FALSE; |
ioService->GetOffline(&offline); |
ioService->GetOffline(&offline); |
mOffline = offline; |
mOffline = offline; |
|
|
|
if (mWindowController) // Only register if we're the content area. |
|
[[NSNotificationCenter defaultCenter] addObserver:self |
|
selector:@selector(offlineModeChanged:) |
|
name:@"offlineModeChanged" |
|
object:nil]; |
|
|
|
// Update the URL bar. |
|
[mWindowController updateLocationFields:[self getCurrentURLSpec]]; |
|
|
|
if (mWindowController && !mListenersAttached) { |
|
mListenersAttached = YES; |
|
|
|
// We need to hook up our click and context menu listeners. |
|
ContentClickListener* clickListener = new ContentClickListener(mWindowController); |
|
if (!clickListener) |
|
return; |
|
|
|
nsCOMPtr<nsIDOMWindow> contentWindow = getter_AddRefs([[self getBrowserView] getContentWindow]); |
|
nsCOMPtr<nsPIDOMWindow> piWindow(do_QueryInterface(contentWindow)); |
|
nsCOMPtr<nsIChromeEventHandler> chromeHandler; |
|
piWindow->GetChromeEventHandler(getter_AddRefs(chromeHandler)); |
|
nsCOMPtr<nsIDOMEventReceiver> rec(do_QueryInterface(chromeHandler)); |
|
rec->AddEventListenerByIID(clickListener, NS_GET_IID(nsIDOMMouseListener)); |
|
} |
|
} |
|
|
|
-(NSString*)getCurrentURLSpec |
|
{ |
|
return [browserView getCurrentURLSpec]; |
|
} |
|
|
|
- (void)awakeFromNib |
|
{ |
} |
} |
|
|
- (void)setFrame:(NSRect)frameRect |
- (void)setFrame:(NSRect)frameRect |
Line 79 static const char* ioServiceContractID =
|
Line 188 static const char* ioServiceContractID =
|
} |
} |
|
|
[progressSuper addSubview:progress]; |
[progressSuper addSubview:progress]; |
[progress release]; |
|
[progress setIndeterminate:YES]; |
[progress setIndeterminate:YES]; |
[progress startAnimation:self]; |
[progress startAnimation:self]; |
|
|
Line 87 static const char* ioServiceContractID =
|
Line 195 static const char* ioServiceContractID =
|
[status setStringValue:loadingStatus]; |
[status setStringValue:loadingStatus]; |
|
|
mIsBusy = YES; |
mIsBusy = YES; |
|
[mTab setLabel: LOADING_STRING]; |
|
|
if (mWindowController) |
if (mWindowController) |
[mWindowController updateToolbarItems]; |
[mWindowController updateToolbarItems]; |
} |
} |
Line 95 static const char* ioServiceContractID =
|
Line 205 static const char* ioServiceContractID =
|
{ |
{ |
[progress setIndeterminate:YES]; |
[progress setIndeterminate:YES]; |
[progress stopAnimation:self]; |
[progress stopAnimation:self]; |
[progress retain]; |
|
[progress removeFromSuperview]; |
[progress removeFromSuperview]; |
|
|
loadingStatus = DOCUMENT_DONE_STRING; |
loadingStatus = DOCUMENT_DONE_STRING; |
Line 130 static const char* ioServiceContractID =
|
Line 239 static const char* ioServiceContractID =
|
[mWindowController updateLocationFields:spec]; |
[mWindowController updateLocationFields:spec]; |
} |
} |
|
|
|
- (void)onStatusChange:(NSString*)aStatusString |
|
{ |
|
[status setStringValue: aStatusString]; |
|
} |
|
|
- (void)setStatus:(NSString *)statusString ofType:(NSStatusType)type |
- (void)setStatus:(NSString *)statusString ofType:(NSStatusType)type |
{ |
{ |
if (type == NSStatusTypeScriptDefault) { |
if (type == NSStatusTypeScriptDefault) { |
Line 161 static const char* ioServiceContractID =
|
Line 275 static const char* ioServiceContractID =
|
|
|
- (void)setTitle:(NSString *)title |
- (void)setTitle:(NSString *)title |
{ |
{ |
|
// We must be the primary content area. |
|
if (mIsPrimary && mWindowController) { |
|
if (mOffline) { |
|
NSString* newTitle; |
|
if (title && ![title isEqualToString:@""]) |
|
newTitle = [title stringByAppendingString: @" [Working Offline]"]; |
|
else |
|
newTitle = @"Untitled [Working Offline]"; |
|
[[mWindowController window] setTitle: newTitle]; |
|
} |
|
else { |
|
if (title && ![title isEqualToString:@""]) |
|
[[mWindowController window] setTitle:title]; |
|
else |
|
[[mWindowController window] setTitle:@"Untitled"]; |
|
} |
|
} |
|
|
|
// Always set the tab. |
|
if (title && ![title isEqualToString:@""]) |
|
[mTab setLabel:title]; |
|
else |
|
[mTab setLabel:@"Untitled"]; |
|
} |
|
|
|
- (void)offlineModeChanged: (NSNotification*)aNotification |
|
{ |
|
nsCOMPtr<nsIIOService> ioService(do_GetService(ioServiceContractID)); |
|
if (!ioService) |
|
return; |
|
PRBool offline = PR_FALSE; |
|
ioService->GetOffline(&offline); |
|
mOffline = offline; |
|
|
if (mOffline) { |
if (mOffline) { |
NSString* newTitle; | NSString* newTitle = [[[mWindowController window] title] stringByAppendingString: @" [Working Offline]"]; |
if (title && ![title isEqualToString:@""]) | |
newTitle = [title stringByAppendingString: @" [Working Offline]"]; | |
else | |
newTitle = @"Untitled [Working Offline]"; | |
[[mWindowController window] setTitle: newTitle]; |
[[mWindowController window] setTitle: newTitle]; |
} |
} |
else { |
else { |
if (title && ![title isEqualToString:@""]) | NSArray* titleItems = [[[mWindowController window] title] componentsSeparatedByString:@" [Working Offline]"]; |
[[mWindowController window] setTitle:title]; | [[mWindowController window] setTitle: [titleItems objectAtIndex: 0]]; |
else | |
[[mWindowController window] setTitle:@"Untitled"]; | |
} |
} |
} |
} |
|
|
Line 192 static const char* ioServiceContractID =
|
Line 334 static const char* ioServiceContractID =
|
|
|
- (NSBrowserView*)createBrowserWindow:(unsigned int)mask |
- (NSBrowserView*)createBrowserWindow:(unsigned int)mask |
{ |
{ |
// XXX not implemented | BrowserWindowController* controller = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; |
return NULL; | [controller enterModalSession]; |
| return [[controller getMyBrowserView] getBrowserView]; |
} |
} |
|
|
- (NSBrowserView*)getBrowserView |
- (NSBrowserView*)getBrowserView |