import java.awt.*;

class TomCanvas extends Canvas
{
        String paint_value = "Uninit";
        public void paint(Graphics g)
        {
                g.drawString(paint_value, 10, 10);
        }
        public void setValue(String s)
        {
                paint_value = s;
        }
}

public class UI extends Frame
{

        MenuBar my_bar = new MenuBar();
        Menu file = new Menu("File");
        MenuItem fileNew = new MenuItem("New");
        MenuItem fileOpen = new MenuItem("Open");
        MenuItem fileSave = new MenuItem("Save");
        Menu edit = new Menu("Edit");
        MenuItem editCut = new MenuItem("Cut");
        MenuItem editCopy = new MenuItem("Copy");
        MenuItem editPaste = new MenuItem("Paste");
        Panel pLeft = new Panel();
        Panel pTop = new Panel();
        Panel pRight = new Panel();
        Panel pBottom = new Panel();
        TomCanvas tc = new TomCanvas();

        public UI()
        {

                //menu setup here
                setMenuBar(my_bar);
                my_bar.add(file);
                file.add(fileNew);
                file.add(fileOpen);
                file.add(fileSave);
                my_bar.add(edit);
                edit.add(editCut);
                edit.add(editCopy);
                edit.add(editPaste);

                setLayout(new BorderLayout());

                pLeft.setLayout(new GridLayout(3, 1));
                pLeft.add(new Button("pLeft 1"));
                pLeft.add(new Button("pLeft 2"));
                pLeft.add(new Button("pLeft 3"));
                add("West", pLeft);

                pRight.setLayout(new GridLayout(3, 1));
                pRight.add(new Button("pRight 1"));
                pRight.add(new Button("pRight 2"));
                pRight.add(new Button("pRight 3"));
                add("East", pRight);

                pTop.setLayout(new GridLayout(1, 3));
                pTop.add(new Button("pTop 1"));
                pTop.add(new Button("pTop 2"));
                pTop.add(new Button("pTop 3"));
                add("North", pTop);


                pBottom.setLayout(new GridLayout(1, 3));
                pBottom.add(new Button("pBottom 1"));
                pBottom.add(new Button("pBottom 2"));
                pBottom.add(new Button("pBottom 3"));
                add("South", pBottom);

                add("Center", tc);


        }

        public boolean action(Event evt, Object arg)
        {

                //System.out.println("action called");
                tc.setValue((String)arg);
                tc.repaint();

                if (evt.target instanceof MenuItem)
                        {
                        
                        System.out.println("Menu item " + arg);
                        if (evt.target == fileNew)
                                {
                                System.out.println("FileNew clicked");
                                }
                        else if (evt.target == fileOpen)
                                {
                                System.out.println("FileOpen clicked");
                                }
                        else if (evt.target == fileSave)
                                {
                                System.out.println("FileSave clicked");
                                }
                        else if (evt.target == editCut)
                                {
                                System.out.println("EditCut clicked");
                                }
                        else if (evt.target == editCopy)
                                {
                                System.out.println("EditCopy clicked");
                                }
                        else if (evt.target == editPaste)
                                {
                                System.out.println("EditPaste clicked");
                                }
                        else
                                {
                                System.out.println("Something weird clicked; " + arg);
                                }



                        return true;
                        }
                else if (evt.target instanceof Button)
                        {
                        System.out.println("clicked button " + arg);
                        return true;
                        }
                return false;

        }

        public static void main(String[] argv)
        {
                UI m = new UI();
                m.resize(200, 200);
                m.show();
        }


        public boolean handleEvent(Event evt)
        {
                //System.out.println("handleEvent called");

                if (evt.id == Event.WINDOW_DESTROY)
                        {

                        this.dispose();
                        }
                return super.handleEvent(evt);
        }



}
