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 }