import java.awt.*;
import java.awt.event.*;
import java.util.EventListener;
import javax.swing.*;

public class MiniDraw2 extends JApplet  {

  protected DrawingCanvas canvas;  //Combined View and Model
  protected ControlPanelView controlPanel;
  protected boolean isApplet = false;

  /* Constructors  */

  public MiniDraw2(boolean isApplet) { 
    this.isApplet = isApplet;
    if (!isApplet) {
      init();
    }
  }

  public MiniDraw2() {
    /* invoked as Applet */
    this(true);
  }

  public void init() {
    getContentPane().setLayout(new BorderLayout());
    canvas = createDrawingCanvas();
    getContentPane().add(canvas, BorderLayout.CENTER);
    controlPanel = createControlPanelView();
    getContentPane().add(controlPanel, BorderLayout.SOUTH);
    canvas.addModelListener(controlPanel);  //not used for anything
  }


  /*Factory methods  */
  protected DrawingCanvas createDrawingCanvas() {
    return new DrawingCanvas();
  }
  
  protected ControlPanelView createControlPanelView() {
    return new ControlPanelView(canvas); 
  }

  /* Main method  */

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setTitle("MiniDraw Second Iteration--Final Revision");
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(new MiniDraw2(false),
			      BorderLayout.CENTER);
    frame.addWindowListener(new AppCloser());
    frame.pack();
    frame.setSize(600, 400);
    frame.setVisible(true);
  }

  /* Inner class AppCLoser for terminating application  */
  /* when Close Window button of frame is clicked       */
   
   static class AppCloser extends WindowAdapter  {
     public void windowClosing(WindowEvent e) {
       System.exit(0);
    }
  }
}
