/*
* @(#)WindowsMenuBarUI.java 1.14 03/12/19
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.sun.java.swing.plaf.windows;
import javax.swing.plaf.basic.*;
import javax.swing.*;
import javax.swing.plaf.ActionMapUIResource;
import javax.swing.plaf.ComponentUI;
import java.awt.event.ActionEvent;
/**
* Windows rendition of the component.
* <p>
* <strong>Warning:</strong>
* Serialized objects of this class will not be compatible with
* future Swing releases. The current serialization support is appropriate
* for short term storage or RMI between applications running the same
* version of Swing. A future release of Swing will provide support for
* long term persistence.
*/
public class WindowsMenuBarUI extends BasicMenuBarUI
{
public static ComponentUI createUI(JComponent x) {
return new WindowsMenuBarUI();
}
protected void installKeyboardActions() {
super.installKeyboardActions();
ActionMap map = SwingUtilities.getUIActionMap(menuBar);
if (map == null) {
map = new ActionMapUIResource();
SwingUtilities.replaceUIActionMap(menuBar, map);
}
map.put("takeFocus", new TakeFocus());
}
/**
* Action that activates the menu (e.g. when F10 is pressed).
* Unlike BasicMenuBarUI.TakeFocus, this Action will not show menu popup.
*/
private static class TakeFocus extends AbstractAction {
public void actionPerformed(ActionEvent e) {
JMenuBar menuBar = (JMenuBar)e.getSource();
JMenu menu = menuBar.getMenu(0);
if (menu != null) {
MenuSelectionManager msm =
MenuSelectionManager.defaultManager();
MenuElement path[] = new MenuElement[2];
path[0] = (MenuElement)menuBar;
path[1] = (MenuElement)menu;
msm.setSelectedPath(path);
// show mnemonics
WindowsLookAndFeel.setMnemonicHidden(false);
WindowsLookAndFeel.repaintRootPane(menuBar);
}
}
}
}
|