Index: /trunk/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java	(revision 15329)
+++ /trunk/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java	(revision 15330)
@@ -14,31 +14,40 @@
 public class StayOpenCheckBoxMenuItem extends JCheckBoxMenuItem {
 
-  private static volatile MenuElement[] path;
+    private static volatile MenuElement[] path;
 
-  {
-    getModel().addChangeListener(e -> {
-        if (getModel().isArmed() && isShowing()) {
-          path = MenuSelectionManager.defaultManager().getSelectedPath();
-        }
-      });
-  }
+    {
+        getModel().addChangeListener(e -> {
+            if (getModel().isArmed() && isShowing()) {
+                path = MenuSelectionManager.defaultManager().getSelectedPath();
+            }
+        });
+    }
 
-  /**
-   * Constructs a new {@code StayOpenCheckBoxMenuItem} whose properties are taken from the Action supplied.
-   * @param a action
-   */
-  public StayOpenCheckBoxMenuItem(Action a) {
-    super(a);
-  }
+    /**
+     * Constructs a new initially unselected {@code StayOpenCheckBoxMenuItem} with no set text or icon.
+     * @see JCheckBoxMenuItem#JCheckBoxMenuItem()
+     */
+    public StayOpenCheckBoxMenuItem() {
+        super();
+    }
 
-  /**
-   * Overridden to reopen the menu.
-   *
-   * @param pressTime the time to "hold down" the button, in milliseconds
-   */
-  @Override
-  public void doClick(int pressTime) {
-    super.doClick(pressTime);
-    MenuSelectionManager.defaultManager().setSelectedPath(path);
-  }
+    /**
+     * Constructs a new {@code StayOpenCheckBoxMenuItem} whose properties are taken from the Action supplied.
+     * @param a action
+     * @see JCheckBoxMenuItem#JCheckBoxMenuItem(Action)
+     */
+    public StayOpenCheckBoxMenuItem(Action a) {
+        super(a);
+    }
+
+    /**
+     * Overridden to reopen the menu.
+     *
+     * @param pressTime the time to "hold down" the button, in milliseconds
+     */
+    @Override
+    public void doClick(int pressTime) {
+        super.doClick(pressTime);
+        MenuSelectionManager.defaultManager().setSelectedPath(path);
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/util/StayOpenMenuItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/StayOpenMenuItem.java	(revision 15330)
+++ /trunk/src/org/openstreetmap/josm/gui/util/StayOpenMenuItem.java	(revision 15330)
@@ -0,0 +1,52 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.util;
+
+import javax.swing.Action;
+import javax.swing.JMenuItem;
+import javax.swing.MenuElement;
+import javax.swing.MenuSelectionManager;
+
+/**
+ * An extension of JMenuItem that doesn't close the menu when selected.
+ *
+ * @author Darryl Burke https://tips4java.wordpress.com/2010/09/12/keeping-menus-open/
+ */
+public class StayOpenMenuItem extends JMenuItem {
+
+    private static volatile MenuElement[] path;
+
+    {
+        getModel().addChangeListener(e -> {
+            if (getModel().isArmed() && isShowing()) {
+                path = MenuSelectionManager.defaultManager().getSelectedPath();
+            }
+        });
+    }
+
+    /**
+     * Constructs a new {@code StayOpenMenuItem} with no set text or icon.
+     * @see JMenuItem#JMenuItem()
+     */
+    public StayOpenMenuItem() {
+        super();
+    }
+
+    /**
+     * Constructs a new {@code StayOpenMenuItem} whose properties are taken from the Action supplied.
+     * @see JMenuItem#JMenuItem(javax.swing.Action)
+     */
+    public StayOpenMenuItem(Action a) {
+        super(a);
+    }
+
+    /**
+     * Overridden to reopen the menu.
+     *
+     * @param pressTime the time to "hold down" the button, in milliseconds
+     */
+    @Override
+    public void doClick(int pressTime) {
+        super.doClick(pressTime);
+        MenuSelectionManager.defaultManager().setSelectedPath(path);
+    }
+}
Index: /trunk/src/org/openstreetmap/josm/gui/util/StayOpenRadioButtonMenuItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/StayOpenRadioButtonMenuItem.java	(revision 15330)
+++ /trunk/src/org/openstreetmap/josm/gui/util/StayOpenRadioButtonMenuItem.java	(revision 15330)
@@ -0,0 +1,52 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.util;
+
+import javax.swing.Action;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.MenuElement;
+import javax.swing.MenuSelectionManager;
+
+/**
+ * An extension of JRadioButtonMenuItem that doesn't close the menu when selected.
+ *
+ * @author Darryl Burke https://tips4java.wordpress.com/2010/09/12/keeping-menus-open/
+ */
+public class StayOpenRadioButtonMenuItem extends JRadioButtonMenuItem {
+
+    private static volatile MenuElement[] path;
+
+    {
+        getModel().addChangeListener(e -> {
+            if (getModel().isArmed() && isShowing()) {
+                path = MenuSelectionManager.defaultManager().getSelectedPath();
+            }
+        });
+    }
+
+    /**
+     * Constructs a new {@code StayOpenRadioButtonMenuItem} with no set text or icon.
+     * @see JRadioButtonMenuItem#JRadioButtonMenuItem()
+     */
+    public StayOpenRadioButtonMenuItem() {
+        super();
+    }
+
+    /**
+     * Constructs a new {@code StayOpenRadioButtonMenuItem} whose properties are taken from the Action supplied.
+     * @see JRadioButtonMenuItem#JRadioButtonMenuItem(Action)
+     */
+    public StayOpenRadioButtonMenuItem(Action a) {
+        super(a);
+    }
+
+    /**
+     * Overridden to reopen the menu.
+     *
+     * @param pressTime the time to "hold down" the button, in milliseconds
+     */
+    @Override
+    public void doClick(int pressTime) {
+        super.doClick(pressTime);
+        MenuSelectionManager.defaultManager().setSelectedPath(path);
+    }
+}
