Fix direction of command undo/redo

Signed-off-by: Taylor Smock <taylor.smock@kaart.com>
pull/1/head
Taylor Smock 2019-10-30 13:45:06 -06:00
rodzic 1b6d07c6d1
commit 6ddc12ce9d
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 625F6A74A3E4311A
2 zmienionych plików z 15 dodań i 17 usunięć

Wyświetl plik

@ -15,7 +15,6 @@ import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.gui.MainApplication;
import org.openstreetmap.josm.plugins.mapwithai.MapWithAIPlugin;
import org.openstreetmap.josm.plugins.mapwithai.commands.MergeDuplicateWays;
import org.openstreetmap.josm.tools.Logging;
import org.openstreetmap.josm.tools.Shortcut;
/**
@ -38,21 +37,16 @@ public class MergeDuplicateWaysAction extends JosmAction {
public void actionPerformed(ActionEvent e) {
final List<Way> ways = new ArrayList<>(MainApplication.getLayerManager().getActiveDataSet().getSelectedWays());
Command command = null;
int i = 0;
do {
if (ways.size() == 2) {
command = new MergeDuplicateWays(ways.get(0), ways.get(1));
} else if (ways.size() == 1) {
command = new MergeDuplicateWays(ways.get(0));
} else if (ways.isEmpty()) {
command = new MergeDuplicateWays(MainApplication.getLayerManager().getActiveDataSet());
}
if (command != null) {
UndoRedoHandler.getInstance().add(command);
i++;
Logging.error(Integer.toString(i));
}
} while (command != null && i < 10);
if (ways.size() == 2) {
command = new MergeDuplicateWays(ways.get(0), ways.get(1));
} else if (ways.size() == 1) {
command = new MergeDuplicateWays(ways.get(0));
} else if (ways.isEmpty()) {
command = new MergeDuplicateWays(MainApplication.getLayerManager().getActiveDataSet());
}
if (command != null) {
UndoRedoHandler.getInstance().add(command);
}
}
}

Wyświetl plik

@ -17,6 +17,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.openstreetmap.josm.command.ChangeCommand;
import org.openstreetmap.josm.command.ChangePropertyCommand;
import org.openstreetmap.josm.command.Command;
import org.openstreetmap.josm.command.DeleteCommand;
import org.openstreetmap.josm.command.SequenceCommand;
@ -85,7 +86,9 @@ public class MergeDuplicateWays extends Command {
@Override
public void undoCommand() {
for (final Command tCommand : commands) {
List<Command> reversedCommands = new ArrayList<>(commands);
Collections.reverse(reversedCommands);
for (final Command tCommand : reversedCommands) {
tCommand.undoCommand();
}
}
@ -209,6 +212,7 @@ public class MergeDuplicateWays extends Command {
if (newWay.getNodesCount() > 0) {
commands.add(new DeleteCommand(way2));
commands.add(new ChangeCommand(way1, newWay));
commands.add(new ChangePropertyCommand(way1.getDataSet(), Collections.singleton(newWay), way2.getKeys()));
}
if (commands.contains(null)) {
commands = commands.stream().filter(Objects::nonNull).collect(Collectors.toList());