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

public class MiniDraw2 extends JApplet  {

  protected MiniDrawModel model;
  protected DrawingCanvasView canvas;
  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());
    model = new MiniDrawModel();
    canvas = createDrawingCanvasView();
    getContentPane().add(canvas, BorderLayout.CENTER);
    controlPanel = createControlPanelView();
    getContentPane().add(controlPanel, BorderLayout.SOUTH);
    model.addModelListener(controlPanel);
  }


  /*Factory methods  */
  protected DrawingCanvasView createDrawingCanvasView() {
    return new DrawingCanvasView(model);
  }
  
  protected ControlPanelView createControlPanelView() {
    return new ControlPanelView(model); 
  }

  /* Main method  */

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setTitle("MiniDraw Second Iteration");
    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);
    }
  }
}
