Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
r11093 r18837 6 6 import java.awt.Component; 7 7 import java.awt.event.ActionEvent; 8 import java.util.HashMap; 8 9 import java.util.List; 10 import java.util.Map; 9 11 10 12 import javax.swing.AbstractAction; … … 46 48 if (!SaveLayersDialog.saveUnsavedModifications(selectedLayers, SaveLayersDialog.Reason.DELETE)) 47 49 return; 50 final Map<Integer, Layer> layerMap = model.selectedIndices().filter(i -> model.getLayer(i) != null) 51 .collect(HashMap::new, (map, value) -> map.put(value, model.getLayer(value)), HashMap::putAll); 48 52 for (Layer l: selectedLayers) { 49 53 if (model.getLayerManager().containsLayer(l)) { … … 51 55 // this is why we need to check if every layer is still in the list of selected layers. 52 56 model.getLayerManager().removeLayer(l); 57 } 58 } 59 // Set the next active layer to the next visible layer 60 if (layerMap.size() == 1) { 61 final int selected = Math.min(layerMap.keySet().iterator().next(), model.getRowCount() - 1); 62 int currentLayerIndex = selected; 63 Layer layer = model.getLayer(currentLayerIndex); 64 // If the user has the last layer selected, we need to wrap around. 65 boolean reversed = false; 66 while (layer != null && !layer.isVisible() && currentLayerIndex < model.getRowCount() && currentLayerIndex >= 0) { 67 if (reversed) { 68 currentLayerIndex--; 69 } else { 70 currentLayerIndex++; 71 } 72 if (currentLayerIndex == model.getRowCount()) { 73 reversed = true; 74 currentLayerIndex = selected; 75 } 76 layer = model.getLayer(currentLayerIndex); 77 } 78 if (layer != null) { 79 model.getLayerManager().setActiveLayer(layer); 80 // Reset the selection 81 model.getSelectionModel().setSelectionInterval(selected, selected); 53 82 } 54 83 } -
trunk/test/unit/org/openstreetmap/josm/actions/DeleteLayerActionTest.java
r18487 r18837 5 5 import static org.junit.jupiter.api.Assertions.assertNull; 6 6 7 import org.junit.jupiter.api.extension.RegisterExtension;8 7 import org.junit.jupiter.api.Test; 9 8 import org.openstreetmap.josm.data.osm.DataSet; 10 9 import org.openstreetmap.josm.gui.MainApplication; 11 10 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 12 import org.openstreetmap.josm.testutils.JOSMTestRules; 13 14 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; 11 import org.openstreetmap.josm.testutils.annotations.Main; 12 import org.openstreetmap.josm.testutils.annotations.Projection; 15 13 16 14 /** 17 15 * Unit tests for class {@link DeleteLayerAction}. 18 16 */ 17 @Main 18 @Projection 19 19 final class DeleteLayerActionTest { 20 21 /**22 * Setup test.23 */24 @RegisterExtension25 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")26 public static JOSMTestRules test = new JOSMTestRules().main().projection();27 28 20 /** 29 21 * Unit test of {@link DeleteLayerAction#actionPerformed}
Note:
See TracChangeset
for help on using the changeset viewer.