package org.openstreetmap.josm.plugins.housenumbertool; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.Collection; import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.data.SelectionChangedListener; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.tools.Shortcut; public class LaunchAction extends JosmAction implements SelectionChangedListener { private OsmPrimitive selection = null; private String pluginDir; public LaunchAction(String pluginDir) { super("HouseNumberTaggingTool", "home-icon32", "Launches the HouseNumberTaggingTool dialog", Shortcut.registerShortcut("edit:housenumbertaggingtool", "HouseNumberTaggingTool", KeyEvent.VK_K, Shortcut.DIRECT), true); this.pluginDir = pluginDir; DataSet.addSelectionListener(this); setEnabled(false); } /** * launch the editor */ protected void launchEditor() { if (!isEnabled()) { return; } TagDialog dialog = new TagDialog(pluginDir, selection); dialog.showDialog(); } @Override public void actionPerformed(ActionEvent e) { launchEditor(); } @Override public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { if (newSelection != null && newSelection.size() == 1) { setEnabled(true); selection = newSelection.iterator().next(); } else { setEnabled(false); selection = null; } } }