Changeset 13734 in josm for trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
- Timestamp:
- 2018-05-12T14:19:28+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
r8840 r13734 2 2 package org.openstreetmap.josm.gui.preferences.imagery; 3 3 4 import static org.openstreetmap.josm.tools.I18n.tr;5 6 4 import java.awt.Component; 5 import java.util.Collection; 7 6 import java.util.LinkedList; 8 7 import java.util.List; 9 8 10 import javax.swing.JOptionPane;11 9 import javax.swing.JTree; 12 10 import javax.swing.event.TreeSelectionEvent; … … 18 16 import javax.swing.tree.TreePath; 19 17 18 import org.openstreetmap.josm.data.imagery.LayerDetails; 20 19 import org.openstreetmap.josm.io.imagery.WMSImagery; 21 20 … … 27 26 private final DefaultTreeModel treeData = new DefaultTreeModel(treeRootNode); 28 27 private final JTree layerTree = new JTree(treeData); 29 private final List<WMSImagery.LayerDetails> selectedLayers = new LinkedList<>(); 30 private boolean previouslyShownUnsupportedCrsError; 28 private final List<LayerDetails> selectedLayers = new LinkedList<>(); 31 29 32 30 /** … … 50 48 * @return the list of selected layers 51 49 */ 52 public List< WMSImagery.LayerDetails> getSelectedLayers() {50 public List<LayerDetails> getSelectedLayers() { 53 51 return selectedLayers; 54 52 } … … 62 60 } 63 61 64 void addLayersToTreeData(MutableTreeNode parent, List<WMSImagery.LayerDetails> layers) { 65 for (WMSImagery.LayerDetails layerDetails : layers) { 62 void addLayersToTreeData(MutableTreeNode parent, Collection<LayerDetails> layers) { 63 for (LayerDetails layerDetails : layers.stream() 64 .sorted((l1, l2) -> -1 * l1.toString().compareTo(l2.toString())) 65 .toArray(LayerDetails[]::new) 66 ) { 66 67 DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(layerDetails); 67 addLayersToTreeData(treeNode, layerDetails. children);68 addLayersToTreeData(treeNode, layerDetails.getChildren()); 68 69 treeData.insertNodeInto(treeNode, parent, 0); 69 70 } … … 71 72 72 73 /** 73 * Updates the whole tree with the given WMS imagery info. 74 * Updates the whole tree with the given WMS imagery info. All previous content is removed 74 75 * @param wms The imagery info for a given WMS server 75 76 */ 76 77 public void updateTree(WMSImagery wms) { 77 treeRootNode.setUserObject(wms.getServiceUrl().getHost()); 78 // treeRootNode = new DefaultMutableTreeNode(); 79 while (treeRootNode.getChildCount() > 0) { 80 treeRootNode.remove(0); 81 } 82 treeRootNode.setUserObject(wms.buildRootUrl()); 78 83 updateTreeList(wms.getLayers()); 79 84 } … … 83 88 * @param layers The list of layers to add to the root node 84 89 */ 85 public void updateTreeList( List<WMSImagery.LayerDetails> layers) {90 public void updateTreeList(Collection<LayerDetails> layers) { 86 91 addLayersToTreeData(getTreeRootNode(), layers); 87 92 getLayerTree().expandRow(0); … … 98 103 DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) value; 99 104 Object userObject = treeNode.getUserObject(); 100 if (userObject instanceof WMSImagery.LayerDetails) {101 WMSImagery.LayerDetails layer = (WMSImagery.LayerDetails) userObject;102 setEnabled(l ayer.isSupported());105 if (userObject instanceof LayerDetails) { 106 LayerDetails ld = (LayerDetails) userObject; 107 setEnabled(ld.isSelectable()); 103 108 } 104 109 return this; … … 118 123 for (TreePath i : selectionRows) { 119 124 Object userObject = ((DefaultMutableTreeNode) i.getLastPathComponent()).getUserObject(); 120 if (userObject instanceof WMSImagery.LayerDetails) { 121 WMSImagery.LayerDetails detail = (WMSImagery.LayerDetails) userObject; 122 if (!detail.isSupported()) { 123 layerTree.removeSelectionPath(i); 124 if (!previouslyShownUnsupportedCrsError) { 125 JOptionPane.showMessageDialog(null, tr("That layer does not support any of JOSM''s projections,\n" + 126 "so you can not use it. This message will not show again."), 127 tr("WMS Error"), JOptionPane.ERROR_MESSAGE); 128 previouslyShownUnsupportedCrsError = true; 129 } 130 } else if (detail.ident != null) { 125 if (userObject instanceof LayerDetails) { 126 LayerDetails detail = (LayerDetails) userObject; 127 if (detail.isSelectable()) { 131 128 selectedLayers.add(detail); 132 129 }
Note:
See TracChangeset
for help on using the changeset viewer.