01: package org.mactor.ui;
02:
03: import java.lang.reflect.Method;
04: import java.net.URL;
05: import javax.swing.JOptionPane;
06: import javax.swing.event.HyperlinkEvent;
07: import javax.swing.event.HyperlinkListener;
08:
09: public class BrowserUtil {
10: private static final String errMsg = "Error attempting to launch web browser";
11:
12: public static HyperlinkListener createLinkListener() {
13: return new HyperlinkListener() {
14: public void hyperlinkUpdate(HyperlinkEvent e) {
15: if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
16: URL target = e.getURL();
17: openURL(target);
18: }
19: }
20: };
21: }
22:
23: // This flowwing code was fetched from:
24: // http://www.centerkey.com/java/browser/
25: //
26: public static void openURL(URL url) {
27: String osName = System.getProperty("os.name");
28: try {
29: if (osName.startsWith("Mac OS")) {
30: Class fileMgr = Class
31: .forName("com.apple.eio.FileManager");
32: Method openURL = fileMgr.getDeclaredMethod("openURL",
33: new Class[] { String.class });
34: openURL.invoke(null, new Object[] { url });
35: } else if (osName.startsWith("Windows"))
36: Runtime.getRuntime().exec(
37: "rundll32 url.dll,FileProtocolHandler " + url);
38: else { // assume Unix or Linux
39: String[] browsers = { "firefox", "opera", "konqueror",
40: "epiphany", "mozilla", "netscape" };
41: String browser = null;
42: for (int count = 0; count < browsers.length
43: && browser == null; count++)
44: if (Runtime.getRuntime().exec(
45: new String[] { "which", browsers[count] })
46: .waitFor() == 0)
47: browser = browsers[count];
48: if (browser == null)
49: throw new Exception("Could not find web browser");
50: else
51: Runtime.getRuntime().exec(
52: new String[] { browser,
53: url.toExternalForm() });
54: }
55: } catch (Exception e) {
56: JOptionPane.showMessageDialog(null, errMsg + ":\n"
57: + e.getLocalizedMessage());
58: }
59: }
60: }
|