Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 15953)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 15958)
@@ -129,5 +129,4 @@
 import org.openstreetmap.josm.gui.mappaint.MapPaintMenu;
 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
-import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSearchPrimitiveDialog;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -839,10 +838,4 @@
         ExpertToggleAction.getInstance().addButtonModel(expertItem.getModel());
 
-        add(presetsMenu, presetSearchAction);
-        add(presetsMenu, presetSearchPrimitiveAction);
-        add(presetsMenu, PreferencesAction.forPreferenceSubTab(tr("Preset preferences"),
-                tr("Click to open the tagging presets tab in the preferences"), TaggingPresetPreference.class));
-        presetsMenu.addSeparator();
-
         add(imageryMenu, reorderImageryLayersAction);
         add(imageryMenu, PreferencesAction.forPreferenceTab(tr("Imagery preferences..."),
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java	(revision 15953)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java	(revision 15958)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.tagging.presets;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -14,8 +16,11 @@
 import javax.swing.JSeparator;
 
+import org.openstreetmap.josm.actions.PreferencesAction;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
+import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
 import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
 import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
@@ -61,4 +66,14 @@
      */
     public static void initialize() {
+        MainMenu mainMenu = MainApplication.getMenu();
+        JMenu presetsMenu = mainMenu.presetsMenu;
+        if (presetsMenu.getComponentCount() == 0) {
+            MainMenu.add(presetsMenu, mainMenu.presetSearchAction);
+            MainMenu.add(presetsMenu, mainMenu.presetSearchPrimitiveAction);
+            MainMenu.add(presetsMenu, PreferencesAction.forPreferenceSubTab(tr("Preset preferences"),
+                    tr("Click to open the tagging presets tab in the preferences"), TaggingPresetPreference.class));
+            presetsMenu.addSeparator();
+        }
+
         readFromPreferences();
         for (TaggingPreset tp: taggingPresets) {
@@ -68,9 +83,9 @@
         }
         if (taggingPresets.isEmpty()) {
-            MainApplication.getMenu().presetsMenu.setVisible(false);
+            presetsMenu.setVisible(false);
         } else {
             Map<TaggingPresetMenu, JMenu> submenus = new HashMap<>();
             for (final TaggingPreset p : taggingPresets) {
-                JMenu m = p.group != null ? submenus.get(p.group) : MainApplication.getMenu().presetsMenu;
+                JMenu m = p.group != null ? submenus.get(p.group) : presetsMenu;
                 if (m == null && p.group != null) {
                     Logging.error("No tagging preset submenu for " + p.group);
@@ -98,5 +113,5 @@
         }
         if (Config.getPref().getBoolean("taggingpreset.sortmenu")) {
-            TaggingPresetMenu.sortMenu(MainApplication.getMenu().presetsMenu);
+            TaggingPresetMenu.sortMenu(presetsMenu);
         }
         listeners.forEach(TaggingPresetListener::taggingPresetsModified);
