package jdraw;

import jdraw.graphicalobjects.GraphicalObject;
import jdraw.ui.GraphicalObjectCanvas;
import jdraw.ui.MainFrame;

/**
 *
 * The <code>JDraw</code> "entry-point class".
 *
 */
public class JDraw
  extends javax.swing.JApplet
{
  /** Some dummy graphical objects. */
  private final static GraphicalObject  dummy_graphical_objects[]= { new jdraw.graphicalobjects.Point( 100, 100, java.awt.Color.green ),
                                                                     new jdraw.graphicalobjects.Ellipse( 25, 50, java.awt.Color.blue, 150, 100 ),
                                                                     new jdraw.graphicalobjects.Rectangle( 75, 90, java.awt.Color.yellow, 50, 20 ),
                                                                     new jdraw.graphicalobjects.Segment( 50, 25, java.awt.Color.cyan, 100, 0 ),
                                                                     new jdraw.graphicalobjects.Segment( 300, 50, java.awt.Color.cyan, 0, 100 ),
                                                                     new jdraw.graphicalobjects.Segment( 250, 100, java.awt.Color.cyan, 100, 0 ),
                                                                     new jdraw.graphicalobjects.TextArea( 100, 150, java.awt.Color.magenta, "Quel joli dessin !", javax.swing.SwingConstants.SOUTH ) };

  /** The graphical objects manager, which keeps track of all displayed objects. */
  private final static GraphicalObjectManager  grobjmanManager= new GraphicalObjectManager( dummy_graphical_objects );

  /**
   * Builds a new <code>JDraw</code> applet.
   */
  public JDraw()
  {
  }

  // ****************************** Application entry-point ******************************

  /**
   * The <code>JDraw</code> "entry-point function".
   */
  public static void main( final String strArgs[] )
  {
    final MainFrame     mfrmMainFrame= new MainFrame( grobjmanManager );

    mfrmMainFrame.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE );
  }


  // ****************************** Applet "entry-points" ******************************

  /**
   * Called by the browser or applet viewer to inform this applet that it has been loaded into the system.
   */
  public void init()
  {
    setJMenuBar( MainFrame.buildMenuBar( this ) );
    MainFrame.initRootPaneContainer( this, grobjmanManager );
  }

  /**
   * Called by the browser or applet viewer to inform this applet that it should start its execution.
   */
  public void start()
  {
    // nothing to do...
  }

  /**
   * Called by the browser or applet viewer to inform this applet that it should stop its execution.
   */
  public void stop()
  {
    // nothing to do...
  }

  /**
   * Called by the browser or applet viewer to inform this applet that it is being reclaimed and that
   * it should destroy any resources that it has allocated.
   */
  public void destroy()
  {
    // nothing to do...
  }
}

