001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.actions;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.event.ActionEvent;
007import java.awt.event.KeyEvent;
008
009import org.openstreetmap.josm.gui.MainApplication;
010import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSearchDialog;
011import org.openstreetmap.josm.tools.Shortcut;
012
013/**
014 * The tagging presets search action (F3).
015 * @since 3388
016 * @since 12834 (moved from {@code gui.tagging.presets} package)
017 */
018public class TaggingPresetSearchAction extends JosmAction {
019
020    /**
021     * Constructs a new {@code TaggingPresetSearchAction}.
022     */
023    public TaggingPresetSearchAction() {
024        super(tr("Search preset..."), "dialogs/search", tr("Show preset search dialog"),
025                Shortcut.registerShortcut("preset:search", tr("Presets: {0}", tr("Search preset...")), KeyEvent.VK_F3, Shortcut.DIRECT), false);
026        setToolbarId("presets/search");
027        MainApplication.getToolbar().register(this);
028    }
029
030    @Override
031    public void actionPerformed(ActionEvent e) {
032        if (hasActiveDataLayer()) {
033            TaggingPresetSearchDialog.getInstance().showDialog();
034        }
035    }
036
037    @Override
038    protected boolean listenToSelectionChange() {
039        return false;
040    }
041
042    @Override
043    protected void updateEnabledState() {
044        setEnabled(hasActiveDataLayer());
045    }
046
047    private boolean hasActiveDataLayer() {
048        return getLayerManager().getActiveData() != null;
049    }
050}