
/**
 *
 * demonstration of AWT - more elaborate menus
 *
 * Written by: Roger Garside
 *
 * First Written: 11/July/96
 * Last Rewritten: 30/May/97
 *
 */

import java.awt.* ;
import java.awt.event.* ;

public class Chapter16n4a extends Frame
		 implements WindowListener, ActionListener, ItemListener
    {
    Canvas4a canvas ;

    MenuItem buttonA1, buttonA2, buttonA3,
	     buttonA4, buttonA5, buttonA6,
             buttonA7, quit,
	     buttonB1p1, buttonB1p2, buttonB1p3,
             buttonB2p1, buttonB2p2, buttonB2p3, buttonB2p4 ;

    int noOfOptions = 7 ;
    CheckboxMenuItem[] options = new CheckboxMenuItem[noOfOptions] ;

    /**
     *
     * constructor
     *
     */

    public Chapter16n4a()
	{
	// set up basic window
	setTitle("Chapter16n4a") ;
        setBackground(Color.green) ;
        setSize(500, 400) ;
        addWindowListener(this) ;

	// set up menu structure
	Menu menuA = new Menu("MenuA") ;
	buttonA1 = new MenuItem("Button A1") ;
	menuA.add(buttonA1) ;
        buttonA1.addActionListener(this) ;
	buttonA2 = new MenuItem("Button A2") ;
	menuA.add(buttonA2) ;
        buttonA2.addActionListener(this) ;
	buttonA3 = new MenuItem("Button A3") ;
	menuA.add(buttonA3) ;
        buttonA3.addActionListener(this) ;
	menuA.addSeparator() ;
	buttonA4 = new MenuItem("Button A4") ;
	menuA.add(buttonA4) ;
        buttonA4.addActionListener(this) ;
	buttonA5 = new MenuItem("Button A5") ;
	menuA.add(buttonA5) ;
        buttonA5.addActionListener(this) ;
	buttonA6 = new MenuItem("Button A6") ;
	menuA.add(buttonA6) ;
        buttonA6.addActionListener(this) ;
	buttonA7 = new MenuItem("Button A7") ;
	menuA.add(buttonA7) ;
        buttonA7.addActionListener(this) ;
	menuA.addSeparator() ;
	quit = new MenuItem("Quit") ;
	menuA.add(quit) ;
        quit.addActionListener(this) ;

	Menu menuB = new Menu("MenuB") ;
	Menu menuB1 = new Menu("MenuB1") ;
	buttonB1p1 = new MenuItem("Button B1.1") ;
	menuB1.add(buttonB1p1) ;
        buttonB1p1.addActionListener(this) ;
	buttonB1p2 = new MenuItem("Button B1.2") ;
	menuB1.add(buttonB1p2) ;
        buttonB1p2.addActionListener(this) ;
	buttonB1p3 = new MenuItem("Button B1.3") ;
	menuB1.add(buttonB1p3) ;
        buttonB1p3.addActionListener(this) ;
	menuB.add(menuB1) ;
	Menu menuB2 = new Menu("MenuB2") ;
	buttonB2p1 = new MenuItem("Button B2.1") ;
	menuB2.add(buttonB2p1) ;
        buttonB2p1.addActionListener(this) ;
	buttonB2p2 = new MenuItem("Button B2.2") ;
	menuB2.add(buttonB2p2) ;
        buttonB2p2.addActionListener(this) ;
	buttonB2p3 = new MenuItem("Button B2.3") ;
	menuB2.add(buttonB2p3) ;
        buttonB2p3.addActionListener(this) ;
	buttonB2p4 = new MenuItem("Button B2.4") ;
	menuB2.add(buttonB2p4) ;
        buttonB2p4.addActionListener(this) ;
	menuB.add(menuB2) ;

	Menu menuC = new Menu("MenuC") ;
	options[0] = new CheckboxMenuItem("Monday") ; 
	options[1] = new CheckboxMenuItem("Tuesday") ; 
	options[2] = new CheckboxMenuItem("Wednesday") ; 
	options[3] = new CheckboxMenuItem("Thursday") ; 
	options[4] = new CheckboxMenuItem("Friday") ; 
	options[5] = new CheckboxMenuItem("Saturday") ; 
	options[6] = new CheckboxMenuItem("Sunday") ; 
	for (int i = 0 ; i < noOfOptions ; i++)
            {
            options[i].addItemListener(this) ;
	    menuC.add(options[i]) ;
            }

	MenuBar menuBar = new MenuBar() ;
	menuBar.add(menuA) ;
	menuBar.add(menuB) ;
	menuBar.add(menuC) ;
	setMenuBar(menuBar) ;

	// set up blank area
	canvas = new Canvas4a() ;
	add("Center", canvas) ;
	} // end of constructor method

    /**
     *
     * main
     *
     */

    public static void main(String[] args)
        {
        Chapter16n4a f = new Chapter16n4a() ;
        f.setVisible(true) ;
        } // end of main method

    /**
     *
     * actionPerformed
     *
     */

    public void actionPerformed(ActionEvent event)
        {
	for (int i = 0 ; i < noOfOptions ; i++)
	    System.out.println("option " + i + " is " +
					options[i].getState()) ;
        Object source = event.getSource() ;
        if (source == buttonA1)
            System.out.println("Button A1") ;
        else if (source == buttonA2)
            System.out.println("Button A2") ;
        else if (source == buttonA3)
            System.out.println("Button A3") ;
        else if (source == buttonA4)
            System.out.println("Button A4") ;
        else if (source == buttonA5)
            System.out.println("Button A5") ;
        else if (source == buttonA6)
            System.out.println("Button A6") ;
        else if (source == buttonA7)
            System.out.println("Button A7") ;
        else if (source == buttonB1p1)
            System.out.println("Button B1.1") ;
        else if (source == buttonB1p2)
            System.out.println("Button B1.2") ;
        else if (source == buttonB1p3)
            System.out.println("Button B1.3") ;
        else if (source == buttonB2p1)
            System.out.println("Button B2.1") ;
        else if (source == buttonB2p2)
            System.out.println("Button B2.2") ;
        else if (source == buttonB2p3)
            System.out.println("Button B2.3") ;
        else if (source == buttonB2p4)
            System.out.println("Button B2.4") ;
	else if (event.getSource() == quit)
	    {
	    dispose();
	    System.exit(0);
	    }
        } // end of method actionPerformed

    /**
     *
     * itemStateChanged
     *
     */

    public void itemStateChanged(ItemEvent event)
        {
        if (event.getSource() == options[0])
	    System.out.println("the 'Monday' option was clicked") ;
        else if (event.getSource() == options[1])
	    System.out.println("the 'Tuesday' option was clicked") ;
        else if (event.getSource() == options[2])
	    System.out.println("the 'Wednesday' option was clicked") ;
        else if (event.getSource() == options[3])
	    System.out.println("the 'Thursday' option was clicked") ;
        else if (event.getSource() == options[4])
	    System.out.println("the 'Friday' option was clicked") ;
        else if (event.getSource() == options[5])
	    System.out.println("the 'Saturday' option was clicked") ;
        else if (event.getSource() == options[6])
	    System.out.println("the 'Sunday' option was clicked") ;
	for (int i = 0 ; i < noOfOptions ; i++)
	    System.out.println("option " + i + " is " +
					options[i].getState()) ;
        } // end of method itemStateChanged

    /**
     *
     * windowClosing
     *
     */

    public void windowClosing(WindowEvent event)
        {
        dispose();
        System.exit(0);
        } // end of method windowClosing

    public void windowOpened(WindowEvent event) {}
    public void windowIconified(WindowEvent event) {}
    public void windowDeiconified(WindowEvent event) {}
    public void windowClosed(WindowEvent event) {}
    public void windowActivated(WindowEvent event) {}
    public void windowDeactivated(WindowEvent event) {}
    } // end of class Chapter16n4a

class Canvas4a extends Canvas
    {

    /**
     *
     * paint
     *
     */

    public void paint(Graphics g)
        {
        } // end of method paint
    } // end of class Canvas4a

