// Copyright 2003-2007, FreeHEP.
package org.freehep.graphicsio.ps;
import java.awt.Component;
import java.awt.Dimension;
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.ImageConstants;
import org.freehep.graphicsio.InfoConstants;
import org.freehep.graphicsio.AbstractVectorGraphicsIO;
import org.freehep.graphicsio.exportchooser.AbstractExportFileType;
import org.freehep.graphicsio.exportchooser.BackgroundPanel;
import org.freehep.graphicsio.exportchooser.FontPanel;
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.PageLayoutPanel;
import org.freehep.graphicsio.exportchooser.PageMarginPanel;
import org.freehep.swing.layout.TableLayout;
import org.freehep.util.UserProperties;
/**
*
* @author Charles Loomis, Simon Fischer
* @version $Id: AbstractPSExportFileType.java 13311 2007-09-10 18:13:00Z duns $
*/
public abstract class AbstractPSExportFileType extends AbstractExportFileType {
protected static final String bitsList[] = { "1", "2", "4", "8" };
protected OptionPanel preview;
protected OptionCheckBox previewCheckBox;
public boolean hasOptionPanel() {
return true;
}
public String[] getMIMETypes() {
return new String[] { "application/postscript" };
}
public JPanel createOptionPanel(Properties user) {
UserProperties options = new UserProperties(user, PSGraphics2D
.getDefaultProperties());
preview = new OptionPanel("Preview Image");
previewCheckBox = new OptionCheckBox(options, PSGraphics2D.PREVIEW,
"Include preview");
preview.add(TableLayout.FULL, previewCheckBox);
final JLabel previewLabel = new JLabel("Bits per sample");
preview.add(TableLayout.LEFT, previewLabel);
previewCheckBox.enables(previewLabel);
final OptionComboBox previewComboBox = new OptionComboBox(options,
PSGraphics2D.PREVIEW_BITS, bitsList);
preview.add(TableLayout.RIGHT, previewComboBox);
previewCheckBox.enables(previewComboBox);
preview.setVisible(false);
// rootKeys for FontProperties
String rootKey = PSGraphics2D.class.getName();
String abstractRootKey = AbstractVectorGraphicsIO.class.getName();
JPanel infoPanel = new InfoPanel(options, rootKey, new String[] {
InfoConstants.FOR, InfoConstants.TITLE });
// TableLayout.LEFT Panel
JPanel leftPanel = new OptionPanel();
leftPanel
.add(TableLayout.COLUMN, new PageLayoutPanel(options, rootKey));
leftPanel
.add(TableLayout.COLUMN, new PageMarginPanel(options, rootKey));
leftPanel.add(TableLayout.COLUMN_FILL, new JLabel());
// TableLayout.RIGHT Panel
JPanel rightPanel = new OptionPanel();
rightPanel.add(TableLayout.COLUMN, new BackgroundPanel(options,
rootKey, false));
rightPanel.add(TableLayout.COLUMN, preview);
rightPanel.add(TableLayout.COLUMN, new ImageTypePanel(options, rootKey,
new String[] { ImageConstants.SMALLEST, ImageConstants.ZLIB,
ImageConstants.JPG }));
rightPanel.add(TableLayout.COLUMN, new FontPanel(options, rootKey,
abstractRootKey));
rightPanel.add(TableLayout.COLUMN_FILL, new JLabel());
// Make the full panel.
OptionPanel optionsPanel = new OptionPanel();
optionsPanel.add("0 0 [5 5 5 5] wt", leftPanel);
optionsPanel.add("1 0 [5 5 5 5] wt", rightPanel);
optionsPanel.add("0 1 2 1 [5 5 5 5] wt", infoPanel);
optionsPanel.add(TableLayout.COLUMN_FILL, new JLabel());
return optionsPanel;
}
}