final LogicalLayer logicalLayer, final FrameHandler frameWork, final int index) throws Exception {
final JInternalFrame frame = new JInternalFrame(String.valueOf(index), true, true, true, true);
final JoglCanvasRenderer canvasRenderer = new JoglCanvasRenderer(scene);
final DisplaySettings settings = new DisplaySettings(400, 300, 24, 0, 0, 16, 0, 0, false, false);
final JoglAwtCanvas theCanvas = new JoglAwtCanvas(settings, canvasRenderer);
_showCursor1.put(theCanvas, true);
theCanvas.setSize(new Dimension(400, 300));
theCanvas.setVisible(true);
final AwtKeyboardWrapper keyboardWrapper = new AwtKeyboardWrapper(theCanvas);
final AwtFocusWrapper focusWrapper = new AwtFocusWrapper(theCanvas);
final AwtMouseManager mouseManager = new AwtMouseManager(theCanvas);
final AwtMouseWrapper mouseWrapper = new AwtMouseWrapper(theCanvas, mouseManager);
final ControllerWrapper controllerWrapper = new DummyControllerWrapper();
final PhysicalLayer pl = new PhysicalLayer(keyboardWrapper, mouseWrapper, controllerWrapper, focusWrapper);
logicalLayer.registerInput(theCanvas, pl);
logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.H), new TriggerAction() {
public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
if (source != theCanvas) {
return;
}
if (_showCursor1.get(theCanvas)) {
mouseManager.setCursor(_cursor1);
} else {
mouseManager.setCursor(_cursor2);
}
_showCursor1.put(theCanvas, !_showCursor1.get(theCanvas));
}
}));
logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.J), new TriggerAction() {
public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
if (source != theCanvas) {
return;
}
mouseManager.setCursor(MouseCursor.SYSTEM_DEFAULT);
}
}));
frameWork.addCanvas(theCanvas);
frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(final ComponentEvent e) {
final Camera cam = theCanvas.getCanvasRenderer().getCamera();
if (cam != null) {
cam.resize(theCanvas.getWidth(), theCanvas.getHeight());
cam.setFrustumPerspective(cam.getFovY(), theCanvas.getWidth() / (float) theCanvas.getHeight(), cam
.getFrustumNear(), cam.getFrustumFar());
}
}
});
frame.setLocation(20 * index, 20 * index);