// Path: src/edu/stanford/ejalbert/exception/BrowserLaunchingExecutionException.java
// public class BrowserLaunchingExecutionException
//         extends Exception {
// 
//     public BrowserLaunchingExecutionException(Throwable cause) {
//         super(cause);
//     }
// 
//     public BrowserLaunchingExecutionException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/edu/stanford/ejalbert/exception/BrowserLaunchingInitializingException.java
// public class BrowserLaunchingInitializingException
//         extends Exception {
// 
//     public BrowserLaunchingInitializingException(Exception cause) {
//         super(cause);
//     }
// 
//     public BrowserLaunchingInitializingException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/edu/stanford/ejalbert/exception/UnsupportedOperatingSystemException.java
// public class UnsupportedOperatingSystemException
//         extends Exception {
// 
//     public UnsupportedOperatingSystemException(String message) {
//         super(message);
//     }
// 
//     public UnsupportedOperatingSystemException(Throwable cause) {
//         super(cause);
//     }
// }


import edu.stanford.ejalbert.exception.BrowserLaunchingExecutionException;
import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException;
import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException;
import java.util.List;

/************************************************
    Copyright 2004,2005,2006,2007 Markus Gebhard, Jeff Chapman

    This file is part of BrowserLauncher2.

    BrowserLauncher2 is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    BrowserLauncher2 is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with BrowserLauncher2; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 ************************************************/
// $Id: IBrowserLaunching.java,v 1.1 2007/12/11 02:35:41 eiki Exp $
package edu.stanford.ejalbert.launching;



/**
 * Main interface to the Browser Launching methods.
 *
 * @author Markus Gebhard
 */
public interface IBrowserLaunching {
    /**
     * Key to system property containing name of users
     * preferred browser.
     */
    public static final String BROWSER_SYSTEM_PROPERTY =
            "edu.stanford.ejalbert.preferred.browser";
    /**
     * Key to system property that controls how browsers are discovered
     * when running on a Windows O/S.
     * <p>
     * The values are registry and disk.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_PROPERTY =
            "win.browser.disc.policy";
    /**
     * Value associated with WINDOWS_BROWSER_DISC_POLICY_PROPERTY.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_DISK = "disk";
    /**
     * Value associated with WINDOWS_BROWSER_DISC_POLICY_PROPERTY.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_REGISTRY = "registry";
    /**
     * property file key for delimiter character used in other properties.
     */
    public static final String PROP_KEY_DELIMITER = "delimchar";
    /**
     * prefix used for property file keys that define a browser
     */
    public static final String PROP_KEY_BROWSER_PREFIX = "browser.";
    /**
     * http protocol
     */
    public static final String PROTOCOL_HTTP = "http";
    /**
     * file protocol
     */
    public static final String PROTOCOL_FILE = "file";
    /**
     * mailto protocol
     */
    public static final String PROTOCOL_MAILTO = "mailto";
    /**
     * Identifier for the system's default browser.
     */
    public static final String BROWSER_DEFAULT = "Default";

    /**
     * Performs any initialization needed for the particular O/S.
     *
     * @throws BrowserLaunchingInitializingException
     */
    public void initialize()
            throws BrowserLaunchingInitializingException;

    /**
     * Opens the passed url in the system's default browser.
     *
     * @param urlString String
     * @throws UnsupportedOperatingSystemException
     * @throws BrowserLaunchingExecutionException
     * @throws BrowserLaunchingInitializingException
     */

// Path: src/edu/stanford/ejalbert/exception/BrowserLaunchingExecutionException.java
// public class BrowserLaunchingExecutionException
//         extends Exception {
// 
//     public BrowserLaunchingExecutionException(Throwable cause) {
//         super(cause);
//     }
// 
//     public BrowserLaunchingExecutionException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/edu/stanford/ejalbert/exception/BrowserLaunchingInitializingException.java
// public class BrowserLaunchingInitializingException
//         extends Exception {
// 
//     public BrowserLaunchingInitializingException(Exception cause) {
//         super(cause);
//     }
// 
//     public BrowserLaunchingInitializingException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/edu/stanford/ejalbert/exception/UnsupportedOperatingSystemException.java
// public class UnsupportedOperatingSystemException
//         extends Exception {
// 
//     public UnsupportedOperatingSystemException(String message) {
//         super(message);
//     }
// 
//     public UnsupportedOperatingSystemException(Throwable cause) {
//         super(cause);
//     }
// }


// Path: src/edu/stanford/ejalbert/launching/IBrowserLaunching.java
import edu.stanford.ejalbert.exception.BrowserLaunchingExecutionException;
import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException;
import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException;
import java.util.List;

/************************************************
    Copyright 2004,2005,2006,2007 Markus Gebhard, Jeff Chapman

    This file is part of BrowserLauncher2.

    BrowserLauncher2 is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    BrowserLauncher2 is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with BrowserLauncher2; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 ************************************************/
// $Id: IBrowserLaunching.java,v 1.1 2007/12/11 02:35:41 eiki Exp $
package edu.stanford.ejalbert.launching;



/**
 * Main interface to the Browser Launching methods.
 *
 * @author Markus Gebhard
 */
public interface IBrowserLaunching {
    /**
     * Key to system property containing name of users
     * preferred browser.
     */
    public static final String BROWSER_SYSTEM_PROPERTY =
            "edu.stanford.ejalbert.preferred.browser";
    /**
     * Key to system property that controls how browsers are discovered
     * when running on a Windows O/S.
     * <p>
     * The values are registry and disk.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_PROPERTY =
            "win.browser.disc.policy";
    /**
     * Value associated with WINDOWS_BROWSER_DISC_POLICY_PROPERTY.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_DISK = "disk";
    /**
     * Value associated with WINDOWS_BROWSER_DISC_POLICY_PROPERTY.
     */
    public static final String WINDOWS_BROWSER_DISC_POLICY_REGISTRY = "registry";
    /**
     * property file key for delimiter character used in other properties.
     */
    public static final String PROP_KEY_DELIMITER = "delimchar";
    /**
     * prefix used for property file keys that define a browser
     */
    public static final String PROP_KEY_BROWSER_PREFIX = "browser.";
    /**
     * http protocol
     */
    public static final String PROTOCOL_HTTP = "http";
    /**
     * file protocol
     */
    public static final String PROTOCOL_FILE = "file";
    /**
     * mailto protocol
     */
    public static final String PROTOCOL_MAILTO = "mailto";
    /**
     * Identifier for the system's default browser.
     */
    public static final String BROWSER_DEFAULT = "Default";

    /**
     * Performs any initialization needed for the particular O/S.
     *
     * @throws BrowserLaunchingInitializingException
     */
    public void initialize()
            throws BrowserLaunchingInitializingException;

    /**
     * Opens the passed url in the system's default browser.
     *
     * @param urlString String
     * @throws UnsupportedOperatingSystemException
     * @throws BrowserLaunchingExecutionException
     * @throws BrowserLaunchingInitializingException
     */

    public void openUrl(String urlString)
