001 /****************************************************************************** 002 * Copyright (C) MActor Developers. All rights reserved. * 003 * ---------------------------------------------------------------------------* 004 * This file is part of MActor. * 005 * * 006 * MActor is free software; you can redistribute it and/or modify * 007 * it under the terms of the GNU General Public License as published by * 008 * the Free Software Foundation; either version 2 of the License, or * 009 * (at your option) any later version. * 010 * * 011 * MActor is distributed in the hope that it will be useful, * 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 014 * GNU General Public License for more details. * 015 * * 016 * You should have received a copy of the GNU General Public License * 017 * along with MActor; if not, write to the Free Software * 018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * 019 ******************************************************************************/ 020 package org.mactor.ui.gui; 021 022 import java.lang.reflect.Method; 023 import java.net.URL; 024 025 import javax.swing.JOptionPane; 026 import javax.swing.event.HyperlinkEvent; 027 import javax.swing.event.HyperlinkListener; 028 029 public class BrowserUtil { 030 private static final String errMsg = "Error attempting to launch web browser"; 031 public static HyperlinkListener createLinkListener() { 032 return new HyperlinkListener() { 033 public void hyperlinkUpdate(HyperlinkEvent e) { 034 if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 035 URL target = e.getURL(); 036 openURL(target); 037 } 038 } 039 }; 040 } 041 // This flowwing code was fetched from: 042 // http://www.centerkey.com/java/browser/ 043 // 044 public static void openURL(URL url) { 045 String osName = System.getProperty("os.name"); 046 try { 047 if (osName.startsWith("Mac OS")) { 048 Class fileMgr = Class.forName("com.apple.eio.FileManager"); 049 Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class }); 050 openURL.invoke(null, new Object[] { url }); 051 } else if (osName.startsWith("Windows")) 052 Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url); 053 else { // assume Unix or Linux 054 String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" }; 055 String browser = null; 056 for (int count = 0; count < browsers.length && browser == null; count++) 057 if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0) 058 browser = browsers[count]; 059 if (browser == null) 060 throw new Exception("Could not find web browser"); 061 else 062 Runtime.getRuntime().exec(new String[] { browser, url.toExternalForm() }); 063 } 064 } catch (Exception e) { 065 JOptionPane.showMessageDialog(null, errMsg + ":\n" + e.getLocalizedMessage()); 066 } 067 } 068 }