import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;

public class SelfModifyingMenu extends JMenu {
    private Vector menuItems = new Vector();
    private Listener menuItemListener = new Listener();
    private JMenuItem plotItem, toggleItem, enablerItem,
		menuItem, removeItem;
    //private JMenu plotItem;

    private Test parent;
    private static boolean DEBUG = true;

    public SelfModifyingMenu(Vector list, String title) {
	super(title);
	parent = (Test) list.elementAt(0);
	for (int i=1; i<list.size(); i++) {
	    menuItem = new JMenuItem(list.elementAt(i).toString());
	    menuItem.addActionListener(menuItemListener);
	    add(menuItem);
	    menuItem.setEnabled(false);
	    menuItems.addElement(menuItem);
	}
	//addSeparator();
    }

    public void update(String action) {
	if (DEBUG) {
	    System.err.println("updating the menu "+action);
	}
	if (action=="selected") {
	    for (int i=0; i<menuItems.size(); i++) {
		menuItem = (JMenuItem)menuItems.elementAt(i);
		menuItem.setEnabled(true);
	    }
	}
	else if (action=="deselected") {
	    for (int i=0; i<menuItems.size(); i++) {
		menuItem = (JMenuItem)menuItems.elementAt(i);
		menuItem.setEnabled(false);
	    }
	}
    }

    public void toggleItem() {
	if (toggleItem.isEnabled()) toggleItem.setEnabled(false);
	else 			    toggleItem.setEnabled(true);
    }
 

    class Listener implements ActionListener {
	public void actionPerformed(ActionEvent event) {
	    JMenuItem item = (JMenuItem)event.getSource();
	    // Which item to gray out - go thru vector list
	    if (DEBUG) {
		System.err.println("ActionListener!!! item="+item.getText());
	    }
	    parent.menuActionItem(item.getText());
	    //toggleItem();

	}
    }
}




