Fixed AWT dependency.

This commit is contained in:
Caspian Rychlik-Prince 2005-01-20 22:51:28 +00:00
parent debea3b6b7
commit a8fcd3edde
11 changed files with 187 additions and 79 deletions

View File

@ -385,15 +385,13 @@
</javah> </javah>
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/win32" force="yes"> <javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/win32" force="yes">
<class name="org.lwjgl.opengl.Win32Display" /> <class name="org.lwjgl.opengl.Win32Display" />
<class name="org.lwjgl.Win32SysImplementation" /> <class name="org.lwjgl.NativeSysImplementation" />
</javah> </javah>
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/macosx" force="yes"> <javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/macosx" force="yes">
<class name="org.lwjgl.opengl.MacOSXDisplay" /> <class name="org.lwjgl.opengl.MacOSXDisplay" />
</javah> </javah>
<!-- lwjgl --> <!-- lwjgl -->
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}" force="yes"> <javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}" force="yes">
<class name="org.lwjgl.DefaultSysImplementation" />
<class name="org.lwjgl.input.Cursor" /> <class name="org.lwjgl.input.Cursor" />
<class name="org.lwjgl.input.Keyboard" /> <class name="org.lwjgl.input.Keyboard" />
<class name="org.lwjgl.input.Mouse" /> <class name="org.lwjgl.input.Mouse" />

View File

@ -31,9 +31,6 @@
*/ */
package org.lwjgl; package org.lwjgl;
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
/** /**
* $Id$ * $Id$
@ -49,28 +46,7 @@ abstract class DefaultSysImplementation implements SysImplementation {
return 1000; return 1000;
} }
public long getTime() { public abstract long getTime();
return System.currentTimeMillis(); public abstract void alert(String title, String message);
} public abstract String getClipboard();
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;
}
} }

View File

@ -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.
* <p>
* @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;
}
}

View File

@ -34,19 +34,44 @@ package org.lwjgl;
/** /**
* $Id$ * $Id$
* <p> * <p>
* This exception is supplied to make exception handling more generic * This exception is supplied to make exception handling more generic for LWJGL
* for LWJGL specific exceptions * specific exceptions
* </p> * </p>
*
* @author Brian Matzon <brian@matzon.dk> * @author Brian Matzon <brian@matzon.dk>
* @version $Revision$ * @version $Revision$
*/ */
public class LWJGLException extends Exception { public class LWJGLException extends Exception {
/** /**
* Creates a new LWJGLException * Plain c'tor
* @param msg String identifier for exception */
*/ public LWJGLException() {
super();
}
/**
* Creates a new LWJGLException
*
* @param msg
* String identifier for exception
*/
public LWJGLException(String msg) { public LWJGLException(String msg) {
super(msg); super(msg);
} }
/**
* @param message
* @param cause
*/
public LWJGLException(String message, Throwable cause) {
super(message, cause);
}
/**
* @param cause
*/
public LWJGLException(Throwable cause) {
super(cause);
}
} }

View File

