Changeset 18837 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2023-09-20T21:24:36+02:00 (17 months ago)
- File:
-
- 1 edited
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 }
Note:
See TracChangeset
for help on using the changeset viewer.