source: josm/trunk/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java@ 9001

Last change on this file since 9001 was 9001, checked in by simon04, 9 years ago

fix #12088 - Unable to save session with WMTS layers

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.session;
3
4import java.awt.Component;
5import java.awt.GridBagLayout;
6import java.io.IOException;
7import java.util.Collection;
8import java.util.Collections;
9import java.util.LinkedHashMap;
10import java.util.Map;
11
12import javax.swing.JCheckBox;
13import javax.swing.JLabel;
14import javax.swing.JPanel;
15import javax.swing.SwingConstants;
16
17import org.openstreetmap.josm.data.Preferences;
18import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
19import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
20import org.openstreetmap.josm.gui.layer.ImageryLayer;
21import org.openstreetmap.josm.gui.layer.Layer;
22import org.openstreetmap.josm.gui.layer.TMSLayer;
23import org.openstreetmap.josm.gui.layer.WMSLayer;
24import org.openstreetmap.josm.gui.layer.WMTSLayer;
25import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
26import org.openstreetmap.josm.tools.GBC;
27import org.w3c.dom.Element;
28
29/**
30 * Session exporter for TMSLayer and WMSLayer.
31 */
32public class ImagerySessionExporter implements SessionLayerExporter {
33
34 private ImageryLayer layer;
35 private JCheckBox export;
36
37 public ImagerySessionExporter(ImageryLayer layer) {
38 this.layer = layer;
39 }
40
41 public ImagerySessionExporter(TMSLayer layer) {
42 this((ImageryLayer) layer);
43 }
44
45 public ImagerySessionExporter(WMSLayer layer) {
46 this((ImageryLayer) layer);
47 }
48
49 public ImagerySessionExporter(WMTSLayer layer) {
50 this((ImageryLayer) layer);
51 }
52
53 @Override
54 public Collection<Layer> getDependencies() {
55 return Collections.emptySet();
56 }
57
58 @Override
59 public Component getExportPanel() {
60 final JPanel p = new JPanel(new GridBagLayout());
61 export = new JCheckBox();
62 export.setSelected(true);
63 final JLabel lbl = new JLabel(layer.getName(), layer.getIcon(), SwingConstants.LEFT);
64 lbl.setToolTipText(layer.getToolTipText());
65 lbl.setLabelFor(export);
66 p.add(export, GBC.std());
67 p.add(lbl, GBC.std());
68 p.add(GBC.glue(1, 0), GBC.std().fill(GBC.HORIZONTAL));
69 return p;
70 }
71
72 @Override
73 public boolean shallExport() {
74 return export.isSelected();
75 }
76
77 @Override
78 public boolean requiresZip() {
79 return false;
80 }
81
82 @Override
83 public Element export(ExportSupport support) throws IOException {
84 Element layerElem = support.createElement("layer");
85 layerElem.setAttribute("type", "imagery");
86 layerElem.setAttribute("version", "0.1");
87 ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
88 Map<String, String> data = new LinkedHashMap<>(Preferences.serializeStruct(e, ImageryPreferenceEntry.class));
89 if (layer instanceof AbstractTileSourceLayer) {
90 AbstractTileSourceLayer tsLayer = (AbstractTileSourceLayer) layer;
91 data.put("automatic-downloading", Boolean.toString(tsLayer.autoLoad));
92 data.put("automatically-change-resolution", Boolean.toString(tsLayer.autoZoom));
93 data.put("show-errors", Boolean.toString(tsLayer.showErrors));
94 }
95 data.put("dx", String.valueOf(layer.getDx()));
96 data.put("dy", String.valueOf(layer.getDy()));
97 for (Map.Entry<String, String> entry : data.entrySet()) {
98 Element attrElem = support.createElement(entry.getKey());
99 layerElem.appendChild(attrElem);
100 attrElem.appendChild(support.createTextNode(entry.getValue()));
101 }
102 return layerElem;
103 }
104
105}
Note: See TracBrowser for help on using the repository browser.