home *** CD-ROM | disk | FTP | other *** search
- package webeq3.util;
-
- import java.io.File;
- import java.io.IOException;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
-
- public class BrowserLauncher {
- private static int jvm;
- private static Object browser;
- private static boolean loadedWithoutErrors = true;
- private static Class mrjFileUtilsClass;
- private static Class mrjOSTypeClass;
- private static Class macOSErrorClass;
- private static Class aeDescClass;
- private static Constructor aeTargetConstructor;
- private static Constructor appleEventConstructor;
- private static Constructor aeDescConstructor;
- private static Method findFolder;
- private static Method getFileType;
- private static Method makeOSType;
- private static Method putParameter;
- private static Method sendNoReply;
- private static Object kSystemFolderType;
- private static Integer keyDirectObject;
- private static Integer kAutoGenerateReturnID;
- private static Integer kAnyTransactionID;
- private static final int MRJ_2_0 = 0;
- private static final int MRJ_2_1 = 1;
- private static final int WINDOWS_NT = 2;
- private static final int WINDOWS_9x = 3;
- private static final int OTHER = -1;
- private static final String FINDER_TYPE = "FNDR";
- private static final String FINDER_CREATOR = "MACS";
- private static final String GURL_EVENT = "GURL";
- private static final String FIRST_WINDOWS_PARAMETER = "/c";
- private static final String SECOND_WINDOWS_PARAMETER = "start";
- private static final String NETSCAPE_OPEN_PARAMETER_START = " -remote 'openURL(";
- private static final String NETSCAPE_OPEN_PARAMETER_END = ")'";
- private static String errorMessage;
- // $FF: synthetic field
- static Class class$java$lang$String;
- // $FF: synthetic field
- static Class class$java$io$File;
-
- private BrowserLauncher() {
- }
-
- private static boolean loadClasses() {
- switch (jvm) {
- case 0:
- try {
- Class var16 = Class.forName("com.apple.MacOS.AETarget");
- macOSErrorClass = Class.forName("com.apple.MacOS.MacOSError");
- Class var1 = Class.forName("com.apple.MacOS.OSUtils");
- Class var2 = Class.forName("com.apple.MacOS.AppleEvent");
- Class var3 = Class.forName("com.apple.MacOS.ae");
- aeDescClass = Class.forName("com.apple.MacOS.AEDesc");
- aeTargetConstructor = var16.getDeclaredConstructor(Integer.TYPE);
- appleEventConstructor = var2.getDeclaredConstructor(Integer.TYPE, Integer.TYPE, var16, Integer.TYPE, Integer.TYPE);
- aeDescConstructor = aeDescClass.getDeclaredConstructor(class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String);
- makeOSType = var1.getDeclaredMethod("makeOSType", class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String);
- putParameter = var2.getDeclaredMethod("putParameter", Integer.TYPE, aeDescClass);
- sendNoReply = var2.getDeclaredMethod("sendNoReply");
- Field var4 = var3.getDeclaredField("keyDirectObject");
- keyDirectObject = (Integer)var4.get((Object)null);
- Field var5 = var2.getDeclaredField("kAutoGenerateReturnID");
- kAutoGenerateReturnID = (Integer)var5.get((Object)null);
- Field var6 = var2.getDeclaredField("kAnyTransactionID");
- kAnyTransactionID = (Integer)var6.get((Object)null);
- break;
- } catch (ClassNotFoundException var12) {
- errorMessage = ((Throwable)var12).getMessage();
- return false;
- } catch (NoSuchMethodException var13) {
- errorMessage = ((Throwable)var13).getMessage();
- return false;
- } catch (NoSuchFieldException var14) {
- errorMessage = ((Throwable)var14).getMessage();
- return false;
- } catch (IllegalAccessException var15) {
- errorMessage = ((Throwable)var15).getMessage();
- return false;
- }
- case 1:
- try {
- mrjFileUtilsClass = Class.forName("com.apple.mrj.MRJFileUtils");
- mrjOSTypeClass = Class.forName("com.apple.mrj.MRJOSType");
- Field var0 = mrjFileUtilsClass.getDeclaredField("kSystemFolderType");
- kSystemFolderType = var0.get((Object)null);
- findFolder = mrjFileUtilsClass.getDeclaredMethod("findFolder", mrjOSTypeClass);
- getFileType = mrjFileUtilsClass.getDeclaredMethod("getFileType", class$java$io$File == null ? (class$java$io$File = class$("java.io.File")) : class$java$io$File);
- } catch (ClassNotFoundException var7) {
- errorMessage = ((Throwable)var7).getMessage();
- return false;
- } catch (NoSuchFieldException var8) {
- errorMessage = ((Throwable)var8).getMessage();
- return false;
- } catch (NoSuchMethodException var9) {
- errorMessage = ((Throwable)var9).getMessage();
- return false;
- } catch (SecurityException var10) {
- errorMessage = ((Throwable)var10).getMessage();
- return false;
- } catch (IllegalAccessException var11) {
- errorMessage = ((Throwable)var11).getMessage();
- return false;
- }
- }
-
- return true;
- }
-
- private static Object locateBrowser() {
- if (browser != null) {
- return browser;
- } else {
- switch (jvm) {
- case -1:
- default:
- browser = "netscape";
- break;
- case 0:
- try {
- Integer var15 = (Integer)makeOSType.invoke((Object)null, "MACS");
- Object var16 = aeTargetConstructor.newInstance(var15);
- Integer var17 = (Integer)makeOSType.invoke((Object)null, "GURL");
- Object var18 = appleEventConstructor.newInstance(var17, var17, var16, kAutoGenerateReturnID, kAnyTransactionID);
- return var18;
- } catch (IllegalAccessException var6) {
- browser = null;
- errorMessage = ((Throwable)var6).getMessage();
- return browser;
- } catch (InstantiationException var7) {
- browser = null;
- errorMessage = ((Throwable)var7).getMessage();
- return browser;
- } catch (InvocationTargetException var8) {
- browser = null;
- errorMessage = ((Throwable)var8).getMessage();
- return browser;
- }
- case 1:
- File var0;
- try {
- var0 = (File)findFolder.invoke((Object)null, kSystemFolderType);
- } catch (IllegalArgumentException var9) {
- browser = null;
- errorMessage = ((Throwable)var9).getMessage();
- return browser;
- } catch (IllegalAccessException var10) {
- browser = null;
- errorMessage = ((Throwable)var10).getMessage();
- return browser;
- } catch (InvocationTargetException var11) {
- browser = null;
- errorMessage = var11.getTargetException().getClass() + ": " + var11.getTargetException().getMessage();
- return browser;
- }
-
- String[] var1 = var0.list();
-
- for(int var2 = 0; var2 < var1.length; ++var2) {
- try {
- File var3 = new File(var0, var1[var2]);
- if (var3.isFile()) {
- Object var4 = getFileType.invoke((Object)null, var3);
- if ("FNDR".equals(var4.toString())) {
- browser = var3.toString();
- return browser;
- }
- }
- } catch (IllegalArgumentException var12) {
- browser = browser;
- errorMessage = ((Throwable)var12).getMessage();
- return null;
- } catch (IllegalAccessException var13) {
- browser = null;
- errorMessage = ((Throwable)var13).getMessage();
- return browser;
- } catch (InvocationTargetException var14) {
- browser = null;
- errorMessage = var14.getTargetException().getClass() + ": " + var14.getTargetException().getMessage();
- return browser;
- }
- }
-
- browser = null;
- break;
- case 2:
- browser = "cmd.exe";
- break;
- case 3:
- browser = "command.com";
- }
-
- return browser;
- }
- }
-
- public static void openURL(String var0) throws IOException {
- if (!loadedWithoutErrors) {
- throw new IOException("Exception in finding browser: " + errorMessage);
- } else {
- Object var1 = locateBrowser();
- if (var1 == null) {
- throw new IOException("Unable to locate browser: " + errorMessage);
- } else {
- switch (jvm) {
- case -1:
- Process var3 = Runtime.getRuntime().exec((String)var1 + " -remote 'openURL(" + var0 + ")'");
-
- try {
- int var4 = var3.waitFor();
- if (var4 != 0) {
- Runtime.getRuntime().exec(new String[]{(String)var1, var0});
- }
- break;
- } catch (InterruptedException var13) {
- throw new IOException("InterruptedException while launching browser: " + ((Throwable)var13).getMessage());
- }
- case 0:
- Object var2 = null;
-
- try {
- var2 = aeDescConstructor.newInstance(var0);
- putParameter.invoke(var1, keyDirectObject, var2);
- sendNoReply.invoke(var1);
- break;
- } catch (InvocationTargetException var14) {
- throw new IOException("InvocationTargetException while creating AEDesc: " + ((Throwable)var14).getMessage());
- } catch (IllegalAccessException var15) {
- throw new IOException("IllegalAccessException while building AppleEvent: " + ((Throwable)var15).getMessage());
- } catch (InstantiationException var16) {
- throw new IOException("InstantiationException while creating AEDesc: " + ((Throwable)var16).getMessage());
- } finally {
- var2 = null;
- var1 = null;
- }
- case 1:
- Runtime.getRuntime().exec(new String[]{(String)var1, var0});
- break;
- case 2:
- case 3:
- Runtime.getRuntime().exec(new String[]{(String)var1, "/c", "start", var0});
- break;
- default:
- Runtime.getRuntime().exec(new String[]{(String)var1, var0});
- }
-
- }
- }
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- String var0 = System.getProperty("os.name");
- if ("Mac OS".equals(var0)) {
- String var1 = System.getProperty("mrj.version");
- String var2 = var1.substring(0, 3);
-
- try {
- double var3 = Double.valueOf(var2);
- if (var3 == (double)2.0F) {
- jvm = 0;
- } else if (var3 >= 2.1) {
- jvm = 1;
- } else {
- loadedWithoutErrors = false;
- errorMessage = "Unsupported MRJ version: " + var3;
- }
- } catch (NumberFormatException var5) {
- loadedWithoutErrors = false;
- errorMessage = "Invalid MRJ version: " + var1;
- }
- } else if (var0.startsWith("Windows")) {
- if (var0.indexOf("9") != -1) {
- jvm = 3;
- } else {
- jvm = 2;
- }
- } else {
- jvm = -1;
- }
-
- if (loadedWithoutErrors) {
- loadedWithoutErrors = loadClasses();
- }
-
- }
- }
-