// Copyright 2002-2007, FreeHEP. package org.freehep.graphicsio.svg; import java.awt.Component; import java.awt.Dimension; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; import javax.swing.JLabel; import javax.swing.JPanel; import org.freehep.graphics2d.VectorGraphics; import org.freehep.graphicsio.AbstractVectorGraphicsIO; import org.freehep.graphicsio.ImageConstants; import org.freehep.graphicsio.InfoConstants; import org.freehep.graphicsio.exportchooser.AbstractExportFileType; import org.freehep.graphicsio.exportchooser.BackgroundPanel; import org.freehep.graphicsio.exportchooser.FontPanel; import org.freehep.graphicsio.exportchooser.ImageSizePanel; import org.freehep.graphicsio.exportchooser.ImageTypePanel; import org.freehep.graphicsio.exportchooser.InfoPanel; import org.freehep.graphicsio.exportchooser.OptionCheckBox; import org.freehep.graphicsio.exportchooser.OptionComboBox; import org.freehep.graphicsio.exportchooser.OptionPanel; import org.freehep.graphicsio.exportchooser.OptionTextField; import org.freehep.swing.layout.TableLayout; import org.freehep.util.UserProperties; /** * * @author Mark Donszelmann * @version $Id: SVGExportFileType.java 12753 2007-06-12 22:32:31Z duns $ */ public class SVGExportFileType extends AbstractExportFileType { // Constants for the SVG options. final private static String versionList[] = { // SVGGraphics2D.VERSION_1_0, SVGGraphics2D.VERSION_1_1, // SVGGraphics2D.VERSION_1_2 }; private OptionCheckBox compress; public String getDescription() { return "Scalable Vector Graphics"; } public String[] getExtensions() { return new String[] { "svg", "svgz" }; } public String[] getMIMETypes() { return new String[] { "image/svg+xml" }; } public boolean hasOptionPanel() { return true; } public JPanel createOptionPanel(Properties user) { UserProperties options = new UserProperties(user, SVGGraphics2D .getDefaultProperties()); String rootKey = SVGGraphics2D.class.getName(); String abstractRootKey = AbstractVectorGraphicsIO.class.getName(); OptionPanel imageSize = new ImageSizePanel(options, rootKey); OptionPanel format = new OptionPanel("Format"); format.add(TableLayout.LEFT, new JLabel("SVG Version")); format.add(TableLayout.RIGHT, new OptionComboBox(options, SVGGraphics2D.VERSION, versionList)); compress = new OptionCheckBox(options, SVGGraphics2D.COMPRESS, "Compress"); format.add(TableLayout.FULL, compress); format.add(TableLayout.FULL, new OptionCheckBox(options, SVGGraphics2D.STYLABLE, "Stylable")); OptionPanel imageExport = new OptionPanel("Embed / Export Images"); OptionCheckBox exportImages = new OptionCheckBox(options, SVGGraphics2D.EXPORT_IMAGES, "Export"); imageExport.add(TableLayout.FULL, exportImages); JLabel exportSuffixLabel = new JLabel("Image Suffix"); imageExport.add(TableLayout.LEFT, exportSuffixLabel); exportImages.enables(exportSuffixLabel); final OptionTextField exportSuffix = new OptionTextField(options, SVGGraphics2D.EXPORT_SUFFIX, 20); imageExport.add(TableLayout.RIGHT, exportSuffix); exportImages.enables(exportSuffix); InfoPanel infoPanel = new InfoPanel(options, rootKey, new String[] { InfoConstants.CREATOR, InfoConstants.TITLE, }); // TableLayout.LEFT Panel JPanel leftPanel = new OptionPanel(); leftPanel.add(TableLayout.COLUMN, imageSize); leftPanel.add(TableLayout.COLUMN, format); leftPanel.add(TableLayout.COLUMN_FILL, new JLabel()); // TableLayout.RIGHT Panel JPanel rightPanel = new OptionPanel(); rightPanel.add(TableLayout.COLUMN, new BackgroundPanel(options, rootKey, true)); rightPanel.add(TableLayout.COLUMN, imageExport); rightPanel.add(TableLayout.COLUMN, new ImageTypePanel(options, rootKey, new String[] { ImageConstants.SMALLEST, ImageConstants.PNG, ImageConstants.JPG })); rightPanel.add(TableLayout.COLUMN, new FontPanel(options, null, abstractRootKey)); rightPanel.add(TableLayout.COLUMN_FILL, new JLabel()); // Make the full panel. OptionPanel panel = new OptionPanel(); panel.add("0 0 [5 5 5 5] wt", leftPanel); panel.add("1 0 [5 5 5 5] wt", rightPanel); panel.add("0 1 2 1 [5 5 5 5] wt", infoPanel); panel.add(TableLayout.COLUMN_FILL, new JLabel()); return panel; } public VectorGraphics getGraphics(OutputStream os, Component target) throws IOException { return new SVGGraphics2D(os, target); } public VectorGraphics getGraphics(OutputStream os, Dimension dimension) throws IOException { return new SVGGraphics2D(os, dimension); } public VectorGraphics getGraphics(File file, Component target) throws IOException { return new SVGGraphics2D(file, target); } public VectorGraphics getGraphics(File file, Dimension dimension) throws IOException { return new SVGGraphics2D(file, dimension); } public File adjustFilename(File file, Properties user) { UserProperties options = new UserProperties(user, SVGGraphics2D .getDefaultProperties()); if (options.isProperty(SVGGraphics2D.COMPRESS)) { return adjustExtension(file, "svgz", null, ""); } else { return adjustExtension(file, "svg", null, ""); } } }