import javax.swing.JPanel;
import javax.swing.JComboBox;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class SimObjectChooser extends JPanel {
    // OVERVIEW: SimObjectChooser manipulates the interface for selecting objects
    //    and maintains state for the current object type.  
    //
    // When clicking on a spot on the grid, it will be set to this class.
    // Rep:

    private Class selectedClass; 
    private JComboBox combolist;
    private String[] classes;

    SimObjectChooser ()
	// EFFECT: Initializes this to a SimObjectChooser with no classes.
    {
	selectedClass = null;
//	classes = null;
//	combolist = new JComboBox ();
//
//	combolist.addActionListener 
//	    (new ActionListener () {
//		    public void actionPerformed (ActionEvent e) {
//			JComboBox cb = (JComboBox) e.getSource ();
//			String classname = (String) cb.getSelectedItem ();
//			setSelectedClass (classname);
//		    }
//		}
//	     );
//
//	add (combolist);
    }

    public void addClass (String className) throws ClassNotFoundException
        // MODIFIES: this, the display panel
	// EFFECTS: If className is the name of a loadable Java class, sets the current object
        //    to the type loaded by className. If className is not available, throws ClassNotFoundException. 
    {
	Class newClass = Class.forName (className); // throws ClassNotFoundException if not found
	
	String [] oldclasses = classes;

	if (oldclasses == null) {
	    classes = new String [1];
	    selectedClass = newClass;
	} else {
	    classes = new String [oldclasses.length + 1];
	}

	if (oldclasses != null) {
	    for (int i = 0; i < oldclasses.length; i++) {
		classes[i] = oldclasses[i];
	    }
	}

	classes[classes.length - 1] = className;
	combolist.addItem (className);
    }

    public Class getSelectedClass()
	// EFFECTS: Returns the currently selected class (possibly null).
    {
	return selectedClass;
    }

    public void setSelectedClass (String classname)
	// MODIFIES: this
	// EFFECTS: Sets the currently selected class to the class associated
	//    with the button press (described by the ActionEvent).
    {
	try {
	    Class newClass = Class.forName (classname);
	    selectedClass = newClass;
	} catch (java.lang.ClassNotFoundException ex) {
	    System.err.println ("BUG: Selected class is not available: " + classname);
	    ex.printStackTrace();
	}
    }

}