Changeset 2860 in josm for trunk/src/org/openstreetmap/josm
- Timestamp:
- 2010-01-14T22:06:53+01:00 (14 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/MapView.java
r2809 r2860 312 312 * @return the next active data layer 313 313 */ 314 protected Layer determineNextActiveLayer(L ayer ignoredLayer) {314 protected Layer determineNextActiveLayer(List<Layer> layersList) { 315 315 // First look for data layer 316 for (Layer layer:layers ) {317 if (layer instanceof OsmDataLayer && layer != ignoredLayer)316 for (Layer layer:layersList) { 317 if (layer instanceof OsmDataLayer) 318 318 return layer; 319 319 } 320 320 321 321 // Then any layer 322 for (Layer layer:layers) { 323 if (layer != ignoredLayer) 324 return layer; 325 } 322 if (!layersList.isEmpty()) 323 return layersList.get(0); 326 324 327 325 // and then give up … … 335 333 */ 336 334 public void removeLayer(Layer layer) { 335 List<Layer> layersList = new ArrayList<Layer>(layers); 336 337 if (!layersList.remove(layer)) 338 return; 339 340 setEditLayer(layersList); 341 337 342 if (layer == activeLayer) { 338 setActiveLayer(determineNextActiveLayer( activeLayer));339 } 340 if (layers.remove(layer)) { 341 fireLayerRemoved(layer);342 }343 setActiveLayer(determineNextActiveLayer(layersList), false); 344 } 345 346 layers.remove(layer); 347 fireLayerRemoved(layer); 343 348 layer.removePropertyChangeListener(this); 344 349 layer.destroy(); … … 378 383 layers.add(pos, layer); 379 384 } 380 setEditLayer( );385 setEditLayer(layers); 381 386 AudioPlayer.reset(); 382 387 repaint(); … … 577 582 } 578 583 579 private void setEditLayer( ) {580 OsmDataLayer newEditLayer = editLayer;584 private void setEditLayer(List<Layer> layersList) { 585 OsmDataLayer newEditLayer = layersList.contains(editLayer)?editLayer:null; 581 586 OsmDataLayer oldEditLayer = editLayer; 582 587 583 588 // Find new edit layer 584 if (activeLayer != editLayer ) {585 if (activeLayer instanceof OsmDataLayer ) {589 if (activeLayer != editLayer || !layersList.contains(editLayer)) { 590 if (activeLayer instanceof OsmDataLayer && layersList.contains(activeLayer)) { 586 591 newEditLayer = (OsmDataLayer) activeLayer; 587 592 } else { 588 for (Layer layer:layers ) {593 for (Layer layer:layersList) { 589 594 if (layer instanceof OsmDataLayer) { 590 595 newEditLayer = (OsmDataLayer) layer; … … 616 621 */ 617 622 public void setActiveLayer(Layer layer) { 623 setActiveLayer(layer, true); 624 } 625 626 private void setActiveLayer(Layer layer, boolean setEditLayer) { 618 627 if (layer != null && !layers.contains(layer)) 619 628 throw new IllegalArgumentException(tr("Layer ''{0}'' must be in list of layers", layer.toString())); … … 624 633 Layer old = activeLayer; 625 634 activeLayer = layer; 626 setEditLayer(); 635 if (setEditLayer) { 636 setEditLayer(layers); 637 } 627 638 fireActiveLayerChanged(old, layer); 628 639 -
trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
r2741 r2860 736 736 737 737 public void dataChanged(DataChangedEvent event) { 738 Layer l = Main.main.getEditLayer(); 739 if (l != null) { 740 initFromLayer(l); 741 } 738 initFromLayer(Main.main.getEditLayer()); 742 739 } 743 740
Note:
See TracChangeset
for help on using the changeset viewer.