Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

cern::laser::guiplatform::util::BrowserLauncher Class Reference

List of all members.

Static Public Member Functions

void openURL (String url) throws IOException

Static Package Functions

 [static initializer]

Private Member Functions

 BrowserLauncher ()

Static Private Member Functions

boolean loadClasses ()
Object locateBrowser ()
native int ICStart (int[] instance, int signature)
native int ICStop (int[] instance)
native int ICLaunchURL (int instance, byte[] hint, byte[] data, int len, int[] selectionStart, int[] selectionEnd)

Static Private Attributes

int jvm
Object browser
boolean loadedWithoutErrors
Class mrjFileUtilsClass
Class mrjOSTypeClass
Class aeDescClass
Constructor aeTargetConstructor
Constructor appleEventConstructor
Constructor aeDescConstructor
Method findFolder
Method getFileCreator
Method getFileType
Method openURL
Method makeOSType
Method putParameter
Method sendNoReply
Object kSystemFolderType
Integer keyDirectObject
Integer kAutoGenerateReturnID
Integer kAnyTransactionID
Object linkage
final String JDirect_MacOSX = "/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox"
final int MRJ_2_0 = 0
final int MRJ_2_1 = 1
final int MRJ_3_0 = 3
final int MRJ_3_1 = 4
final int WINDOWS_NT = 5
final int WINDOWS_9x = 6
final int OTHER = -1
final String FINDER_TYPE = "FNDR"
final String FINDER_CREATOR = "MACS"
final String GURL_EVENT = "GURL"
final String FIRST_WINDOWS_PARAMETER = "/c"
final String SECOND_WINDOWS_PARAMETER = "start"
final String THIRD_WINDOWS_PARAMETER = "\"\""
final String NETSCAPE_REMOTE_PARAMETER = "-remote"
final String NETSCAPE_OPEN_PARAMETER_START = "'openURL("
final String NETSCAPE_OPEN_PARAMETER_END = ")'"
String errorMessage

Detailed Description

BrowserLauncher is a class that provides one static method, openURL, which opens the default web browser for the current user of the system to the given URL. It may support other protocols depending on the system -- mailto, ftp, etc. -- but that has not been rigorously tested and is not guaranteed to work.

Yes, this is platform-specific code, and yes, it may rely on classes on certain platforms that are not part of the standard JDK. What we're trying to do, though, is to take something that's frequently desirable but inherently platform-specific -- opening a default browser -- and allow programmers (you, for example) to do so without worrying about dropping into native code or doing anything else similarly evil.

Anyway, this code is completely in Java and will run on all JDK 1.1-compliant systems without modification or a need for additional libraries. All classes that are required on certain platforms to allow this to run are dynamically loaded at runtime via reflection and, if not found, will not cause this to do anything other than returning an error when opening the browser.

There are certain system requirements for this class, as it's running through Runtime.exec(), which is Java's way of making a native system call. Currently, this requires that a Macintosh have a Finder which supports the GURL event, which is true for Mac OS 8.0 and 8.1 systems that have the Internet Scripting AppleScript dictionary installed in the Scripting Additions folder in the Extensions folder (which is installed by default as far as I know under Mac OS 8.0 and 8.1), and for all Mac OS 8.5 and later systems. On Windows, it only runs under Win32 systems (Windows 95, 98, and NT 4.0, as well as later versions of all). On other systems, this drops back from the inherently platform-sensitive concept of a default browser and simply attempts to launch Netscape via a shell command.

This code is Copyright 1999-2001 by Eric Albert (ejalbert@cs.stanford.edu) and may be redistributed or modified in any form without restrictions as long as the portion of this comment from this paragraph through the end of the comment is not removed. The author requests that he be notified of any application, applet, or other binary that makes use of this code, but that's more out of curiosity than anything and is not required. This software includes no warranty. The author is not repsonsible for any loss of data or functionality or any adverse or unexpected effects of using this software.

Credits:
Steven Spencer, JavaWorld magazine (Java Tip 66)
Thanks also to Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich, and Ron Rabakukk

Author:
Eric Albert (ejalbert@cs.stanford.edu)
Version:
1.4b1 (Released June 20, 2001)


Constructor & Destructor Documentation

cern::laser::guiplatform::util::BrowserLauncher::BrowserLauncher  )  [inline, private]
 

