package aliview; import java.net.URL; import org.apache.log4j.Logger; import utils.OSNativeUtils; public class BrowserUtils { private static final Logger logger = Logger.getLogger(BrowserUtils.class); /************************************* * There is no way for java to cleanly * open a broswer from swing or anything * else. The convention today seems to be * to do the following * * @author gedden *************************************/ /************************************* * Attempts to open a browser. Currently * this method ONLY supports http. * * @param url * @throws Exception *************************************/ public static final void open(URL url) throws Exception { open(url.toString()); } /************************************* * Attempts to open a browser. Currently * this method ONLY supports http. * * @param url * @throws Exception *************************************/ public static final void open(String URL) throws Exception { logger.info(OSNativeUtils.isWindows()); if(OSNativeUtils.isWindows()){ openBroswerWindows(URL); } else if(OSNativeUtils.isMac()){ openBroswerOSX(URL); } else{ openBroswerLINUX(URL); } } /************************************* * Opens a browser on a windows * computer * * @param url *************************************/ private static void openBroswerWindows(String url) throws Exception { Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url); } /************************************* * Opens a browser on a mac * * @param url *************************************/ private static void openBroswerOSX(String url) throws Exception { Runtime.getRuntime().exec("open " + url); } /************************************* * Opens a browser on linux * * @param url *************************************/ private static void openBroswerLINUX(String url) throws Exception { Process p = Runtime.getRuntime().exec("which firefox"); if (p.waitFor() == 0) { Runtime.getRuntime().exec("firefox " + url); return; } p = Runtime.getRuntime().exec("which netscape"); if (p.waitFor() == 0) { Runtime.getRuntime().exec("netscape " + url); return; } p = Runtime.getRuntime().exec("which opera"); if (p.waitFor() == 0) { Runtime.getRuntime().exec("opera " + url); return; } } }