package com.limegroup.gnutella.gui.menu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;

import com.limegroup.gnutella.gui.GUIMediator;
import com.limegroup.gnutella.util.CommonUtils;

/**
 * Contains all of the menu items for the navigation menu.
 */
//2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678|
final class NavMenu extends AbstractMenu {
    /**
     * The ActionListener for navigating to a window.
     */
    private static final ActionListener NAV_LISTENER =
        new NavigationListener();
        
    /**
     * The property that indicates which index to surf to.
     */
    private static final String NAV_PROPERTY = "NAV_INDEX";

	/**
	 * Creates a new <tt>NavMenu</tt>, using the <tt>key</tt> 
	 * argument for setting the locale-specific title and 
	 * accessibility text.
	 *
	 * @param key the key for locale-specific string resources unique
	 *            to the menu
	 */
	NavMenu(final String key) {
		super(key);
		JMenuItem item;

		item = addMenuItem("NAV_SEARCH", NAV_LISTENER);
        item.putClientProperty(NAV_PROPERTY, 
            new Integer(GUIMediator.SEARCH_INDEX));
            
		item = addMenuItem("NAV_MONITOR", NAV_LISTENER);
		item.putClientProperty(NAV_PROPERTY,
		    new Integer(GUIMediator.MONITOR_INDEX));
		    
		item = addMenuItem("NAV_CONN", NAV_LISTENER);
		item.putClientProperty(NAV_PROPERTY,
		    new Integer(GUIMediator.CONNECTIONS_INDEX));
		    
		item = addMenuItem("NAV_LIB", NAV_LISTENER);
		item.putClientProperty(NAV_PROPERTY,
		    new Integer(GUIMediator.LIBRARY_INDEX));
        
        if (CommonUtils.isLog4JAvailable()) {
            item = addMenuItem("NAV_CONSOLE", NAV_LISTENER);
            item.putClientProperty(NAV_PROPERTY,
                new Integer(GUIMediator.CONSOLE_INDEX));
        }
	}

	
	/**
	 * Sets the enabled/disabled state of the navigation menu item
	 * at the specified index.
	 *
	 * @param TAB_INDEX the index of the item to set
	 * @param ENABLED the enabled or disabled state of the item
	 */
	public void setNavMenuItemEnabled(final int TAB_INDEX, 
									  final boolean ENABLED) {
		MENU.getItem(TAB_INDEX).setEnabled(ENABLED);
	}
	
	/**
	 * Listener for navigating to tabs from the menu.
	 */
	private static class NavigationListener implements ActionListener {
	    public void actionPerformed(ActionEvent e) {
            JMenuItem item = (JMenuItem)e.getSource();
            int idx =
                ((Integer)item.getClientProperty(NAV_PROPERTY)).intValue();
            GUIMediator.instance().setWindow(idx);
        }
    }
}


















