001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.io.session; 003 004 import java.awt.Component; 005 import java.io.IOException; 006 import java.util.Collection; 007 008 import org.w3c.dom.Element; 009 010 import org.openstreetmap.josm.gui.layer.Layer; 011 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport; 012 013 public interface SessionLayerExporter { 014 015 /** 016 * Return the Layers, this Layer depends on. 017 */ 018 Collection<Layer> getDependencies(); 019 020 /** 021 * The GUI for exporting this layer. 022 */ 023 Component getExportPanel(); 024 025 /** 026 * Return true, if the layer should be included in the 027 * list of exported layers. 028 * 029 * The user can veto this in the export panel. 030 */ 031 boolean shallExport(); 032 033 /** 034 * Return true, if some data needs to be included in 035 * the zip archive. This decision depends on the user 036 * selection in the export panel. 037 * 038 * If any layer requires zip, the user can only save as 039 * .joz. Otherwise both .jos and .joz are possible. 040 */ 041 boolean requiresZip(); 042 043 /** 044 * Save meta data to the .jos file. Return a layer XML element. 045 * Use <code>support</code> to save files in the zip archive as needed. 046 */ 047 Element export(ExportSupport support) throws IOException; 048 049 } 050