From a8fcd3edde91c0879929364fc1ddc807151acddd Mon Sep 17 00:00:00 2001 From: Caspian Rychlik-Prince Date: Thu, 20 Jan 2005 22:51:28 +0000 Subject: [PATCH] Fixed AWT dependency. --- build.xml | 4 +- .../org/lwjgl/DefaultSysImplementation.java | 30 +------- src/java/org/lwjgl/J2SESysImplementation.java | 72 +++++++++++++++++++ src/java/org/lwjgl/LWJGLException.java | 39 ++++++++-- .../org/lwjgl/LinuxSysImplementation.java | 5 +- .../org/lwjgl/MacOSXSysImplementation.java | 4 +- .../org/lwjgl/NativeSysImplementation.java | 51 +++++++++++++ src/java/org/lwjgl/Sys.java | 1 - .../org/lwjgl/Win32SysImplementation.java | 45 +++++------- src/java/org/lwjgl/opengl/LinuxDisplay.java | 3 +- src/native/win32/org_lwjgl_Sys.c | 12 ++-- 11 files changed, 187 insertions(+), 79 deletions(-) create mode 100644 src/java/org/lwjgl/J2SESysImplementation.java create mode 100644 src/java/org/lwjgl/NativeSysImplementation.java diff --git a/build.xml b/build.xml index 5d3b4d09..5c5824d1 100644 --- a/build.xml +++ b/build.xml @@ -385,15 +385,13 @@ - + - - diff --git a/src/java/org/lwjgl/DefaultSysImplementation.java b/src/java/org/lwjgl/DefaultSysImplementation.java index 29fd535f..485da949 100644 --- a/src/java/org/lwjgl/DefaultSysImplementation.java +++ b/src/java/org/lwjgl/DefaultSysImplementation.java @@ -31,9 +31,6 @@ */ package org.lwjgl; -import java.lang.reflect.Method; -import javax.swing.JOptionPane; -import javax.swing.UIManager; /** * $Id$ @@ -49,28 +46,7 @@ abstract class DefaultSysImplementation implements SysImplementation { return 1000; } - public long getTime() { - return System.currentTimeMillis(); - } - - public void alert(String title, String message) { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch(Exception e) { - } - JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE); - } - - public String getClipboard() { - try { - java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); - java.awt.datatransfer.Transferable transferable = clipboard.getContents(null); - if (transferable.isDataFlavorSupported(java.awt.datatransfer.DataFlavor.stringFlavor)) { - return (String)transferable.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor); - } - } catch (Exception e) { - Sys.log("Exception while getting clipboard: " + e); - } - return null; - } + public abstract long getTime(); + public abstract void alert(String title, String message); + public abstract String getClipboard(); } diff --git a/src/java/org/lwjgl/J2SESysImplementation.java b/src/java/org/lwjgl/J2SESysImplementation.java new file mode 100644 index 00000000..9c8eebd3 --- /dev/null +++ b/src/java/org/lwjgl/J2SESysImplementation.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2002-2004 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl; + +import javax.swing.JOptionPane; +import javax.swing.UIManager; + +/** + * $Id$ + * A SysImplementation which delegates as much as it can to J2SE. + *

+ * @author $Author$ + * @version $Revision$ + */ +abstract class J2SESysImplementation extends DefaultSysImplementation { + + public long getTime() { + return System.currentTimeMillis(); + } + + public void alert(String title, String message) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch(Exception e) { + } + JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE); + } + + public String getClipboard() { + try { + java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); + java.awt.datatransfer.Transferable transferable = clipboard.getContents(null); + if (transferable.isDataFlavorSupported(java.awt.datatransfer.DataFlavor.stringFlavor)) { + return (String)transferable.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor); + } + } catch (Exception e) { + Sys.log("Exception while getting clipboard: " + e); + } + return null; + } + + +} diff --git a/src/java/org/lwjgl/LWJGLException.java b/src/java/org/lwjgl/LWJGLException.java index aea1a1c3..00ffdcd2 100644 --- a/src/java/org/lwjgl/LWJGLException.java +++ b/src/java/org/lwjgl/LWJGLException.java @@ -34,19 +34,44 @@ package org.lwjgl; /** * $Id$ *

- * This exception is supplied to make exception handling more generic - * for LWJGL specific exceptions + * This exception is supplied to make exception handling more generic for LWJGL + * specific exceptions *

+ * * @author Brian Matzon * @version $Revision$ */ public class LWJGLException extends Exception { - - /** - * Creates a new LWJGLException - * @param msg String identifier for exception - */ + + /** + * Plain c'tor + */ + public LWJGLException() { + super(); + } + + /** + * Creates a new LWJGLException + * + * @param msg + * String identifier for exception + */ public LWJGLException(String msg) { super(msg); } + + /** + * @param message + * @param cause + */ + public LWJGLException(String message, Throwable cause) { + super(message, cause); + } + + /** + * @param cause + */ + public LWJGLException(Throwable cause) { + super(cause); + } } diff --git a/src/java/org/lwjgl/LinuxSysImplementation.java b/src/java/org/lwjgl/LinuxSysImplementation.java index e9dee1e1..e906d26a 100644 --- a/src/java/org/lwjgl/LinuxSysImplementation.java +++ b/src/java/org/lwjgl/LinuxSysImplementation.java @@ -31,9 +31,6 @@ */ package org.lwjgl; -import javax.swing.JOptionPane; -import javax.swing.UIManager; - import java.io.IOException; /** @@ -42,7 +39,7 @@ import java.io.IOException; * @author elias_naur * @version $Revision$ */ -class LinuxSysImplementation extends DefaultSysImplementation { +class LinuxSysImplementation extends J2SESysImplementation { public boolean openURL(String url) { // Linux may as well resort to pure Java hackery, as there's no Linux native way of doing it // right anyway. diff --git a/src/java/org/lwjgl/MacOSXSysImplementation.java b/src/java/org/lwjgl/MacOSXSysImplementation.java index 4d4dd530..846bd3e4 100644 --- a/src/java/org/lwjgl/MacOSXSysImplementation.java +++ b/src/java/org/lwjgl/MacOSXSysImplementation.java @@ -32,8 +32,6 @@ package org.lwjgl; import java.lang.reflect.Method; -import javax.swing.JOptionPane; -import javax.swing.UIManager; /** * $Id$ @@ -41,7 +39,7 @@ import javax.swing.UIManager; * @author elias_naur * @version $Revision$ */ -class MacOSXSysImplementation extends DefaultSysImplementation { +class MacOSXSysImplementation extends J2SESysImplementation { public boolean openURL(String url) { try { Class com_apple_eio_FileManager = Class.forName("com.apple.eio.FileManager"); diff --git a/src/java/org/lwjgl/NativeSysImplementation.java b/src/java/org/lwjgl/NativeSysImplementation.java new file mode 100644 index 00000000..16309829 --- /dev/null +++ b/src/java/org/lwjgl/NativeSysImplementation.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2002-2004 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl; + +/** + * $Id$ + * A SysImplementation that uses native calls only. + *

+ * @author $Author$ + * @version $Revision$ + */ +class NativeSysImplementation extends DefaultSysImplementation { + public native long getTimerResolution(); + + public native long getTime(); + + public native void alert(String title, String message); + + public native boolean openURL(String url); + + public native String getClipboard(); +} diff --git a/src/java/org/lwjgl/Sys.java b/src/java/org/lwjgl/Sys.java index d41dd1cd..55f2f776 100644 --- a/src/java/org/lwjgl/Sys.java +++ b/src/java/org/lwjgl/Sys.java @@ -36,7 +36,6 @@ import java.net.MalformedURLException; import java.net.URL; import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.Display; /** * $Id$ diff --git a/src/java/org/lwjgl/Win32SysImplementation.java b/src/java/org/lwjgl/Win32SysImplementation.java index 864b82a8..f6356d77 100644 --- a/src/java/org/lwjgl/Win32SysImplementation.java +++ b/src/java/org/lwjgl/Win32SysImplementation.java @@ -1,31 +1,31 @@ -/* - * Copyright (c) 2002-2004 LWJGL Project +/* + * Copyright (c) 2003 Shaven Puppy Ltd * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are + * modification, are permitted provided that the following conditions are * met: - * - * * Redistributions of source code must retain the above copyright + * + * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * * Neither the name of 'LWJGL' nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * + * * Neither the name of 'Shaven Puppy' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @@ -33,18 +33,11 @@ package org.lwjgl; /** * $Id$ - * - * @author elias_naur + * Win32 SysImplementation. This is just a straightforward NativsSysImplementation. + *

+ * @author $Author$ * @version $Revision$ */ -class Win32SysImplementation extends DefaultSysImplementation { - public native long getTimerResolution(); +public class Win32SysImplementation extends NativeSysImplementation { - public native long getTime(); - - public native void alert(String title, String message); - - public native boolean openURL(String url); - - public native String getClipboard(); } diff --git a/src/java/org/lwjgl/opengl/LinuxDisplay.java b/src/java/org/lwjgl/opengl/LinuxDisplay.java index 513a995a..31764ff0 100644 --- a/src/java/org/lwjgl/opengl/LinuxDisplay.java +++ b/src/java/org/lwjgl/opengl/LinuxDisplay.java @@ -41,11 +41,10 @@ package org.lwjgl.opengl; import java.nio.ByteBuffer; import java.nio.FloatBuffer; import java.nio.IntBuffer; -import java.io.IOException; -import org.lwjgl.input.Keyboard; import org.lwjgl.BufferUtils; import org.lwjgl.LWJGLException; +import org.lwjgl.input.Keyboard; final class LinuxDisplay implements DisplayImplementation { private static final int CURSOR_HANDLE_SIZE = 8; diff --git a/src/native/win32/org_lwjgl_Sys.c b/src/native/win32/org_lwjgl_Sys.c index 6ceabe88..9ec93002 100644 --- a/src/native/win32/org_lwjgl_Sys.c +++ b/src/native/win32/org_lwjgl_Sys.c @@ -41,7 +41,7 @@ #include "Window.h" #include "org_lwjgl_Sys.h" -#include "org_lwjgl_Win32SysImplementation.h" +#include "org_lwjgl_NativeSysImplementation.h" #include "common_tools.h" #include @@ -53,7 +53,7 @@ unsigned __int64 hires_timer = 0; // Hires timer current time * Method: getTimerResolution * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTimerResolution +JNIEXPORT jlong JNICALL Java_org_lwjgl_NativeSysImplementation_getTimerResolution (JNIEnv * env, jobject ignored) { QueryPerformanceFrequency((LARGE_INTEGER*) &hires_timer_freq); @@ -65,7 +65,7 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTimerResolution * Method: ngetTime * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTime +JNIEXPORT jlong JNICALL Java_org_lwjgl_NativeSysImplementation_getTime (JNIEnv * env, jobject ignored) { QueryPerformanceCounter((LARGE_INTEGER*) &hires_timer); @@ -77,7 +77,7 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTime * Method: alert * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_lwjgl_Win32SysImplementation_alert +JNIEXPORT void JNICALL Java_org_lwjgl_NativeSysImplementation_alert (JNIEnv * env, jobject ignored, jstring title, jstring message) { char * eMessageText = GetStringNativeChars(env, message); @@ -95,7 +95,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_Win32SysImplementation_alert * Method: openURL * Signature: (Ljava/lang/String;)V */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_Win32SysImplementation_openURL +JNIEXPORT jboolean JNICALL Java_org_lwjgl_NativeSysImplementation_openURL (JNIEnv * env, jobject ignored, jstring url) { STARTUPINFO si; @@ -163,7 +163,7 @@ const void * getClipboard(int type) } -JNIEXPORT jstring JNICALL Java_org_lwjgl_Win32SysImplementation_getClipboard +JNIEXPORT jstring JNICALL Java_org_lwjgl_NativeSysImplementation_getClipboard (JNIEnv * env, jobject ignored) { // Check to see if there's text available in the clipboard