All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alachisoft.ncache.ncactivate.utils.BrowserControl Maven / Gradle / Ivy

There is a newer version: 5.3.3
Show newest version
/*
 * NCBrowserControl.java
 *
 * Created on October 11, 2006, 1:23 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.alachisoft.ncache.ncactivate.utils;

import com.alachisoft.ncache.runtime.util.RuntimeUtil;

import java.io.IOException;

/* Note - you must include the url type -- either "http://" or
 * "file://".
 */
public class BrowserControl {
    /**
     * Simple example.
     */
   /* public static void main(String[] args)
    {
        displayURL("http://www.javaworld.com");
    }*/
    // Used to identify the windows platform.
    private static final String WIN_ID = "Windows";
    // The default system browser under windows.
    private static final String WIN_PATH = "rundll32";
    // The flag to display a url.
    private static final String WIN_FLAG = "url.dll,FileProtocolHandler";
    // The default browser under unix.
    private static final String UNIX_PATH = "firefox";

    /**
     * Display a file in the system browser.  If you want to display a
     * file, you must include the absolute path name.
     *
     * @param url the file's url (the url must start with either "http://"
     *            or
     *            "file://").
     */
    public static void displayURL(String url) {
        boolean windows = isWindowsPlatform();
        String cmd = null;

        //System.out.println("Open URL:" + url);

        try {

            if (windows) {
                // cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
                cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
                Process p = Runtime.getRuntime().exec(cmd);
            } else {

                url = url.replace(" ", "%20");
                // Under Unix, Netscape has to be running for the "-remote"
                // command to work.  So, we try sending the command and
                // check for an exit value.  If the exit command is 0,
                // it worked, otherwise we need to start the browser.
                // cmd = 'netscape -remote openURL(http://www.javaworld.com)'
                //cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";
                cmd = UNIX_PATH + " " + url;
                //System.out.println("CMD:" + cmd);
                Process p = Runtime.getRuntime().exec(cmd);
                try {
                    // wait for exit code -- if it's 0, command worked,
                    // otherwise we need to start the browser up.
                    int exitCode = p.waitFor();
                    if (exitCode != 0) {
                        // Command failed, start up the browser
                        // cmd = 'netscape http://www.javaworld.com'

                        cmd = UNIX_PATH + " " + url;
                        // System.out.println("2CMD:" + cmd);
                        p = Runtime.getRuntime().exec(cmd);
                    }
                } catch (InterruptedException x) {
                    System.err.println("Error bringing up browser, cmd='" +
                            cmd + "'");
                    System.err.println("Caught: " + x);
                }
            }
        } catch (IOException x) {
            // couldn't exec browser
            System.err.println("Could not invoke browser, command=" + cmd);
            System.err.println("Caught: " + x);
        }
    }

    /**
     * Try to determine whether this application is running under Windows
     * or some other platform by examing the "os.name" property.
     *
     * @return true if this application is running under a Windows OS
     */
    public static boolean isWindowsPlatform() {
        RuntimeUtil.OS currentOS = RuntimeUtil.getCurrentOS();
        if (currentOS == RuntimeUtil.OS.Windows)
            return true;
        else
            return false;
    }
    // The flag to display a url.
    //private static final String UNIX_FLAG = "-remote openURL";
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy