1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
package demos.applets;
import java.applet.*;
import java.awt.Container;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.KeyListener;
import javax.media.opengl.*;
import javax.media.nativewindow.*;
import com.sun.javafx.newt.*;
import com.sun.javafx.newt.opengl.*;
/** Shows how to deploy an applet using JOGL. This demo must be
referenced from a web page via an <applet> tag. */
public class JOGLNewtApplet1Run extends Applet {
JOGLNewtAppletBase base;
public void init() {
if(!(this instanceof Container)) {
throw new RuntimeException("This Applet is not a AWT Container");
}
Container container = (Container) this; // have to think about that, we may use a Container
String glEventListenerClazzName=null;
String glProfileName=null;
int glSwapInterval=0;
boolean handleWindowEvents=true;
boolean useGLInEventHandler=false;
boolean glDebug=false;
boolean glTrace=false;
String tmp;
try {
glEventListenerClazzName = getParameter("gl_event_listener_class");
glProfileName = getParameter("gl_profile");
glSwapInterval = JOGLNewtAppletBase.str2Int(getParameter("gl_swap_interval"), glSwapInterval);
useGLInEventHandler = JOGLNewtAppletBase.str2Bool(getParameter("gl_use_in_events"), useGLInEventHandler);
glDebug = JOGLNewtAppletBase.str2Bool(getParameter("gl_debug"), glDebug);
glTrace = JOGLNewtAppletBase.str2Bool(getParameter("gl_trace"), glTrace);
} catch (Exception e) {
e.printStackTrace();
}
if(null==glEventListenerClazzName) {
throw new RuntimeException("No applet parameter 'gl_event_listener_class'");
}
base = new JOGLNewtAppletBase(glEventListenerClazzName,
glProfileName,
glSwapInterval,
handleWindowEvents,
useGLInEventHandler,
glDebug,
glTrace);
try {
GLCapabilities caps = new GLCapabilities(GLProfile.get(glProfileName));
Display nDisplay = NewtFactory.createDisplay(NativeWindowFactory.TYPE_AWT, null); // local display
Screen nScreen = NewtFactory.createScreen(NativeWindowFactory.TYPE_AWT, nDisplay, 0); // screen 0
Window nWindow = NewtFactory.createWindow(NativeWindowFactory.TYPE_AWT, new Object[] { container },
nScreen, caps, true /* undecorated */);
// nWindow.setPosition(x, y);
// nWindow.setSize(width, height);
if(null!=nWindow) {
base.init(nWindow);
}
if(base.isValid()) {
GLEventListener glEventListener = base.getGLEventListener();
if(glEventListener instanceof MouseListener) {
addMouseListener((MouseListener)glEventListener);
}
if(glEventListener instanceof MouseMotionListener) {
addMouseMotionListener((MouseMotionListener)glEventListener);
}
if(glEventListener instanceof KeyListener) {
addKeyListener((KeyListener)glEventListener);
}
}
} catch (Throwable t) {
throw new RuntimeException(t);
}
}
public void start() {
base.start();
}
public void stop() {
base.stop();
}
public void destroy() {
base.destroy();
}
}
|