import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class Mastermind extends Applet
  implements WindowListener, ActionListener
{
  public void init() {
    myFrame=new Frame();
    myFrame.addWindowListener(this);
    myFrame.setBounds(175,100,400,450);

    GridBagLayout layout=new GridBagLayout();
    GridBagConstraints constraints=new GridBagConstraints();
    constraints.anchor=constraints.NORTHWEST;
    constraints.fill=constraints.NONE;
    constraints.gridheight=15;
    constraints.gridwidth=5;
    constraints.weightx=1;
    constraints.weighty=1;
    constraints.ipadx=1;
    constraints.ipady=1;
    constraints.insets=new Insets(1, 1, 1, 1);
    
    Container p=myFrame;
//  myFrame.add(p,"Center");
    p.setLayout(layout);

System.out.println("new MMCanvas3");
    Label l=new Label();
    Font f=new Font("Dialog",Font.PLAIN,18);
    l.setFont(f);
    MMCanvas mmc=new MMCanvas(l);
    constraints.gridx=1;
    constraints.gridy=1;
    p.add(mmc, constraints);


    MenuBar mb=new MenuBar();
    myFrame.setMenuBar(mb);
    Menu m=new Menu("File");
    mb.add(m);

    MenuItem mi=new MenuItem("Exit");
    m.add(mi);
    mi.addActionListener(this);

    m=new Menu("Options");
    mb.add(m);

    CheckboxMenuItem cmi=new CheckboxMenuItem("Hints");
    m.add(cmi);
    cmi.addItemListener(mmc);

    cmi=new CheckboxMenuItem("List Possibilities");
    m.add(cmi);
    cmi.addItemListener(mmc);

    cmi=new CheckboxMenuItem("Show Count",true);
    m.add(cmi);
    cmi.addItemListener(mmc);

    constraints.anchor=constraints.CENTER;
    constraints.gridwidth=8;
    constraints.gridheight=1;
    constraints.gridx=0;
    constraints.gridy=16;
    p.add(l, constraints);

    constraints.gridwidth=1;
    constraints.gridx=2;
    p.add(new Label(), constraints);

    constraints.gridx=0;
    constraints.gridy=1;
    p.add(new Label(), constraints);

    constraints.gridy=12;
    p.add(new Label(), constraints);

 CheckboxGroup cbg=new CheckboxGroup();

    Checkbox cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.gray);
    cb.addItemListener(mmc);
    mmc.setCB(cb,0);
    constraints.gridy=2;
    constraints.ipadx=0;
    constraints.ipady=0;
    constraints.weighty=0;
    constraints.anchor=constraints.CENTER;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,true);
    cb.setBackground(Color.red);
    cb.addItemListener(mmc);
    mmc.setCB(cb,1);
    constraints.gridy=3;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.pink);
    cb.addItemListener(mmc);
    mmc.setCB(cb,2);
    constraints.gridy=4;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.yellow);
    cb.addItemListener(mmc);
    mmc.setCB(cb,3);
    constraints.gridy=5;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.green);
    cb.addItemListener(mmc);
    mmc.setCB(cb,4);
    constraints.gridy=6;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.blue);
    cb.addItemListener(mmc);
    mmc.setCB(cb,5);
    constraints.gridy=7;
    p.add(cb, constraints);

    cb=new Checkbox("",cbg,false);
    cb.setBackground(Color.magenta);
    cb.addItemListener(mmc);
    mmc.setCB(cb,6);
    constraints.gridy=8;
    p.add(cb, constraints);

    Button b=new Button("Enter");
    b.addActionListener(mmc);
    constraints.gridy=10;
    constraints.weighty=1;
    p.add(b, constraints);

    b=new Button("Restart");
    b.addActionListener(mmc);
    constraints.gridy=11;
    p.add(b, constraints);

    myFrame.show();     
  }

  public void dispose() {
    myFrame.dispose();
  }

  public void windowActivated(WindowEvent e) {
  }
  public void windowClosed(WindowEvent e) {
  }
  public void windowClosing(WindowEvent e) {
    myFrame.dispose();
  }
  public void windowDeactivated(WindowEvent e) {
  }
  public void windowDeiconified(WindowEvent e) {
  }
  public void windowIconified(WindowEvent e) {
  }
  public void windowOpened(WindowEvent e) {
  }


  public void actionPerformed(ActionEvent e) {
    String s=e.getActionCommand();
    if(s.equals("Exit")) {
      windowClosing(null);
    }
    else
System.out.println(s+":"+e);
  }


  static void main(String args[]) {
    new Mastermind().init();
  }


  Frame myFrame;
}

