package com.limegroup.gnutella.gui.menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import com.limegroup.gnutella.gui.GUIMediator;
import com.limegroup.gnutella.settings.ApplicationSettings;
import com.limegroup.gnutella.util.CommonUtils;
/**
* The menu item that actually displays the options for dynamically
* showing or hiding tabs.
*/
final class ShowHideMenu extends AbstractMenu {
/**
* Constructs all of the elements of the <tt>ViewMenu</tt>, in particular
* the check box menu items and listeners for the various tabs displayed
* in the main window.
*
* @param key the key allowing the <tt>AbstractMenu</tt> superclass to
* access the appropriate locale-specific string resources
*/
ShowHideMenu(final String key) {
super(key);
addToggleMenuItem("VIEW_MONITOR",
new ViewListener(GUIMediator.MONITOR_INDEX),
ApplicationSettings.MONITOR_VIEW_ENABLED.getValue());
addToggleMenuItem("VIEW_CONNECTIONS",
new ViewListener(GUIMediator.CONNECTIONS_INDEX),
ApplicationSettings.CONNECTION_VIEW_ENABLED.getValue());
addToggleMenuItem("VIEW_LIBRARY",
new ViewListener(GUIMediator.LIBRARY_INDEX),
ApplicationSettings.LIBRARY_VIEW_ENABLED.getValue());
if (CommonUtils.isLog4JAvailable()) {
addToggleMenuItem("VIEW_CONSOLE",
new ViewListener(GUIMediator.CONSOLE_INDEX),
ApplicationSettings.CONSOLE_VIEW_ENABLED.getValue());
}
MENU.add(new SearchMenu("VIEW_SEARCH").getMenu());
}
/**
* Listener for the checking/unchecking of the menu buttons, making
* the associated tabs visible or invisible.
*/
private static class ViewListener implements ActionListener {
/**
* The fixed index for the associated tab (see GUIMediator tab
* indeces).
*/
private final int INDEX;
/**
* Constructs a new <tt>ViewListener</tt> with the specified fixed
* index.
*
* @param INDEX the fixed index for the associated tab
*/
private ViewListener(final int INDEX) {
this.INDEX = INDEX;
}
public void actionPerformed(ActionEvent ae) {
AbstractButton button = (AbstractButton)ae.getSource();
GUIMediator.instance().setTabVisible(INDEX, button.isSelected());
GUIMediator.instance().setWindow(INDEX);
}
}
}