From a4facc93f04639ef82a265c2ed35c0de41ff9c78 Mon Sep 17 00:00:00 2001 From: Caspian Rychlik-Prince Date: Tue, 28 Oct 2003 19:26:51 +0000 Subject: [PATCH] *** empty log message *** --- src/java/org/lwjgl/Sys.java | 31 ++++++++++++++++++++++++++++- src/native/common/org_lwjgl_Sys.h | 2 +- src/native/linux/org_lwjgl_Sys.cpp | 2 +- src/native/macosx/org_lwjgl_Sys.cpp | 2 +- src/native/win32/org_lwjgl_Sys.cpp | 2 +- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/java/org/lwjgl/Sys.java b/src/java/org/lwjgl/Sys.java index b067c3c8..5f0708ce 100644 --- a/src/java/org/lwjgl/Sys.java +++ b/src/java/org/lwjgl/Sys.java @@ -32,6 +32,8 @@ package org.lwjgl; +import java.io.IOException; + import org.lwjgl.input.Controller; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -225,5 +227,32 @@ public final class Sys { * best attempt at opening the URL given - don't rely on it to work! * @param url The URL */ - public static native void openURL(String url); + public static void openURL(String url) { + String osName = System.getProperty("os.name"); + if (osName.startsWith("Mac OS") || osName.startsWith("Windows")) { + // Mac and Windows both do this nicely from native code. + nOpenURL(url); + return; + } + // Linux may as well resort to pure Java hackery, as there's no Linux native way of doing it + // right anyway. + + String[] browsers = {"mozilla", "opera", "konqueror", "galeon", "netscape", "lynx"}; + + for (int i = 0; i < browsers.length; i ++) { + try { + Runtime.getRuntime().exec(new String[] { browsers[i], url }); + break; + } catch (IOException e) { + // Ignore + e.printStackTrace(System.err); + } + } + } + + + /* + * Where necessary, we use a native implementation of openURL. + */ + private static native void nOpenURL(String url); } diff --git a/src/native/common/org_lwjgl_Sys.h b/src/native/common/org_lwjgl_Sys.h index 128a9574..0f3adba7 100644 --- a/src/native/common/org_lwjgl_Sys.h +++ b/src/native/common/org_lwjgl_Sys.h @@ -65,7 +65,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_Sys_alert * Method: openURL * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_lwjgl_Sys_openURL +JNIEXPORT void JNICALL Java_org_lwjgl_Sys_nOpenURL (JNIEnv *, jclass, jstring); #ifdef __cplusplus diff --git a/src/native/linux/org_lwjgl_Sys.cpp b/src/native/linux/org_lwjgl_Sys.cpp index 97f9e41a..66937678 100644 --- a/src/native/linux/org_lwjgl_Sys.cpp +++ b/src/native/linux/org_lwjgl_Sys.cpp @@ -180,7 +180,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_Sys_alert(JNIEnv * env, jclass clazz, jstr * Method: openURL * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_lwjgl_Sys_openURL +JNIEXPORT void JNICALL Java_org_lwjgl_Sys_nOpenURL (JNIEnv * env, jclass clazz, jstring url) { const char * urlString = env->GetStringUTFChars(url, NULL); diff --git a/src/native/macosx/org_lwjgl_Sys.cpp b/src/native/macosx/org_lwjgl_Sys.cpp index 21f2321c..6d09a5a6 100644 --- a/src/native/macosx/org_lwjgl_Sys.cpp +++ b/src/native/macosx/org_lwjgl_Sys.cpp @@ -133,7 +133,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_Sys_alert(JNIEnv * env, jclass clazz, jstr * Method: openURL * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_lwjgl_Sys_openURL +JNIEXPORT void JNICALL Java_org_lwjgl_Sys_nOpenURL (JNIEnv * env, jclass clazz, jstring url) { const char * urlString = env->GetStringUTFChars(url, NULL); diff --git a/src/native/win32/org_lwjgl_Sys.cpp b/src/native/win32/org_lwjgl_Sys.cpp index 4c91c79e..3ee69d29 100644 --- a/src/native/win32/org_lwjgl_Sys.cpp +++ b/src/native/win32/org_lwjgl_Sys.cpp @@ -159,7 +159,7 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_Sys_getDirectBufferAddress * Method: openURL * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_lwjgl_Sys_openURL +JNIEXPORT void JNICALL Java_org_lwjgl_Sys_nOpenURL (JNIEnv * env, jclass clazz, jstring url) { const char * urlString = env->GetStringUTFChars(url, NULL);