/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
******************************************************************************/
package com.badlogic.gdx.backends.lwjgl;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Canvas;
import com.badlogic.gdx.ApplicationListener;
/**
* An OpenGL surface in an applet.
*
* @author Nathan Sweet
*/
public class LwjglApplet extends Applet {
final Canvas canvas;
LwjglApplication app;
class LwjglAppletApplication extends LwjglApplication {
public LwjglAppletApplication(ApplicationListener listener, boolean useGL2, Canvas canvas) {
super(listener, useGL2, canvas);
}
public LwjglAppletApplication(ApplicationListener listener, Canvas canvas, LwjglApplicationConfiguration config) {
super(listener, config, canvas);
}
@Override
public ApplicationType getType() {
return ApplicationType.Applet;
}
}
public LwjglApplet(final ApplicationListener listener, final LwjglApplicationConfiguration config) {
LwjglNativesLoader.load = false;
canvas = new Canvas() {
public final void addNotify() {
super.addNotify();
app = new LwjglAppletApplication(listener, canvas, config);
}
public final void removeNotify() {
app.stop();
super.removeNotify();
}
};
setLayout(new BorderLayout());
canvas.setIgnoreRepaint(true);
add(canvas);
canvas.setFocusable(true);
canvas.requestFocus();
}
public LwjglApplet(final ApplicationListener listener, final boolean useGL2) {
LwjglNativesLoader.load = false;
canvas = new Canvas() {
public final void addNotify() {
super.addNotify();
app = new LwjglAppletApplication(listener, useGL2, canvas);
}
public final void removeNotify() {
app.stop();
super.removeNotify();
}
};
setLayout(new BorderLayout());
canvas.setIgnoreRepaint(true);
add(canvas);
canvas.setFocusable(true);
canvas.requestFocus();
}
public void destroy() {
remove(canvas);
super.destroy();
}
}