// **********************************************************************
//
// <copyright>
//
// BBN Technologies
// 10 Moulton Street
// Cambridge, MA 02138
// (617) 873-8000
//
// Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/gui/menu/ControlPanelToggleMenuItem.java,v $
// $RCSfile: ControlPanelToggleMenuItem.java,v $
// $Revision: 1.3 $
// $Date: 2004/10/14 18:05:49 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.gui.menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenuItem;
import com.bbn.openmap.LightMapHandlerChild;
import com.bbn.openmap.gui.OMControlPanel;
/**
* Menu item that holds onto the OMControlPanel, and hides/displays it
* when selected.
*/
public class ControlPanelToggleMenuItem extends JMenuItem implements
ActionListener, LightMapHandlerChild {
protected OMControlPanel controlPanel = null;
protected final static String hideLabel = "Hide Control Panel";
protected final static String displayLabel = "Display Control Panel";
public ControlPanelToggleMenuItem() {
// assume that the control panel isn't there.
// Won't be visible if it isn't.
super(hideLabel);
init(null);
}
public ControlPanelToggleMenuItem(OMControlPanel cp) {
super(cp.isVisible() ? hideLabel : displayLabel);
init(cp);
}
public void init(OMControlPanel cp) {
setControlPanel(cp);
addActionListener(this);
}
public void setControlPanel(OMControlPanel cp) {
controlPanel = cp;
this.setVisible(controlPanel != null);
}
public OMControlPanel getControlPanel() {
return controlPanel;
}
public boolean forControlPanel(OMControlPanel cp) {
return (cp == controlPanel);
}
public void actionPerformed(ActionEvent ae) {
if (controlPanel != null) {
boolean selected = controlPanel.isVisible();
controlPanel.setVisible(!selected);
setText(selected ? displayLabel : hideLabel);
}
}
public void findAndInit(Object someObj) {
if (someObj instanceof OMControlPanel) {
setControlPanel((OMControlPanel) someObj);
}
}
public void findAndUndo(Object someObj) {
if (someObj instanceof OMControlPanel
&& getControlPanel() == (OMControlPanel) someObj) {
setControlPanel(null);
}
}
}