⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webbrowserutil.java

📁 JDesktop Integration Components (JDIC)
💻 JAVA
字号:
/*
 * Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved. Use is
 * subject to license terms.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the Lesser GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program 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
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA.
 */
package org.jdesktop.jdic.browser.internal;

import java.io.File;

/**
 * Utility class for <code>WebBrowser</code> class.
 */
public class WebBrowserUtil {
    // Native browser embedding binary: IeEmbed.exe or MozEmbed.exe on Windows,
    // mozembed-<os>-gtk<version> on Linux/Unix. Which runs as a standalone
    // native instance.
    private static final String EMBED_BINARY_WINDOWS_IE
        = "IeEmbed.exe";
    private static final String EMBED_BINARY_WINDOWS_MOZILLA
        = "MozEmbed.exe";
    private static final String EMBED_BINARY_LINUX_GTK1
        = "mozembed-linux-gtk1.2";
    private static final String EMBED_BINARY_LINUX_GTK2
        = "mozembed-linux-gtk2";
    private static final String EMBED_BINARY_FREEBSD_GTK1
        = "mozembed-freebsd-gtk1.2";
    private static final String EMBED_BINARY_FREEBSD_GTK2
        = "mozembed-freebsd-gtk2";
    private static final String EMBED_BINARY_SOLARIS_GTK1
        = "mozembed-solaris-gtk1.2";
    private static final String EMBED_BINARY_SOLARIS_GTK2
        = "mozembed-solaris-gtk2";

    private static String embedBinary;

    private static String browserPath = null;

    /* native functions */
    private static native String nativeGetBrowserPath();
    private static native String nativeGetMozillaGreHome();

    // Flag to enable or disable debug message output.
    private static boolean isDebugOn = false;


    /**
     * Returns the name of the native browser embedding binary. If no default
     * browser is set, null is returned.
     */
    public static String getEmbedBinaryName() {
        if (embedBinary != null && embedBinary.length() > 0)
            return embedBinary;

        String nativePath = WebBrowserUtil.getBrowserPath();
        if (null == nativePath) {
            trace("No default browser is found. " +
                    "Or environment variable MOZILLA_FIVE_HOME is not set to " +
                    "a Mozilla binary path if you are on Linux/Unix platform.");
            return null;
        }

        String osname = System.getProperty("os.name");
        if (osname.indexOf("Windows") >= 0) {
            String windowspath = nativePath;
            int index = windowspath.indexOf("mozilla.exe");
            if (index >= 0)
                embedBinary = EMBED_BINARY_WINDOWS_MOZILLA;
            else
                embedBinary = EMBED_BINARY_WINDOWS_IE;
        }
        else {
            String libwidgetpath = nativePath + File.separator +
                                   "components" + File.separator +
                                   "libwidget_gtk2.so";
            File file = new File(libwidgetpath);
            if (!file.exists()) {
                if (osname.indexOf("Linux") >= 0) {
                    embedBinary = EMBED_BINARY_LINUX_GTK1;
                }
                else if (osname.indexOf("SunOS") >= 0) {
                    embedBinary = EMBED_BINARY_SOLARIS_GTK1;
                }
                else if (osname.indexOf("FreeBSD") >= 0) {
                    embedBinary = EMBED_BINARY_FREEBSD_GTK1;
                }
            }
            else {
                if (osname.indexOf("Linux") >= 0) {
                    embedBinary = EMBED_BINARY_LINUX_GTK2;
                }
                else if (osname.indexOf("SunOS") >= 0) {
                    embedBinary = EMBED_BINARY_SOLARIS_GTK2;
                }
                else if (osname.indexOf("FreeBSD") >= 0) {
                    embedBinary = EMBED_BINARY_FREEBSD_GTK2;
                }
            }
        }

        return embedBinary;
    }

    /**
     *  Gets the native browser path.
     *  @return the path of the default browser in the current system
     */
    public static String getBrowserPath() {
        if (browserPath == null) {
            browserPath = nativeGetBrowserPath();
        }
        return browserPath;
    }

    /**
     * Checks if the default browser for the current platform is Mozilla.
     * @return true on Solaris and Linux and true on Windows platform if Mozilla
     * is set as the default browser.
     */
    public static boolean isDefaultBrowserMozilla() {
        System.err.println("isDefaultBrowserMozilla");        
        String osName = System.getProperty("os.name").toLowerCase();

        if ((osName.indexOf("solaris") >= 0) ||
            (osName.indexOf("linux") >= 0) ) {
            return true;
        } else {
            String nativeBrowserPath = getBrowserPath();
            // Only when Mozilla is set as the default browser, return true.
            // Or else, fall back to Internet Explorer.
            // FireFox 1.0 is statically linked into Gecko and therefore can not
            // be embedded. If FireFox is embeddable for some future version,
            // we would have to explicitly check for both Mozilla and FireFox.
            if (nativeBrowserPath.indexOf("mozilla") >= 0) {
            	return true;
            } else {
                return false;
            }
        }
    }

    /**
     *  Gets the native Mozilla GRE home directory installed with a .exe package.
     *  @return the GRE home directory of the currently installed Mozilla.
     */
    public static String getMozillaGreHome() {
        return nativeGetMozillaGreHome();
    }

    public static void enableDebugMessages(boolean b) {
        isDebugOn = b;
    }

    /**
     * Helper method to output given debug message.
     *
     * @param msg the given debug message.
     */
    public static void trace(String msg) {
        if (isDebugOn)
            System.out.println("*** Jtrace: " + msg);
    }
    public static void error(String msg) {
        System.err.println("*** Error: " + msg);
    }

    /*
     * Sets native environment variables for running native browser binary.
     */
    public static native void nativeSetEnv();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -