diff --git a/org/homelinux/largo/utils/BrowserLaunch.java b/org/homelinux/largo/utils/BrowserLaunch.java new file mode 100644 --- /dev/null +++ b/org/homelinux/largo/utils/BrowserLaunch.java @@ -0,0 +1,50 @@ +/** + * $Id: BrowserLaunch.java 125 2008-04-22 08:06:08Z mbroeker $ + * $URL: http://localhost/svn/eclipse/Schachspiel/trunk/org/homelinux/largo/utils/BrowserLaunch.java $ + */ + +package org.homelinux.largo.utils; + +import java.lang.reflect.Method; + +import javax.swing.JOptionPane; +/** + * Cross-Platform Browserlaunch + */ +public class BrowserLaunch { + private static final String errMsg = "Error attempting to launch web browser"; + + /** + * This method opens the URL in a native platform browser + */ + public void openURL(String url) { + String osName = System.getProperty("os.name"); + try { + if (osName.startsWith("Mac OS")) { + Class fileMgr = Class.forName("com.apple.eio.FileManager"); + Method openURL = fileMgr.getDeclaredMethod("openURL", + new Class[] { String.class }); + openURL.invoke(null, new Object[] { url }); + } else if (osName.startsWith("Windows")) + Runtime.getRuntime().exec( + "rundll32 url.dll,FileProtocolHandler " + url); + else { + String[] browsers = { "firefox", "opera", "konqueror", + "epiphany", "mozilla", "netscape" }; + String browser = null; + for (int count = 0; count < browsers.length && browser == null; count++) + if (Runtime.getRuntime().exec( + new String[] { "which", browsers[count] }) + .waitFor() == 0) + browser = browsers[count]; + if (browser == null) + throw new Exception("Could not find web browser"); + else + Runtime.getRuntime().exec(new String[] { browser, url }); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(null, errMsg + ":\n" + + e.getLocalizedMessage()); + } + } +};