/* 
 * ControlBar.java
 *
 * by Kwan Hoi Ching Eddie
 * 
 * last revised: 06/06/1996
 *
 */

import java.awt.*;
import java.applet.*;
import java.lang.*;
import java.util.*;

/* Control panel at the top of the display. */
public class ControlBar extends Panel {
  
  DisplayPanel display;

  Label dim_label, s1_label, s2_label, type_label;
  Choice dim_choice, s1_choice, s2_choice, type_choice;

  String D_1 = "1", D_2 = "2";
  String S_1 = "5", S_2 = "1", S_3 = "10";
  String T_1 = "Integer", T_2 = "Character", T_3 = "Float", T_4 = "Double";

  /* create a choice box for dimension. */
  private Choice DimensionChoice() {

    Choice list = new Choice();

    list.addItem(D_1);
    list.addItem(D_2);

    return list;
  }

  /* create a choice box for size. */
  private Choice SizeChoice() {

    Choice list = new Choice();

    list.addItem(S_1);
    list.addItem(S_2);
    list.addItem(S_3);

    return list;
  }

  /* create a choice box for type. */
  private Choice TypeChoice() {

    Choice list = new Choice();

    list.addItem(T_1);
    list.addItem(T_2);
    list.addItem(T_3);
    list.addItem(T_4);

    return list;
  }

  // Constructor. 
  public ControlBar(DisplayPanel d) {

    display = d;

    dim_label = new Label("Dimension:");
    s1_label = new Label("Size:");
    s2_label = new Label("Size:");
    type_label = new Label("Type:");

    dim_choice = DimensionChoice();
    s1_choice = SizeChoice();
    s2_choice = SizeChoice();
    type_choice = TypeChoice();

    setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));

    s2_label.disable();
    s2_choice.disable();

    add(dim_label);
    add(dim_choice);

    add(s2_label);
    add(s2_choice);

    add(s1_label);
    add(s1_choice);

    add(type_label);
    add(type_choice);
  }

  /* capture the user's mouse action. */
  public boolean action(Event e, Object arg) {

    if (e.target == dim_choice) {
      if (arg.equals(D_1)) {

        s2_label.disable();
        s2_choice.disable();

      } else if (arg.equals(D_2)) {
      
        s2_label.enable();
        s2_choice.enable();

      }
      display.DimensionChange(Integer.parseInt((String) arg));
      display.SizeChange(1, Integer.parseInt(s1_choice.getSelectedItem()));
      display.SizeChange(2, Integer.parseInt(s2_choice.getSelectedItem()));
      display.TypeChange(type_choice.getSelectedIndex()+1); 

    } else if (e.target == s1_choice) {

      display.DimensionChange(Integer.parseInt(dim_choice.getSelectedItem()));
      display.SizeChange(1, Integer.parseInt((String) arg));
      display.SizeChange(2, Integer.parseInt(s2_choice.getSelectedItem()));
      display.TypeChange(type_choice.getSelectedIndex()+1); 

    } else if (e.target == s2_choice) {

      display.DimensionChange(Integer.parseInt(dim_choice.getSelectedItem()));
      display.SizeChange(1, Integer.parseInt(s1_choice.getSelectedItem()));
      display.SizeChange(2, Integer.parseInt((String) arg));
      display.TypeChange(type_choice.getSelectedIndex()+1); 

    } else if (e.target == type_choice) {

      display.DimensionChange(Integer.parseInt(dim_choice.getSelectedItem()));
      display.SizeChange(1, Integer.parseInt(s1_choice.getSelectedItem()));
      display.SizeChange(2, Integer.parseInt(s2_choice.getSelectedItem()));
      display.TypeChange(type_choice.getSelectedIndex()+1); 

    }

    return true;
  }
}

