1. /*
  2. * @(#)MotifMenuItemUI.java 1.48 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.java.swing.plaf.motif;
  8. import javax.swing.*;
  9. import javax.swing.event.*;
  10. import java.awt.*;
  11. import java.awt.event.*;
  12. import javax.swing.plaf.*;
  13. import javax.swing.plaf.basic.BasicMenuItemUI;
  14. /**
  15. * MotifMenuItem implementation
  16. * <p>
  17. *
  18. * @author Rich Schiavi
  19. * @author Georges Saab
  20. */
  21. public class MotifMenuItemUI extends BasicMenuItemUI
  22. {
  23. protected ChangeListener changeListener;
  24. public static ComponentUI createUI(JComponent c)
  25. {
  26. return new MotifMenuItemUI();
  27. }
  28. protected void installListeners() {
  29. super.installListeners();
  30. changeListener = createChangeListener(menuItem);
  31. menuItem.addChangeListener(changeListener);
  32. }
  33. protected void uninstallListeners() {
  34. super.uninstallListeners();
  35. menuItem.removeChangeListener(changeListener);
  36. }
  37. protected ChangeListener createChangeListener(JComponent c) {
  38. return new ChangeHandler();
  39. }
  40. protected MouseInputListener createMouseInputListener(JComponent c) {
  41. return new MouseInputHandler();
  42. }
  43. public void paint(Graphics g, JComponent c) {
  44. MotifGraphicsUtils.paintMenuItem(g, c, checkIcon,arrowIcon,
  45. selectionBackground, selectionForeground,
  46. defaultTextIconGap);
  47. }
  48. protected class ChangeHandler implements ChangeListener {
  49. public void stateChanged(ChangeEvent e) {
  50. JMenuItem c = (JMenuItem)e.getSource();
  51. if (c.isArmed() || c.isSelected()) {
  52. c.setBorderPainted(true);
  53. } else {
  54. c.setBorderPainted(false);
  55. }
  56. }
  57. }
  58. protected class MouseInputHandler implements MouseInputListener {
  59. public void mouseClicked(MouseEvent e) {}
  60. public void mousePressed(MouseEvent e) {
  61. MenuSelectionManager manager = MenuSelectionManager.defaultManager();
  62. manager.setSelectedPath(getPath());
  63. }
  64. public void mouseReleased(MouseEvent e) {
  65. MenuSelectionManager manager =
  66. MenuSelectionManager.defaultManager();
  67. JMenuItem menuItem = (JMenuItem)e.getComponent();
  68. Point p = e.getPoint();
  69. if(p.x >= 0 && p.x < menuItem.getWidth() &&
  70. p.y >= 0 && p.y < menuItem.getHeight()) {
  71. manager.clearSelectedPath();
  72. menuItem.doClick(0);
  73. } else {
  74. manager.processMouseEvent(e);
  75. }
  76. }
  77. public void mouseEntered(MouseEvent e) {}
  78. public void mouseExited(MouseEvent e) {}
  79. public void mouseDragged(MouseEvent e) {
  80. MenuSelectionManager.defaultManager().processMouseEvent(e);
  81. }
  82. public void mouseMoved(MouseEvent e) { }
  83. }
  84. }