Changeset 1953 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2009-08-11T09:51:27+02:00 (15 years ago)
Author:
Gubaer
Message:

fixed #3239: Zoom to layer no longer zooms to selected layer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java

    r1903 r1953  
    99import java.util.Collection;
    1010import java.util.HashSet;
     11import java.util.List;
    1112
    1213import javax.swing.JOptionPane;
     
    1718import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    1819import org.openstreetmap.josm.gui.OptionPaneUtil;
     20import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    1921import org.openstreetmap.josm.gui.layer.Layer;
    2022import org.openstreetmap.josm.tools.Shortcut;
     
    8183    }
    8284
     85    /**
     86     * Replies the first selected layer in the layer list dialog. null, if no
     87     * such layer exists, either because the layer list dialog is not yet created
     88     * or because no layer is selected.
     89     *
     90     * @return the first selected layer in the layer list dialog
     91     */
     92    protected Layer getFirstSelectedLayer() {
     93        if (LayerListDialog.getInstance() == null) return null;
     94        List<Layer> layers = LayerListDialog.getInstance().getModel().getSelectedLayers();
     95        if (layers.isEmpty()) return null;
     96        return layers.get(0);
     97    }
     98
    8399    private BoundingXYVisitor getBoundingBox() {
    84100        BoundingXYVisitor v = new BoundingXYVisitor();
     
    90106            if (getActiveLayer() == null)
    91107                return null;
    92             getActiveLayer().visitBoundingBox(v);
     108            // try to zoom to the first selected layer
     109            //
     110            Layer l = getFirstSelectedLayer();
     111            if (l == null) return null;
     112            l.visitBoundingBox(v);
    93113        } else if (mode.equals("selection") || mode.equals("conflict")) {
    94114            Collection<OsmPrimitive> sel = new HashSet<OsmPrimitive>();
     
    142162            setEnabled(getCurrentDataSet() != null && ! getCurrentDataSet().getSelected().isEmpty());
    143163        }  else if ("layer".equals(mode)) {
    144             setEnabled(getActiveLayer() != null);
     164            if (Main.map == null || Main.map.mapView == null || Main.map.mapView.getAllLayersAsList().isEmpty()) {
     165                setEnabled(false);
     166            } else {
     167                // FIXME: should also check for whether a layer is selected in the layer list dialog
     168                setEnabled(true);
     169            }
    145170        } else {
    146171            setEnabled(
Note: See TracChangeset for help on using the changeset viewer.