This class should be never be instantiated; this just ensures so.


Member Function Documentation

cern::laser::guiplatform::util::BrowserLauncher::[static initializer]  )  [inline, static, package]
 

An initialization block that determines the operating system and loads the necessary runtime data.

native int cern::laser::guiplatform::util::BrowserLauncher::ICLaunchURL int  instance,
byte[]  hint,
byte[]  data,
int  len,
int[]  selectionStart,
int[]  selectionEnd
[static, private]
 

native int cern::laser::guiplatform::util::BrowserLauncher::ICStart int[]  instance,
int  signature
[static, private]
 

Methods required for Mac OS X. The presence of native methods does not cause any problems on other platforms.

native int cern::laser::guiplatform::util::BrowserLauncher::ICStop int[]  instance  )  [static, private]
 

boolean cern::laser::guiplatform::util::BrowserLauncher::loadClasses  )  [inline, static, private]
 

Called by a static initializer to load any classes, fields, and methods required at runtime to locate the user's web browser.

Returns:
true if all intialization succeeded false if any portion of the initialization failed

Object cern::laser::guiplatform::util::BrowserLauncher::locateBrowser  )  [inline, static, private]
 

Attempts to locate the default web browser on the local system. Caches results so it only locates the browser once for each use of this class per JVM instance.

Returns:
The browser for the system. Note that this may not be what you would consider to be a standard web browser; instead, it's the application that gets called to open the default web browser. In some cases, this will be a non-String object that provides the means of calling the default browser.

void cern::laser::guiplatform::util::BrowserLauncher::openURL String  url  )  throws IOException [inline, static]
 

Attempts to open the default web browser to the given URL.

Parameters:
url The URL to open
Exceptions:
IOException If the web browser could not be located or does not run


Member Data Documentation

Class cern::laser::guiplatform::util::BrowserLauncher::aeDescClass [static, private]
 

The com.apple.MacOS.AEDesc class

Constructor cern::laser::guiplatform::util::BrowserLauncher::aeDescConstructor [static, private]
 

The <init>(String) method of com.apple.MacOS.AEDesc

Constructor cern::laser::guiplatform::util::BrowserLauncher::aeTargetConstructor [static, private]
 

The <init>(int) method of com.apple.MacOS.AETarget

Constructor cern::laser::guiplatform::util::BrowserLauncher::appleEventConstructor [static, private]
 

The <init>(int, int, int) method of com.apple.MacOS.AppleEvent

Object cern::laser::guiplatform::util::BrowserLauncher::browser [static, private]
 

The browser for the system

String cern::laser::guiplatform::util::BrowserLauncher::errorMessage [static, private]
 

The message from any exception thrown throughout the initialization process.

final String cern::laser::guiplatform::util::BrowserLauncher::FINDER_CREATOR = "MACS" [static, private]
 

The creator code of the Finder on a Macintosh, which is needed to send AppleEvents to the application.

final String cern::laser::guiplatform::util::BrowserLauncher::FINDER_TYPE = "FNDR" [static, private]
 

The file type of the Finder on a Macintosh. Hardcoding "Finder" would keep non-U.S. English systems from working properly.

Method cern::laser::guiplatform::util::BrowserLauncher::findFolder [static, private]
 

The findFolder method of com.apple.mrj.MRJFileUtils

final String cern::laser::guiplatform::util::BrowserLauncher::FIRST_WINDOWS_PARAMETER = "/c" [static, private]
 

The first parameter that needs to be passed into Runtime.exec() to open the default web browser on Windows.

Method cern::laser::guiplatform::util::BrowserLauncher::getFileCreator [static, private]
 

The getFileCreator method of com.apple.mrj.MRJFileUtils

Method cern::laser::guiplatform::util::BrowserLauncher::getFileType [static, private]
 

The getFileType method of com.apple.mrj.MRJFileUtils

final String cern::laser::guiplatform::util::BrowserLauncher::GURL_EVENT = "GURL" [static, private]
 

The name for the AppleEvent type corresponding to a GetURL event.

final String cern::laser::guiplatform::util::BrowserLauncher::JDirect_MacOSX = "/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox" [static, private]
 

The framework to reference on Mac OS X

int cern::laser::guiplatform::util::BrowserLauncher::jvm [static, private]
 

The Java virtual machine that we are running on. Actually, in most cases we only care about the operating system, but some operating systems require us to switch on the VM.

