package vgp.tutor.eventCamera; import java.applet.Applet; import java.awt.*; import jv.object.*; import jv.viewer.PvViewer; /** * Applet studies camera events issued from a JavaView display. * In this example the events are used to steer the camera in a second window. *
* The camera events from the right window are used to steer the
* camera in the left window such that a stereo effect is produced.
* Note, the viewing direction of the left camera is slightly rotated
* around the up-vector of the camera by about 6 degrees.
*
* @see jv.viewer.PvViewer
* @author Konrad Polthier
* @version 14.12.03, 2.00 revised (kp) Full revision with better panels.
* 25.07.00, 1.00 created (kp)
*/
public class PaEventCamera extends Applet {
/** frame if run standalone, null if run as applet. */
public Frame m_frame = null;
/** 3D-viewer window for graphics output and which is embedded into the applet. */
protected PvViewer m_viewer;
/** Interface of applet to inform about author, version, and copyright. */
public String getAppletInfo() {
return "Name: " + this.getClass().getName()+ "\r\n" +
"Author: " + "Konrad Polthier" + "\r\n" +
"Version: " + "2.00" + "\r\n" +
"Applet demonstrates to handle camera events and setup stereo viewing." + "\r\n";
}
/**
* Configure and initialize the viewer, load system and user projects.
* One of the user projects must be selected here.
*/
public void init() {
// Create viewer for viewing 3d geometries
m_viewer = new PvViewer(this, m_frame);
// Create and load a project
PjEventCamera pjStereo = new PjEventCamera();
m_viewer.addProject(pjStereo);
m_viewer.selectProject(pjStereo);
// Add two displays at top and the project inspector at the bottom.
setLayout(new BorderLayout());
Panel pDisplay = new Panel();
pDisplay.setLayout(new GridLayout(1, 2));
pDisplay.add((Component)pjStereo.getLeftDisplay());
pDisplay.add((Component)pjStereo.getRightDisplay());
add(pDisplay, BorderLayout.CENTER);
add(pjStereo.getInfoPanel(), BorderLayout.SOUTH);
validate();
}
/**
* Standalone application support. The main() method acts as the applet's
* entry point when it is run as a standalone application. It is ignored
* if the applet is run from within an HTML page.
*/
public static void main(String args[]) {
PaEventCamera va = new PaEventCamera();
// Create toplevel window of application containing the applet
Frame frame = new jv.object.PsMainFrame(va, args);
va.m_frame = frame;
va.init();
frame.setMenuBar(va.m_viewer.newMenuBar(frame));
frame.pack();
va.start();
frame.setBounds(new Rectangle(300, 5, 600, 450));
frame.setVisible(true);
}
/** Print info while initializing applet and viewer. */
public void paint(Graphics g) {
g.setColor(Color.blue);
g.drawString(PsConfig.getProgramAndVersion(), 20, 40);
g.drawString("Loading Projects .....", 20, 60);
}
/**
* Does clean-up when applet is destroyed by the browser.
* Here we just close and dispose all our control windows.
*/
public void destroy() { m_viewer.destroy(); }
/** Start viewer, e.g. start animation if requested */
public void start() { m_viewer.start(); }
/** Stop viewer, e.g. stop animation if requested */
public void stop() { m_viewer.stop(); }
}