001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.io.session;
003
004 import java.awt.Component;
005 import java.awt.GridBagLayout;
006 import java.io.IOException;
007 import java.util.Collection;
008 import java.util.Collections;
009 import java.util.Map;
010
011 import javax.swing.JCheckBox;
012 import javax.swing.JLabel;
013 import javax.swing.JPanel;
014 import javax.swing.SwingConstants;
015
016 import org.openstreetmap.josm.data.Preferences;
017 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
018 import org.openstreetmap.josm.gui.layer.ImageryLayer;
019 import org.openstreetmap.josm.gui.layer.Layer;
020 import org.openstreetmap.josm.gui.layer.TMSLayer;
021 import org.openstreetmap.josm.gui.layer.WMSLayer;
022 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
023 import org.openstreetmap.josm.tools.GBC;
024 import org.w3c.dom.Element;
025
026 /**
027 * Session exporter for TMSLayer and WMSLayer.
028 */
029 public class ImagerySessionExporter implements SessionLayerExporter {
030
031 private ImageryLayer layer;
032
033 public ImagerySessionExporter(ImageryLayer layer) {
034 this.layer = layer;
035 }
036
037 public ImagerySessionExporter(TMSLayer layer) {
038 this((ImageryLayer) layer);
039 }
040
041 public ImagerySessionExporter(WMSLayer layer) {
042 this((ImageryLayer) layer);
043 }
044
045 private JCheckBox export;
046
047 @Override
048 public Collection<Layer> getDependencies() {
049 return Collections.emptySet();
050 }
051
052 @Override
053 public Component getExportPanel() {
054 final JPanel p = new JPanel(new GridBagLayout());
055 export = new JCheckBox();
056 export.setSelected(true);
057 final JLabel lbl = new JLabel(layer.getName(), layer.getIcon(), SwingConstants.LEFT);
058 lbl.setToolTipText(layer.getToolTipText());
059 p.add(export, GBC.std());
060 p.add(lbl, GBC.std());
061 p.add(GBC.glue(1,0), GBC.std().fill(GBC.HORIZONTAL));
062 return p;
063 }
064
065 @Override
066 public boolean shallExport() {
067 return export.isSelected();
068 }
069
070 @Override
071 public boolean requiresZip() {
072 return false;
073 }
074
075 @Override
076 public Element export(ExportSupport support) throws IOException {
077 Element layerElem = support.createElement("layer");
078 layerElem.setAttribute("type", "imagery");
079 layerElem.setAttribute("version", "0.1");
080 ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
081 Map<String,String> data = Preferences.serializeStruct(e, ImageryPreferenceEntry.class);
082 for (Map.Entry<String,String> entry : data.entrySet()) {
083 Element attrElem = support.createElement(entry.getKey());
084 layerElem.appendChild(attrElem);
085 attrElem.appendChild(support.createTextNode(entry.getValue()));
086 }
087 return layerElem;
088 }
089
090 }