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