@ -31,9 +31,6 @@
*/ */
package org.lwjgl; package org.lwjgl;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import java.io.IOException; import java.io.IOException;
/** /**
@ -42,7 +39,7 @@ import java.io.IOException;
* @author elias_naur <elias_naur@users.sourceforge.net> * @author elias_naur <elias_naur@users.sourceforge.net>
* @version $Revision$ * @version $Revision$
*/ */
class LinuxSysImplementation extends DefaultSysImplementation { class LinuxSysImplementation extends J2SESysImplementation {
public boolean openURL(String url) { public boolean openURL(String url) {
// Linux may as well resort to pure Java hackery, as there's no Linux native way of doing it // Linux may as well resort to pure Java hackery, as there's no Linux native way of doing it
// right anyway. // right anyway.

View File

@ -32,8 +32,6 @@
package org.lwjgl; package org.lwjgl;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
/** /**
* $Id$ * $Id$
@ -41,7 +39,7 @@ import javax.swing.UIManager;
* @author elias_naur <elias_naur@users.sourceforge.net> * @author elias_naur <elias_naur@users.sourceforge.net>
* @version $Revision$ * @version $Revision$
*/ */
class MacOSXSysImplementation extends DefaultSysImplementation { class MacOSXSysImplementation extends J2SESysImplementation {
public boolean openURL(String url) { public boolean openURL(String url) {
try { try {
Class com_apple_eio_FileManager = Class.forName("com.apple.eio.FileManager"); Class com_apple_eio_FileManager = Class.forName("com.apple.eio.FileManager");

View File

@ -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.
* <p>
* @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();
}

View File

@ -36,7 +36,6 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import org.lwjgl.input.Mouse; import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
/** /**
* $Id$ * $Id$

View File

@ -1,31 +1,31 @@
/* /*
* Copyright (c) 2002-2004 LWJGL Project * Copyright (c) 2003 Shaven Puppy Ltd
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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: * 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. * notice, this list of conditions and the following disclaimer.
* *
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* *
* * Neither the name of 'LWJGL' nor the names of * * Neither the name of 'Shaven Puppy' nor the names of its contributors
* its contributors may be used to endorse or promote products derived * may be used to endorse or promote products derived from this software
* from this software without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * 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 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -33,18 +33,11 @@ package org.lwjgl;
/** /**
* $Id$ * $Id$
* * Win32 SysImplementation. This is just a straightforward NativsSysImplementation.
* @author elias_naur <elias_naur@users.sourceforge.net> * <p>
* @author $Author$
* @version $Revision$ * @version $Revision$
*/ */
class Win32SysImplementation extends DefaultSysImplementation { public class Win32SysImplementation extends NativeSysImplementation {
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();
} }

View File

@ -41,11 +41,10 @@ package org.lwjgl.opengl;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import java.io.IOException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.BufferUtils; import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException; import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
final class LinuxDisplay implements DisplayImplementation { final class LinuxDisplay implements DisplayImplementation {
private static final int CURSOR_HANDLE_SIZE = 8; private static final int CURSOR_HANDLE_SIZE = 8;

View File

@ -41,7 +41,7 @@
#include "Window.h" #include "Window.h"
#include "org_lwjgl_Sys.h" #include "org_lwjgl_Sys.h"
#include "org_lwjgl_Win32SysImplementation.h" #include "org_lwjgl_NativeSysImplementation.h"
#include "common_tools.h" #include "common_tools.h"
#include <malloc.h> #include <malloc.h>
@ -53,7 +53,7 @@ unsigned __int64 hires_timer = 0; // Hires timer current time
* Method: getTimerResolution * Method: getTimerResolution
* Signature: ()J * Signature: ()J
*/ */
JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTimerResolution JNIEXPORT jlong JNICALL Java_org_lwjgl_NativeSysImplementation_getTimerResolution
(JNIEnv * env, jobject ignored) (JNIEnv * env, jobject ignored)
{ {
QueryPerformanceFrequency((LARGE_INTEGER*) &hires_timer_freq); QueryPerformanceFrequency((LARGE_INTEGER*) &hires_timer_freq);
@ -65,7 +65,7 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTimerResolution
* Method: ngetTime * Method: ngetTime
* Signature: ()J * Signature: ()J
*/ */
JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTime JNIEXPORT jlong JNICALL Java_org_lwjgl_NativeSysImplementation_getTime
(JNIEnv * env, jobject ignored) (JNIEnv * env, jobject ignored)
{ {
QueryPerformanceCounter((LARGE_INTEGER*) &hires_timer); QueryPerformanceCounter((LARGE_INTEGER*) &hires_timer);
@ -77,7 +77,7 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_Win32SysImplementation_getTime
* Method: alert * Method: alert
* Signature: (Ljava/lang/String;Ljava/lang/String;)V * 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) (JNIEnv * env, jobject ignored, jstring title, jstring message)
{ {
char * eMessageText = GetStringNativeChars(env, message); char * eMessageText = GetStringNativeChars(env, message);
@ -95,7 +95,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_Win32SysImplementation_alert
* Method: openURL * Method: openURL
* Signature: (Ljava/lang/String;)V * 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) (JNIEnv * env, jobject ignored, jstring url)
{ {
STARTUPINFO si; 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) (JNIEnv * env, jobject ignored)
{ {
// Check to see if there's text available in the clipboard // Check to see if there's text available in the clipboard