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

Last change on this file since 7438 was 7438, checked in by bastiK, 10 years ago

fixed #10410 - session: imagery layer settings not stored

File size: 3.1 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.ImageryLayer;
20import org.openstreetmap.josm.gui.layer.Layer;
21import org.openstreetmap.josm.gui.layer.TMSLayer;
22import org.openstreetmap.josm.gui.layer.WMSLayer;
23import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
24import org.openstreetmap.josm.tools.GBC;
25import org.w3c.dom.Element;
26
27/**
28 * Session exporter for TMSLayer and WMSLayer.
29 */
30public class ImagerySessionExporter implements SessionLayerExporter {
31
32 private ImageryLayer layer;
33 private JCheckBox export;
34
35 public ImagerySessionExporter(ImageryLayer layer) {
36 this.layer = layer;
37 }
38
39 public ImagerySessionExporter(TMSLayer layer) {
40 this((ImageryLayer) layer);
41 }
42
43 public ImagerySessionExporter(WMSLayer layer) {
44 this((ImageryLayer) layer);
45 }
46
47 @Override
48 public Collection<Layer> getDependencies() {
49 return Collections.emptySet();
50 }
51
52 @Override
53 public Component getExportPanel() {
54 final JPanel p = new JPanel(new GridBagLayout());
55 export = new JCheckBox();
56 export.setSelected(true);
57 final JLabel lbl = new JLabel(layer.getName(), layer.getIcon(), SwingConstants.LEFT);
58 lbl.setToolTipText(layer.getToolTipText());
59 p.add(export, GBC.std());
60 p.add(lbl, GBC.std());
61 p.add(GBC.glue(1,0), GBC.std().fill(GBC.HORIZONTAL));
62 return p;
63 }
64
65 @Override
66 public boolean shallExport() {
67 return export.isSelected();
68 }
69
70 @Override
71 public boolean requiresZip() {
72 return false;
73 }
74
75 @Override
76 public Element export(ExportSupport support) throws IOException {
77 Element layerElem = support.createElement("layer");
78 layerElem.setAttribute("type", "imagery");
79 layerElem.setAttribute("version", "0.1");
80 ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
81 Map<String,String> data = new LinkedHashMap<>(Preferences.serializeStruct(e, ImageryPreferenceEntry.class));
82 if (layer instanceof WMSLayer) {
83 WMSLayer wms = (WMSLayer) layer;
84 data.put("automatic-downloading", Boolean.toString(wms.hasAutoDownload()));
85 data.put("automatically-change-resolution", Boolean.toString(wms.isAutoResolution()));
86 }
87 for (Map.Entry<String,String> entry : data.entrySet()) {
88 Element attrElem = support.createElement(entry.getKey());
89 layerElem.appendChild(attrElem);
90 attrElem.appendChild(support.createTextNode(entry.getValue()));
91 }
92 return layerElem;
93 }
94
95}
Note: See TracBrowser for help on using the repository browser.