Changeset 13734 in josm for trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMTSLayerPanel.java
- Timestamp:
- 2018-05-12T14:19:28+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMTSLayerPanel.java
r13591 r13734 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.Dimension; 7 import java.awt.GridBagLayout; 6 8 import java.io.IOException; 9 import java.util.Collections; 10 import java.util.List; 11 import java.util.Map.Entry; 7 12 13 import javax.swing.JButton; 14 import javax.swing.JCheckBox; 8 15 import javax.swing.JLabel; 16 import javax.swing.JOptionPane; 17 import javax.swing.JPanel; 18 import javax.swing.JScrollPane; 19 import javax.swing.JTable; 9 20 21 import org.openstreetmap.josm.data.imagery.DefaultLayer; 10 22 import org.openstreetmap.josm.data.imagery.ImageryInfo; 11 23 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType; 24 import org.openstreetmap.josm.data.imagery.WMTSCapabilities; 12 25 import org.openstreetmap.josm.data.imagery.WMTSTileSource; 26 import org.openstreetmap.josm.data.imagery.WMTSTileSource.Layer; 27 import org.openstreetmap.josm.data.imagery.WMTSTileSource.WMTSGetCapabilitiesException; 13 28 import org.openstreetmap.josm.tools.GBC; 29 import org.openstreetmap.josm.tools.Logging; 14 30 15 31 /** … … 19 35 */ 20 36 public class AddWMTSLayerPanel extends AddImageryPanel { 37 private final transient JPanel layerPanel = new JPanel(new GridBagLayout()); 38 private transient JTable layerTable = null; 39 private final JCheckBox setDefaultLayer = new JCheckBox(tr("Set default layer?")); 40 private List<Entry<String, List<Layer>>> layers; 21 41 22 42 /** … … 29 49 rawUrl.setLineWrap(true); 30 50 rawUrl.setAlignmentY(TOP_ALIGNMENT); 51 JButton getLayers = new JButton(tr("Get layers")); 52 getLayers.setEnabled(setDefaultLayer.isSelected()); 53 setDefaultLayer.addActionListener(e -> { 54 getLayers.setEnabled(setDefaultLayer.isSelected()); 55 }); 56 add(setDefaultLayer, GBC.eop().fill()); 57 add(getLayers, GBC.eop().fill()); 58 add(new JLabel(tr("Choose default layer")), GBC.eol().fill()); 59 layerPanel.setPreferredSize(new Dimension(250, 100)); 60 add(layerPanel, GBC.eol().fill()); 61 62 addCommonSettings(); 63 31 64 add(new JLabel(tr("{0} Enter name for this layer", "3.")), GBC.eol()); 32 65 add(name, GBC.eol().fill(GBC.HORIZONTAL)); 33 66 registerValidableComponent(rawUrl); 67 68 getLayers.addActionListener(e -> { 69 try { 70 WMTSCapabilities capabilities = WMTSTileSource.getCapabilities(rawUrl.getText(), getCommonHeaders()); 71 layers = WMTSTileSource.groupLayersByNameAndTileMatrixSet(capabilities.getLayers()); 72 layerTable = WMTSTileSource.getLayerSelectionPanel(layers); 73 layerPanel.removeAll(); 74 JScrollPane scrollPane = new JScrollPane(layerTable); 75 scrollPane.setPreferredSize(new Dimension(100, 100)); 76 layerPanel.add(scrollPane, GBC.eol().fill()); 77 layerPanel.revalidate(); 78 } catch (Exception ex) { 79 JOptionPane.showMessageDialog( 80 getParent(), 81 tr("Error getting layers: {0}", ex.getMessage()), 82 tr("WMTS Error"), 83 JOptionPane.ERROR_MESSAGE); 84 } 85 }); 34 86 } 35 87 … … 37 89 protected ImageryInfo getImageryInfo() { 38 90 ImageryInfo ret = new ImageryInfo(getImageryName(), "wmts:" + sanitize(getImageryRawUrl(), ImageryType.WMTS)); 91 if (setDefaultLayer.isSelected()) { 92 if (layerTable == null) { 93 // did not call get capabilities 94 throw new RuntimeException("TODO"); 95 } 96 int index = layerTable.getSelectedRow(); 97 if (index < 0) { 98 throw new RuntimeException("TODO"); 99 } 100 Layer selectedLayer = layers.get(layerTable.convertRowIndexToModel(index)).getValue().get(0); 101 ret.setDefaultLayers( 102 Collections.<DefaultLayer> singletonList( 103 new DefaultLayer( 104 ImageryType.WMTS, 105 selectedLayer.getIdentifier(), 106 selectedLayer.getStyle(), 107 selectedLayer.getTileMatrixSet().getIdentifier() 108 ) 109 ) 110 ); 111 } 112 ret.setCustomHttpHeaders(getCommonHeaders()); 113 ret.setGeoreferenceValid(getCommonIsValidGeoreference()); 39 114 ret.setImageryType(ImageryType.WMTS); 40 115 try { 41 116 new WMTSTileSource(ret); // check if constructor throws an error 42 } catch (IOException e) { 117 } catch (IOException | WMTSGetCapabilitiesException e) { 118 Logging.warn(e); 43 119 throw new IllegalArgumentException(e); // if so, wrap exception, so proper message will be shown to the user 44 120 }
Note:
See TracChangeset
for help on using the changeset viewer.
