blob: 936e7b963360d25e1f5e1d5c700e94ccea0f4085 (
plain)
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
|
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 com.jogamp.newt.awt.NewtCanvasAWT;
import com.jogamp.newt.opengl.GLWindow;
import java.awt.BorderLayout;
/** 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 {
GLWindow glWindow;
NewtCanvasAWT newtCanvasAWT;
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 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);
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,
glSwapInterval,
glDebug,
glTrace);
try {
GLProfile.initSingleton(false);
GLCapabilities caps = new GLCapabilities(GLProfile.get(glProfileName));
glWindow = GLWindow.create(caps);
newtCanvasAWT = new NewtCanvasAWT(glWindow);
container.setLayout(new BorderLayout());
container.add(newtCanvasAWT, BorderLayout.CENTER);
base.init(glWindow);
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() {
glWindow.setVisible(false); // hide 1st
glWindow.reparentWindow(null); // get out of newtCanvasAWT
this.remove(newtCanvasAWT); // remove newtCanvasAWT
base.destroy(true); // destroy glWindow unrecoverable
base=null;
}
}
|