source: josm/trunk/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java@ 5094

Last change on this file since 5094 was 5094, checked in by simon04, 12 years ago

see #6895 - add license comment to recently added files

File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.util;
3
4import javax.swing.Action;
5import javax.swing.Icon;
6import javax.swing.JCheckBoxMenuItem;
7import javax.swing.MenuElement;
8import javax.swing.MenuSelectionManager;
9import javax.swing.event.ChangeEvent;
10import javax.swing.event.ChangeListener;
11
12
13/**
14 * An extension of JCheckBoxMenuItem that doesn't close the menu when selected.
15 *
16 * @author Darryl http://tips4java.wordpress.com/2010/09/12/keeping-menus-open/
17 */
18public class StayOpenCheckBoxMenuItem extends JCheckBoxMenuItem {
19
20 private static MenuElement[] path;
21
22 {
23 getModel().addChangeListener(new ChangeListener() {
24
25 @Override
26 public void stateChanged(ChangeEvent e) {
27 if (getModel().isArmed() && isShowing()) {
28 path = MenuSelectionManager.defaultManager().getSelectedPath();
29 }
30 }
31 });
32 }
33
34 /**
35 * @see JCheckBoxMenuItem#JCheckBoxMenuItem()
36 */
37 public StayOpenCheckBoxMenuItem() {
38 super();
39 }
40
41 /**
42 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(Action)
43 */
44 public StayOpenCheckBoxMenuItem(Action a) {
45 super(a);
46 }
47
48 /**
49 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(Icon)
50 */
51 public StayOpenCheckBoxMenuItem(Icon icon) {
52 super(icon);
53 }
54
55 /**
56 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(String)
57 */
58 public StayOpenCheckBoxMenuItem(String text) {
59 super(text);
60 }
61
62 /**
63 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(String, boolean)
64 */
65 public StayOpenCheckBoxMenuItem(String text, boolean selected) {
66 super(text, selected);
67 }
68
69 /**
70 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(String, Icon)
71 */
72 public StayOpenCheckBoxMenuItem(String text, Icon icon) {
73 super(text, icon);
74 }
75
76 /**
77 * @see JCheckBoxMenuItem#JCheckBoxMenuItem(String, Icon, boolean)
78 */
79 public StayOpenCheckBoxMenuItem(String text, Icon icon, boolean selected) {
80 super(text, icon, selected);
81 }
82
83 /**
84 * Overridden to reopen the menu.
85 *
86 * @param pressTime the time to "hold down" the button, in milliseconds
87 */
88 @Override
89 public void doClick(int pressTime) {
90 super.doClick(pressTime);
91 MenuSelectionManager.defaultManager().setSelectedPath(path);
92 }
93}
Note: See TracBrowser for help on using the repository browser.