diff --git a/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDMoveAction.java b/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDMoveAction.java index 330f254..d35fa99 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDMoveAction.java +++ b/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDMoveAction.java @@ -11,6 +11,7 @@ import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.data.UndoRedoHandler; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.gui.MainApplication; +import org.openstreetmap.josm.gui.layer.Layer; import org.openstreetmap.josm.gui.layer.OsmDataLayer; import org.openstreetmap.josm.plugins.rapid.RapiDPlugin; import org.openstreetmap.josm.tools.Shortcut; @@ -43,4 +44,28 @@ public class RapiDMoveAction extends JosmAction { } } } + + @Override + protected void updateEnabledState() { + setEnabled(checkIfActionEnabled()); + } + + @Override + protected void updateEnabledState(Collection selection) { + if (selection == null || selection.isEmpty()) { + setEnabled(false); + } else { + setEnabled(checkIfActionEnabled()); + } + } + + private boolean checkIfActionEnabled() { + Layer active = getLayerManager().getActiveLayer(); + if (active instanceof RapiDLayer) { + RapiDLayer rapid = (RapiDLayer) active; + Collection selection = rapid.getDataSet().getAllSelected(); + return (selection != null && !selection.isEmpty()); + } else + return false; + } }