Changeset 15582 in josm


Ignore:
Timestamp:
2019-12-11T01:40:30+01:00 (4 years ago)
Author:
Don-vip
Message:

fix #18381 - Don't require a restart when a Tagging Preset is added/removed (patch by taylor.smock)

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java

    r14634 r15582  
    3232import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
    3333import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
     34import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
    3435import org.openstreetmap.josm.spi.preferences.Config;
    3536import org.openstreetmap.josm.tools.GBC;
     
    247248    @Override
    248249    public boolean ok() {
    249         boolean restart = Config.getPref().putBoolean("taggingpreset.sortmenu", sortMenu.getSelectedObjects() != null);
    250         restart |= sources.finish();
    251 
    252         return restart;
     250        if (sources.finish()
     251                || Config.getPref().putBoolean("taggingpreset.sortmenu", sortMenu.getSelectedObjects() != null)) {
     252            TaggingPresets.destroy();
     253            TaggingPresets.initialize();
     254        }
     255
     256        return false;
    253257    }
    254258
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java

    r13623 r15582  
    1717import org.openstreetmap.josm.gui.MainApplication;
    1818import org.openstreetmap.josm.gui.MenuScroller;
     19import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
    1920import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
    2021import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
     
    99100            TaggingPresetMenu.sortMenu(MainApplication.getMenu().presetsMenu);
    100101        }
     102        listeners.forEach(TaggingPresetListener::taggingPresetsModified);
     103    }
     104
     105    // Cannot implement Destroyable since this is static
     106    /**
     107     * Call to deconstruct the TaggingPresets menus and other information so that it
     108     * can be rebuilt later.
     109     *
     110     * @since 15582
     111     */
     112    public static void destroy() {
     113        ToolbarPreferences toolBar = MainApplication.getToolbar();
     114        taggingPresets.forEach(toolBar::unregister);
     115        taggingPresets.clear();
     116        PRESET_TAG_CACHE.clear();
     117        PRESET_ROLE_CACHE.clear();
     118        MainApplication.getMenu().presetsMenu.removeAll();
     119        listeners.forEach(TaggingPresetListener::taggingPresetsModified);
    101120    }
    102121
     
    202221    public static void addTaggingPresets(Collection<TaggingPreset> presets) {
    203222        if (presets != null && taggingPresets.addAll(presets)) {
    204             for (TaggingPresetListener listener : listeners) {
    205                 listener.taggingPresetsModified();
    206             }
     223            listeners.forEach(TaggingPresetListener::taggingPresetsModified);
    207224        }
    208225    }
Note: See TracChangeset for help on using the changeset viewer.