Handle cases where nodes are selected

Signed-off-by: Taylor Smock <taylor.smock@kaart.com>
pull/1/head v0.1.4
Taylor Smock 2019-10-16 11:14:04 -06:00
rodzic 8c321c3b03
commit 44de005f16
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 625F6A74A3E4311A
2 zmienionych plików z 9 dodań i 9 usunięć

Wyświetl plik

@ -83,13 +83,6 @@ build:
dependencies: dependencies:
- assemble - assemble
test:
stage: test
script:
- ./gradlew test --stacktrace
dependencies:
- assemble
compile against min JOSM: compile against min JOSM:
stage: test stage: test
script: script:

Wyświetl plik

@ -10,6 +10,8 @@ import java.util.stream.Collectors;
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.Node;
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.Layer; import org.openstreetmap.josm.gui.layer.Layer;
@ -34,14 +36,19 @@ public class MapWithAIMoveAction extends JosmAction {
@Override @Override
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
for (final MapWithAILayer mapWithAI : MainApplication.getLayerManager().getLayersOfType(MapWithAILayer.class)) { for (final MapWithAILayer mapWithAI : MainApplication.getLayerManager().getLayersOfType(MapWithAILayer.class)) {
DataSet ds = mapWithAI.getDataSet();
final List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class); final List<OsmDataLayer> osmLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
OsmDataLayer editLayer = null; OsmDataLayer editLayer = null;
final int maxAddition = MapWithAIDataUtils.getMaximumAddition(); final int maxAddition = MapWithAIDataUtils.getMaximumAddition();
Collection<OsmPrimitive> selected; Collection<OsmPrimitive> selected;
List<Node> nodes = ds.getSelectedNodes().stream().filter(node -> !node.getReferrers().isEmpty())
.collect(Collectors.toList());
ds.clearSelection(nodes);
nodes.stream().map(Node::getReferrers).forEach(ds::addSelected);
if (maxAddition > 0) { if (maxAddition > 0) {
selected = mapWithAI.getDataSet().getSelected().stream().limit(maxAddition).collect(Collectors.toList()); selected = ds.getSelected().stream().limit(maxAddition).collect(Collectors.toList());
} else { } else {
selected = mapWithAI.getDataSet().getSelected(); selected = ds.getSelected();
} }
for (final OsmDataLayer osmLayer : osmLayers) { for (final OsmDataLayer osmLayer : osmLayers) {
if (!osmLayer.isLocked() && osmLayer.isVisible() && osmLayer.isUploadable() if (!osmLayer.isLocked() && osmLayer.isVisible() && osmLayer.isUploadable()