Integer cern::laser::guiplatform::util::BrowserLauncher::kAnyTransactionID [static, private]
 

The kAnyTransactionID AppleEvent code

Integer cern::laser::guiplatform::util::BrowserLauncher::kAutoGenerateReturnID [static, private]
 

The kAutoGenerateReturnID AppleEvent code

Integer cern::laser::guiplatform::util::BrowserLauncher::keyDirectObject [static, private]
 

The keyDirectObject AppleEvent parameter type

Object cern::laser::guiplatform::util::BrowserLauncher::kSystemFolderType [static, private]
 

Actually an MRJOSType pointing to the System Folder on a Macintosh

Object cern::laser::guiplatform::util::BrowserLauncher::linkage [static, private]
 

The linkage object required for JDirect 3 on Mac OS X.

boolean cern::laser::guiplatform::util::BrowserLauncher::loadedWithoutErrors [static, private]
 

Caches whether any classes, methods, and fields that are not part of the JDK and need to be dynamically loaded at runtime loaded successfully.

Note that if this is false, openURL() will always return an IOException.

Method cern::laser::guiplatform::util::BrowserLauncher::makeOSType [static, private]
 

The makeOSType method of com.apple.MacOS.OSUtils

final int cern::laser::guiplatform::util::BrowserLauncher::MRJ_2_0 = 0 [static, private]
 

JVM constant for MRJ 2.0

final int cern::laser::guiplatform::util::BrowserLauncher::MRJ_2_1 = 1 [static, private]
 

JVM constant for MRJ 2.1 or later

final int cern::laser::guiplatform::util::BrowserLauncher::MRJ_3_0 = 3 [static, private]
 

JVM constant for Java on Mac OS X 10.0 (MRJ 3.0)

final int cern::laser::guiplatform::util::BrowserLauncher::MRJ_3_1 = 4 [static, private]
 

JVM constant for MRJ 3.1

Class cern::laser::guiplatform::util::BrowserLauncher::mrjFileUtilsClass [static, private]
 

The com.apple.mrj.MRJFileUtils class

Class cern::laser::guiplatform::util::BrowserLauncher::mrjOSTypeClass [static, private]
 

The com.apple.mrj.MRJOSType class

final String cern::laser::guiplatform::util::BrowserLauncher::NETSCAPE_OPEN_PARAMETER_END = ")'" [static, private]
 

final String cern::laser::guiplatform::util::BrowserLauncher::NETSCAPE_OPEN_PARAMETER_START = "'openURL(" [static, private]
 

final String cern::laser::guiplatform::util::BrowserLauncher::NETSCAPE_REMOTE_PARAMETER = "-remote" [static, private]
 

The shell parameters for Netscape that opens a given URL in an already-open copy of Netscape on many command-line systems.

Method cern::laser::guiplatform::util::BrowserLauncher::openURL [static, private]
 

The openURL method of com.apple.mrj.MRJFileUtils

final int cern::laser::guiplatform::util::BrowserLauncher::OTHER = -1 [static, private]
 

JVM constant for any other platform

Method cern::laser::guiplatform::util::BrowserLauncher::putParameter [static, private]
 

The putParameter method of com.apple.MacOS.AppleEvent

final String cern::laser::guiplatform::util::BrowserLauncher::SECOND_WINDOWS_PARAMETER = "start" [static, private]
 

The second parameter for Runtime.exec() on Windows.

Method cern::laser::guiplatform::util::BrowserLauncher::sendNoReply [static, private]
 

The sendNoReply method of com.apple.MacOS.AppleEvent

final String cern::laser::guiplatform::util::BrowserLauncher::THIRD_WINDOWS_PARAMETER = "\"\"" [static, private]
 

The third parameter for Runtime.exec() on Windows. This is a "title" parameter that the command line expects. Setting this parameter allows URLs containing spaces to work.

final int cern::laser::guiplatform::util::BrowserLauncher::WINDOWS_9x = 6 [static, private]
 

JVM constant for any Windows 9x JVM

final int cern::laser::guiplatform::util::BrowserLauncher::WINDOWS_NT = 5 [static, private]
 

JVM constant for any Windows NT JVM


The documentation for this class was generated from the following file:
Generated on Thu Apr 30 03:09:35 2009 for ACS Java API by doxygen 1.3.8