package edu.umd.cs.piccolox; import javax.swing.JApplet; import javax.swing.SwingUtilities; import edu.umd.cs.piccolo.PCanvas; /** * <b>PApplet</b> is meant to be subclassed by applications that just need a PCanvas * embedded in a web page. * * @version 1.0 * @author Jesse Grosjean */ public class PApplet extends JApplet { /** * */ private static final long serialVersionUID = -2441920979147009156L; private PCanvas canvas; public void init() { setBackground(null); canvas = createCanvas(); getContentPane().add(canvas); validate(); canvas.requestFocus(); beforeInitialize(); // Manipulation of Piccolo's scene graph should be done from Swings // event dispatch thread since Piccolo is not thread safe. This code calls // initialize() from that thread once the PFrame is initialized, so you are // safe to start working with Piccolo in the initialize() method. SwingUtilities.invokeLater(new Runnable() { public void run() { PApplet.this.initialize(); repaint(); } }); } public PCanvas getCanvas() { return canvas; } public PCanvas createCanvas() { return new PCanvas(); } //**************************************************************** // Initialize //**************************************************************** /** * This method will be called before the initialize() method and will be * called on the thread that is constructing this object. */ public void beforeInitialize() { } /** * Subclasses should override this method and add their * Piccolo initialization code there. This method will be called on the * swing event dispatch thread. Note that the constructors of PFrame * subclasses may not be complete when this method is called. If you need to * initailize some things in your class before this method is called place * that code in beforeInitialize(); */ public void initialize() { } }