Ignore:
Timestamp:
2021-03-20T11:50:08+01:00 (5 years ago)
Author:
simon04
Message:

fix #19857 - Select WMS layers: option to only show layers for current view

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java

    r13824 r17594  
    44import java.awt.Component;
    55import java.util.Collection;
     6import java.util.Comparator;
    67import java.util.LinkedList;
    78import java.util.List;
     
    1617import javax.swing.tree.TreePath;
    1718
     19import org.openstreetmap.josm.data.coor.LatLon;
    1820import org.openstreetmap.josm.data.imagery.LayerDetails;
    1921import org.openstreetmap.josm.io.imagery.WMSImagery;
     
    2729    private final JTree layerTree = new JTree(treeData);
    2830    private final List<LayerDetails> selectedLayers = new LinkedList<>();
     31    private LatLon checkBounds = null;
    2932
    3033    /**
     
    6063    }
    6164
     65    /**
     66     * Set coordinate to check {@linkplain LayerDetails#getBounds() layer bounds}
     67     * when {@linkplain #updateTree updating the tree}.
     68     * @param checkBounds the coordinate
     69     */
     70    public void setCheckBounds(LatLon checkBounds) {
     71        this.checkBounds = checkBounds;
     72    }
     73
    6274    void addLayersToTreeData(MutableTreeNode parent, Collection<LayerDetails> layers) {
    6375        for (LayerDetails layerDetails : layers.stream()
    64                 .sorted((l1, l2) -> -1 * l1.toString().compareTo(l2.toString()))
     76                .filter(l -> checkBounds == null || l.getBounds() == null || l.getBounds().contains(checkBounds))
     77                .sorted(Comparator.comparing(LayerDetails::toString).reversed())
    6578                .toArray(LayerDetails[]::new)
    6679                ) {
     
    89102    public void updateTreeList(Collection<LayerDetails> layers) {
    90103        addLayersToTreeData(getTreeRootNode(), layers);
     104        treeData.nodeStructureChanged(getTreeRootNode());
    91105        getLayerTree().expandRow(0);
    92106        getLayerTree().expandRow(1);
Note: See TracChangeset for help on using the changeset viewer.