package circusRefine.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.JOptionPane; /* * Note - you must include the url type -- either "http://" or * "file://". */ public class CmdControl { /** * Display a file in the system browser. If you want to display a * file, you must include the absolute path name. * * @param url the file's url (the url must start with either "http://" or * "file://"). */ private static final String fileSep = System.getProperty("file.separator"); private static final String lineSep = System.getProperty("line.separator"); private static final String os = System.getProperty("os.name"); // 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"; 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); } 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); } } } catch(IOException x) { // couldn't exec browser System.err.println("Could not invoke browser, command=" + cmd); System.err.println("Caught: " + x); } } /** * Try to determine whether this application is running under Windows * or some other platform by examing the "os.name" property. * * @return true if this application is running under a Windows OS */ public static boolean isWindowsPlatform() { if ( os != null && os.startsWith(WIN_ID)) return true; else return false; } public static String executeCmd(String cmd) throws IOException { Process p = Runtime.getRuntime().exec(cmd); // Get the input stream and read from it InputStream in = p.getInputStream(); int c; String output = ""; while ((c = in.read()) != -1) { output = output + ((char)c); } in.close(); return output; } public static String[] returnLines(String str) { StringTokenizer st = new StringTokenizer(str,lineSep); List list = new Vector(); while (st.hasMoreTokens()) { list.add(st.nextToken()); } String[] retorno = list.toArray(new String[0]); return retorno; } }