kopia lustrzana https://github.com/JOSM/MapWithAI
Switch to edit layer when adding a feature
Signed-off-by: Taylor Smock <smocktaylor@gmail.com>pull/1/head
rodzic
6bb35a5b26
commit
455edddab8
|
@ -19,6 +19,8 @@ import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
|
||||||
import org.openstreetmap.josm.data.osm.PrimitiveData;
|
import org.openstreetmap.josm.data.osm.PrimitiveData;
|
||||||
import org.openstreetmap.josm.data.osm.Way;
|
import org.openstreetmap.josm.data.osm.Way;
|
||||||
import org.openstreetmap.josm.data.osm.visitor.MergeSourceBuildingVisitor;
|
import org.openstreetmap.josm.data.osm.visitor.MergeSourceBuildingVisitor;
|
||||||
|
import org.openstreetmap.josm.gui.MainApplication;
|
||||||
|
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
||||||
import org.openstreetmap.josm.plugins.rapid.RapiDPlugin;
|
import org.openstreetmap.josm.plugins.rapid.RapiDPlugin;
|
||||||
import org.openstreetmap.josm.tools.Logging;
|
import org.openstreetmap.josm.tools.Logging;
|
||||||
import org.openstreetmap.josm.tools.Utils;
|
import org.openstreetmap.josm.tools.Utils;
|
||||||
|
@ -30,6 +32,17 @@ public class RapiDAddCommand extends Command {
|
||||||
AddPrimitivesCommand addPrimitivesCommand;
|
AddPrimitivesCommand addPrimitivesCommand;
|
||||||
Collection<OsmPrimitive> modifiedPrimitives;
|
Collection<OsmPrimitive> modifiedPrimitives;
|
||||||
|
|
||||||
|
OsmDataLayer editLayer = null;
|
||||||
|
|
||||||
|
public RapiDAddCommand(RapiDLayer rapidLayer, OsmDataLayer editLayer, Collection<OsmPrimitive> selection) {
|
||||||
|
super(rapidLayer.getDataSet());
|
||||||
|
this.rapid = rapidLayer.getDataSet();
|
||||||
|
this.editable = editLayer.getDataSet();
|
||||||
|
this.primitives = selection;
|
||||||
|
this.editLayer = editLayer;
|
||||||
|
modifiedPrimitives = null;
|
||||||
|
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Add primitives from RapiD to the OSM data layer
|
* Add primitives from RapiD to the OSM data layer
|
||||||
*
|
*
|
||||||
|
@ -61,6 +74,11 @@ public class RapiDAddCommand extends Command {
|
||||||
RapiDDataUtils.removePrimitivesFromDataSet(primitives);
|
RapiDDataUtils.removePrimitivesFromDataSet(primitives);
|
||||||
rapid.lock();
|
rapid.lock();
|
||||||
}
|
}
|
||||||
|
if (editLayer != null) {
|
||||||
|
MainApplication.getLayerManager().setActiveLayer(editLayer);
|
||||||
|
editable.setSelected(
|
||||||
|
editable.getSelected().stream().filter(OsmPrimitive::isTagged).collect(Collectors.toSet()));
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.util.List;
|
||||||
|
|
||||||
import org.openstreetmap.josm.actions.JosmAction;
|
import org.openstreetmap.josm.actions.JosmAction;
|
||||||
import org.openstreetmap.josm.data.UndoRedoHandler;
|
import org.openstreetmap.josm.data.UndoRedoHandler;
|
||||||
import org.openstreetmap.josm.data.osm.DataSet;
|
|
||||||
import org.openstreetmap.josm.data.osm.OsmPrimitive;
|
import org.openstreetmap.josm.data.osm.OsmPrimitive;
|
||||||
import org.openstreetmap.josm.gui.MainApplication;
|
import org.openstreetmap.josm.gui.MainApplication;
|
||||||
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
||||||
|
@ -27,20 +26,19 @@ public class RapiDMoveAction extends JosmAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent event) {
|
public void actionPerformed(ActionEvent event) {
|
||||||
for (RapiDLayer layer : MainApplication.getLayerManager().getLayersOfType(RapiDLayer.class)) {
|
for (RapiDLayer rapid : MainApplication.getLayerManager().getLayersOfType(RapiDLayer.class)) {
|
||||||
List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
|
List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
|
||||||
DataSet editData = null;
|
OsmDataLayer editLayer = null;
|
||||||
DataSet rapid = layer.getDataSet();
|
Collection<OsmPrimitive> selected = rapid.getDataSet().getSelected();
|
||||||
Collection<OsmPrimitive> selected = rapid.getSelected();
|
|
||||||
for (OsmDataLayer osmLayer : osmLayers) {
|
for (OsmDataLayer osmLayer : osmLayers) {
|
||||||
if (!osmLayer.isLocked() && osmLayer.isVisible() && osmLayer.isUploadable()
|
if (!osmLayer.isLocked() && osmLayer.isVisible() && osmLayer.isUploadable()
|
||||||
&& osmLayer.getClass().equals(OsmDataLayer.class)) {
|
&& osmLayer.getClass().equals(OsmDataLayer.class)) {
|
||||||
editData = osmLayer.getDataSet();
|
editLayer = osmLayer;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (editData != null) {
|
if (editLayer != null) {
|
||||||
RapiDAddCommand command = new RapiDAddCommand(rapid, editData, selected);
|
RapiDAddCommand command = new RapiDAddCommand(rapid, editLayer, selected);
|
||||||
UndoRedoHandler.getInstance().add(command);
|
UndoRedoHandler.getInstance().add(command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue