Package net.sf.robocode.ui

Source Code of net.sf.robocode.ui.BrowserManager

/**
* Copyright (c) 2001-2014 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/epl-v10.html
*/
package net.sf.robocode.ui;


import net.sf.robocode.io.FileUtil;
import net.sf.robocode.io.Logger;

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


/**
* @author Mathew A. Nelson (original)
* @author Flemming N. Larsen (original)
*/
public class BrowserManager {

  public static void openURL(String url) throws IOException {

    // Plan A: try to open the URL using the Java 6 Desktop class
    if (Desktop.isDesktopSupported()) {
      Desktop desktop = Desktop.getDesktop();
      if (desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
          desktop.browse(new URI(url));
          return; // success
        } catch (URISyntaxException e) {
          Logger.logError(e);
        }
      }
      // Fall thru to plan B
    }

    // Plan B: try to open URL by calling a command-line tool for the specific OS
    url = FileUtil.quoteFileName(url);

    Runtime rt = Runtime.getRuntime();
    String os = System.getProperty("os.name").toLowerCase();

    if (os.startsWith("windows")) {
      rt.exec("rundll32 url.dll, FileProtocolHandler " + url);

    } else if (os.startsWith("mac")) {
      rt.exec("open " + url);

    } else if (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0) {
      // Do a best guess on Unix until we get a platform independent way.
      // Build a list of browsers to try, in this order.
      final String[] browsers = {
        "epiphany", "firefox", "mozilla", "konqueror", "galeon", "netscape", "opera", "links", "lynx" };

      // Build a command string which looks like
      // "browser1 "url" || browser2 "url" || ..."
      StringBuffer cmd = new StringBuffer();

      for (int i = 0; i < browsers.length; i++) {
        cmd.append((i == 0 ? "" : " || ") + browsers[i] + " \"" + url + "\" ");
      }

      rt.exec(new String[] { "sh", "-c", cmd.toString() });
    }
  }
}
TOP

Related Classes of net.sf.robocode.ui.BrowserManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.