/**
 * @(#)MinoidsApplet.java
 * @author JLMJ
 * @date 2001-10-09
 */
package minoids1.controls;

import minoids1.Minoid;
import minoids1.viewer.MinoidsViewerPanel;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class MinoidsApplet extends Applet implements ActionListener
{
    private MinoidsViewerPanel viewer;

    private String[] optionsLabels = { "Box", "Pyramid", "Counters" };
    private AbstractControlDialog[] optionsDialogs = new AbstractControlDialog[3];
    private PopupMenu optionsPopupMenu;
    private ControlPanel controlPanel;
    private Frame parent;
    private Minoid[] minoids;
    
    public void init() {
        setLayout(new BorderLayout());

        optionsPopupMenu = new PopupMenu();
        viewer = new MinoidsViewerPanel(optionsPopupMenu);
        add(viewer, BorderLayout.CENTER);
        
        for (int i=0; i < optionsLabels.length; i++) {
            MenuItem mi = new MenuItem(optionsLabels[i]);
            mi.setActionCommand(i+"");
            mi.addActionListener(this);
            optionsPopupMenu.add(mi);
        }

        for (Component c = this; c != null; c = c.getParent()) {
            if (c instanceof Frame)
                parent = (Frame)c;
        }
        controlPanel = new ControlPanel(viewer, parent);
        
        optionsDialogs = new AbstractControlDialog[3];
        optionsDialogs[0] = new BoxControlDialog(viewer, minoids, controlPanel, parent);
        optionsDialogs[1] = new PyramidControlDialog(viewer, minoids, controlPanel, parent);
        optionsDialogs[2] = new CounterControlDialog(viewer, minoids, parent, this);
    }
    
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        int selection = Integer.parseInt(command);
        for (int i=0; i < optionsLabels.length; i++) {
            if (i == selection) {
                optionsDialogs[i].setVisible(true);
                optionsDialogs[i].updateMinoids();
            } else {
                optionsDialogs[i].setVisible(false);
            }
        }
    }
    
    public void paint(Graphics g) {
        viewer.repaint();
    }
    
    public void update(Graphics g) {
        paint(g);
    }
}


