Index: javax/swing/JMenuBar.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JMenuBar.java,v retrieving revision 1.15 diff -u -r1.15 JMenuBar.java --- javax/swing/JMenuBar.java 21 Jul 2005 14:59:31 -0000 1.15 +++ javax/swing/JMenuBar.java 6 Sep 2005 18:40:18 -0000 @@ -253,7 +253,7 @@ * This method returns a name to identify which look and feel class will be * the UI delegate for the menu bar. * - * @return The Look and Feel classID. "MenuItemUI" + * @return The Look and Feel classID. "MenuBarUI" */ public String getUIClassID() { Index: javax/swing/plaf/basic/BasicMenuBarUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java,v retrieving revision 1.10 diff -u -r1.10 BasicMenuBarUI.java --- javax/swing/plaf/basic/BasicMenuBarUI.java 8 Jul 2005 15:24:08 -0000 1.10 +++ javax/swing/plaf/basic/BasicMenuBarUI.java 6 Sep 2005 18:40:18 -0000 @@ -38,19 +38,25 @@ package javax.swing.plaf.basic; +import java.awt.Component; +import java.awt.Container; +import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.ContainerEvent; import java.awt.event.ContainerListener; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JMenuBar; +import javax.swing.MenuElement; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.swing.event.MouseInputListener; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.MenuBarUI; @@ -63,6 +69,9 @@ /*ContainerListener that listens to the ContainerEvents fired from menu bar*/ protected ContainerListener containerListener; /*Property change listeners that listener to PropertyChangeEvent from menu bar*/ protected PropertyChangeListener propertyChangeListener; + + /* MouseListener that listens to the mouseEvents fired from menu bar*/ + private MouseInputListener mouseListener; @@ -78,6 +87,7 @@ changeListener = createChangeListener(); containerListener = createContainerListener(); propertyChangeListener = new PropertyChangeHandler(); + mouseListener = new MouseInputHandler(); } /** @@ -183,6 +193,7 @@ { menuBar.addContainerListener(containerListener); menuBar.addPropertyChangeListener(propertyChangeListener); + menuBar.addMouseListener(mouseListener); } /** @@ -229,6 +240,7 @@ { menuBar.removeContainerListener(containerListener); menuBar.removePropertyChangeListener(propertyChangeListener); + menuBar.removeMouseListener(mouseListener); } /** @@ -299,6 +311,76 @@ menuBar.repaint(); if (e.getPropertyName().equals("margin")) menuBar.repaint(); + } + } + + private class MouseInputHandler implements MouseInputListener + { + /** + * Handles mouse clicked event + * + * @param e Mouse event + */ + public void mouseClicked(MouseEvent e) + { + MenuElement[] me = menuBar.getSubElements(); + + for (int i = 0; i < me.length; i++) + menuBar.getMenu(i).setSelected(false); + } + + /** + * Handles mouse pressed event + * + * @param e Mouse event + */ + public void mousePressed(MouseEvent e) + { + } + + /** + * Handles mouse released event + * + * @param e Mouse event + */ + public void mouseReleased(MouseEvent e) + { + } + + /** + * Handles mouse exited event + * + * @param e Mouse event + */ + public void mouseExited(MouseEvent e) + { + } + + /** + * Handles mouse dragged event + * + * @param e Mouse event + */ + public void mouseDragged(MouseEvent e) + { + } + + /** + * Handles mouse moved event + * + * @param e Mouse event + */ + public void mouseMoved(MouseEvent e) + { + } + + /** + * Handles mouse entered event + * + * @param e Mouse event + */ + public void mouseEntered(MouseEvent e) + { } } }