-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Replace outdated BrowserControl class
- Loading branch information
Showing
1 changed file
with
31 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,118 +1,58 @@ | ||
/* | ||
* BrowserControl.java | ||
* | ||
* Created on August 22, 2007, 11:00 AM | ||
* Created on March 21, 2006, 6:05 PM | ||
* | ||
* To change this template, choose Tools | Template Manager | ||
* and open the template in the editor. | ||
* Logic Tree: A logic gate simulation program | ||
* Copyright (c) 2009 Nick Vrvilo | ||
* https://github.com/DaoWen/logic-tree | ||
* | ||
* This program is distributed under the GNU General Public License. | ||
* For full deltails please see LicenseInfo.txt included with this source code. | ||
* | ||
*/ | ||
|
||
package pinming.gui; | ||
|
||
import java.io.IOException; | ||
import java.awt.Desktop; | ||
import java.net.URI; | ||
|
||
/** A simple, static class to display a URL in the system browser. | ||
* | ||
* | ||
* <p>Under Unix, the system browser is hard-coded to be 'netscape'. | ||
* Netscape must be in your PATH for this to work. This has been | ||
* tested with the following platforms: AIX, HP-UX and Solaris.</p> | ||
* | ||
* <p>Under Windows, this will bring up the default browser under windows, | ||
* usually either Netscape or Microsoft IE. The default browser is | ||
* determined by the OS. This has been tested under Windows 95/98/NT.</p> | ||
/** | ||
* Simple utility for opening a URL in the system default browser. | ||
* | ||
* Examples:<ul> | ||
* <li><code>BrowserControl.displayURL("http://www.javaworld.com");</code></li> | ||
* <li><code>BrowserControl.displayURL("file://c:\\docs\\index.html");</code></li> | ||
* <li><code>BrowserContorl.displayURL("file:///user/joe/index.html");</code></li></ul> | ||
* | ||
* <p>Note - you must include the url type -- either <code>"http://"</code> or <code>"file://"</code>.</p> | ||
* (Code downloaded from <a href="http://www.javaworld.com/javaworld/javatips/jw-javatip66.html"> | ||
* http://www.javaworld.com/javaworld/javatips/jw-javatip66.html</a>) | ||
* @author Nick Vrvilo | ||
*/ | ||
public class BrowserControl | ||
{ | ||
public class BrowserControl { | ||
|
||
/** | ||
* Display a file in the system browser. If you want to display a | ||
* file, you must include the absolute path name. | ||
* Open a URI with the browser. | ||
* | ||
* @param url the file's url (the url must start with either "http://" or "file://"). | ||
* @param url the file's URI | ||
*/ | ||
public static void displayURL(String url) | ||
{ | ||
boolean windows = isWindowsPlatform(); | ||
String cmd = null; | ||
try | ||
{ | ||
if (windows) | ||
{ | ||
// cmd = 'rundll32 url.dll,FileProtocolHandler http://...' | ||
cmd = WIN_PATH + " " + WIN_FLAG + " " + url; | ||
Process p = Runtime.getRuntime().exec(cmd); | ||
public static void displayURL(String url) { | ||
try { | ||
if(Desktop.isDesktopSupported()) { | ||
Desktop.getDesktop().browse(new URI(url)); | ||
} | ||
else | ||
{ | ||
// Under Unix, Netscape has to be running for the "-remote" | ||
// command to work. So, we try sending the command and | ||
// check for an exit value. If the exit command is 0, | ||
// it worked, otherwise we need to start the browser. | ||
// cmd = 'netscape -remote openURL(http://www.javaworld.com)' | ||
cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")"; | ||
Process p = Runtime.getRuntime().exec(cmd); | ||
try | ||
{ | ||
// wait for exit code -- if it's 0, command worked, | ||
// otherwise we need to start the browser up. | ||
int exitCode = p.waitFor(); | ||
if (exitCode != 0) | ||
{ | ||
// Command failed, start up the browser | ||
// cmd = 'netscape http://www.javaworld.com' | ||
cmd = UNIX_PATH + " " + url; | ||
p = Runtime.getRuntime().exec(cmd); | ||
} | ||
} | ||
catch(InterruptedException x) | ||
{ | ||
System.err.println("Error bringing up browser, cmd='" + | ||
cmd + "'"); | ||
System.err.println("Caught: " + x); | ||
} | ||
else if (hasXdg()) { | ||
Runtime.getRuntime().exec(new String[] { "xdg-open", url }); | ||
} | ||
} | ||
catch(IOException x) | ||
{ | ||
// couldn't exec browser | ||
System.err.println("Could not invoke browser, command=" + cmd); | ||
System.err.println("Caught: " + x); | ||
catch(Exception ex) { | ||
System.err.println("Could not invoke browser, URI=" + url); | ||
System.err.println("Caught: " + ex); | ||
} | ||
} | ||
|
||
/** | ||
* Try to determine whether this application is running under Windows | ||
* or some other platform by examing the "os.name" property. | ||
* Check if the current platform supports xdg-open | ||
* (generic app for launching things in X-Windows environment) | ||
* | ||
* @return true if this application is running under a Windows OS | ||
* @return true if xdg-open command is available | ||
*/ | ||
public static boolean isWindowsPlatform() | ||
{ | ||
String os = System.getProperty("os.name"); | ||
if ( os != null && os.startsWith(WIN_ID)) | ||
return true; | ||
else | ||
return false; | ||
|
||
public static boolean hasXdg() throws IOException { | ||
return Runtime.getRuntime().exec("type xdg-open").exitValue() == 0; | ||
} | ||
|
||
// Used to identify the windows platform. | ||
private static final String WIN_ID = "Windows"; | ||
// The default system browser under windows. | ||
private static final String WIN_PATH = "rundll32"; | ||
// The flag to display a url. | ||
private static final String WIN_FLAG = "url.dll,FileProtocolHandler"; | ||
// The default browser under unix. | ||
private static final String UNIX_PATH = "netscape"; | ||
// The flag to display a url. | ||
private static final String UNIX_FLAG = "-remote openURL"; | ||
} |