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