/**
 * @(#)ControlsPanel.java
 * @author JLMJ
 * @date 2001-10-03
 */
package minoids1.controls;

import minoids1.Minoid;
import minoids1.viewer.MinoidsViewerPanel;
import java.awt.*;
import java.awt.event.*;

public class ControlPanel extends Panel implements ItemListener, Runnable
{
    private MinoidsViewerPanel viewer;
    private Minoid[] minoids;
    private Checkbox[] checkboxes;
    
    public ControlPanel(MinoidsViewerPanel viewer, Frame parent) {
        this.viewer = viewer;
    }
    
    public void updateControls(Minoid[] minoids) {
        this.minoids = minoids;
        this.viewer.removeAllMinoids();
        this.viewer.add(minoids);
        if (minoids != null) {
            removeAll();
            setLayout(new GridLayout(1 + (minoids.length/10), 10));
            checkboxes = new Checkbox[minoids.length];
            for (int i=0; i < minoids.length; i++) {
                checkboxes[i] = new Checkbox((i+1) + "");
                checkboxes[i].setState(minoids[i].isVisible());
                checkboxes[i].addItemListener(this);
                add(checkboxes[i]);
            }
            //Thread t = new Thread(this);
            //t.start();
        }
    }
    
    public void itemStateChanged(ItemEvent e) {
        Checkbox cb = (Checkbox)e.getItemSelectable();
        String s = cb.getLabel();
        int i = new Integer(s).intValue() - 1;
        minoids[i].setVisible(cb.getState());
        viewer.repaint();
    }

    public void setAll() {
        for (int i=0; i < minoids.length; i++) {
            checkboxes[i].setState(true);
            minoids[i].setVisible(true);
        }
        viewer.repaint();
    }
    
    public void clearAll() {
        for (int i=0; i < minoids.length; i++) {
            checkboxes[i].setState(false);
            minoids[i].setVisible(false);
        }
        viewer.repaint();
    }
    
    public void run() {
        try {
            for (int i=0; i < minoids.length; i++) {
                Thread.sleep(50);
                checkboxes[i].setState(true);
                viewer.add(minoids[i]);
            }
        } catch (InterruptedException ie) {
            
        }
    }
}

