📄 htmlexportdialog.java
字号:
/**
* ========================================
* JFreeReport : a free Java report library
* ========================================
*
* Project Info: http://www.jfree.org/jfreereport/index.html
* Project Lead: Thomas Morgner;
*
* (C) Copyright 2000-2003, by Simba Management Limited and Contributors.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* ---------------------
* HTMLExportDialog.java
* ---------------------
* (C)opyright 2003, by Heiko Evermann and Contributors.
*
* Original Author: Heiko Evermann (for Hawesko GmbH & Co KG) based on PDFSaveDialog;
* Contributor(s): Thomas Morgner;
* David Gilbert (for Simba Management Limited);
*
* $Id: HtmlExportDialog.java,v 1.23.2.2 2003/08/24 14:18:11 taqua Exp $
*
* Changes
* -------
* 02-Jan-2003 : Initial version
* 25-Feb-2003 : Updated Javadocs (DG);
*
*/
package com.jrefinery.report.preview;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.MessageFormat;
import java.util.ResourceBundle;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import com.jrefinery.report.JFreeReport;
import com.jrefinery.report.targets.table.html.DirectoryHtmlFilesystem;
import com.jrefinery.report.targets.table.html.HtmlProcessor;
import com.jrefinery.report.targets.table.html.HtmlProducer;
import com.jrefinery.report.targets.table.html.StreamHtmlFilesystem;
import com.jrefinery.report.targets.table.html.ZIPHtmlFilesystem;
import com.jrefinery.report.util.ActionButton;
import com.jrefinery.report.util.ExceptionDialog;
import com.jrefinery.report.util.FilesystemFilter;
import com.jrefinery.report.util.ReportConfiguration;
import com.jrefinery.report.util.StringUtil;
import org.jfree.io.IOUtils;
/**
* A dialog that is used to perform the printing of a report into an HTML file.
*
* @author Heiko Evermann
*/
public class HtmlExportDialog extends JDialog
{
/** Export to a single stream or file. */
public static final int EXPORT_STREAM = 0;
/** Export to a directory. */
public static final int EXPORT_DIR = 1;
/** Export to a ZIP file. */
public static final int EXPORT_ZIP = 2;
/**
* Internal action class to confirm the dialog and to validate the input.
*/
private class ActionConfirmZip extends AbstractAction
{
/**
* Default constructor.
*/
public ActionConfirmZip()
{
putValue(Action.NAME, getResources().getString("excelexportdialog.confirm"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
if (performValidateZip())
{
setConfirmed(true);
setVisible(false);
}
}
}
/**
* Internal action class to confirm the dialog and to validate the input.
*/
private class ActionConfirmDir extends AbstractAction
{
/**
* Default constructor.
*/
public ActionConfirmDir()
{
putValue(Action.NAME, getResources().getString("excelexportdialog.confirm"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
if (performValidateDir())
{
setConfirmed(true);
setVisible(false);
}
}
}
/**
* Internal action class to confirm the dialog and to validate the input.
*/
private class ActionConfirmStream extends AbstractAction
{
/**
* Default constructor.
*/
public ActionConfirmStream()
{
putValue(Action.NAME, getResources().getString("excelexportdialog.confirm"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
if (performValidateStream())
{
setConfirmed(true);
setVisible(false);
}
}
}
/**
* Internal action class to cancel the report processing.
*/
private class ActionCancel extends AbstractAction
{
/**
* Default constructor.
*/
public ActionCancel()
{
putValue(Action.NAME, getResources().getString("excelexportdialog.cancel"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
setConfirmed(false);
setVisible(false);
}
}
/**
* Internal action class to select a target file.
*/
private class ActionSelectZipFile extends AbstractAction
{
/**
* Default constructor.
*/
public ActionSelectZipFile()
{
putValue(Action.NAME, getResources().getString("htmlexportdialog.selectZipFile"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
performSelectFileZip();
}
}
/**
* An action to select a directory.
*/
private class ActionSelectDirFile extends AbstractAction
{
/**
* Default constructor.
*/
public ActionSelectDirFile()
{
putValue(Action.NAME, getResources().getString("htmlexportdialog.selectDirFile"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
performSelectFileDir();
}
}
/**
* An action to select a file for the single-stream report.
*/
private class ActionSelectStreamFile extends AbstractAction
{
/**
* Default constructor.
*/
public ActionSelectStreamFile()
{
putValue(Action.NAME, getResources().getString("htmlexportdialog.selectStreamFile"));
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
performSelectFileStream();
}
}
/** Cancel action. */
private Action actionCancel;
/** Filename text field. */
private JTextField txStreamFilename;
/** ZIP filename text field. */
private JTextField txZipFilename;
/** Directory filename text field. */
private JTextField txDirFilename;
/** ZIP data file name. */
private JTextField txZipDataFilename;
/** Directory data file name text field. */
private JTextField txDirDataFilename;
/** Title text field. */
private JTextField txTitle;
/** Author text field. */
private JTextField txAuthor;
/** A combo-box for selecting the encoding. */
private JComboBox cbEncoding;
/** The encoding data model. */
private EncodingComboBoxModel encodingModel;
/** A check-box for selecting 'strict layout'. */
private JCheckBox cbxStrictLayout;
/** A radio button for selecting XHTML. */
private JRadioButton rbGenerateXHTML;
/** A radio button for selecting HTML4. */
private JRadioButton rbGenerateHTML4;
/** A check-box for... */
private JCheckBox cbxCopyExternalReferencesZip;
/** A check-boc for... */
private JCheckBox cbxCopyExternalReferencesDir;
/** Confirmed flag. */
private boolean confirmed;
/** A file chooser for a ZIP file. */
private JFileChooser fileChooserZip;
/** A file chooser for a directory. */
private JFileChooser fileChooserDir;
/** A file chooser for a stream. */
private JFileChooser fileChooserStream;
/** Tabs for the export selection. */
private JTabbedPane exportSelection;
/** Localised resources. */
private ResourceBundle resources;
/** The base resource class. */
public static final String BASE_RESOURCE_CLASS =
"com.jrefinery.report.resources.JFreeReportResources";
/**
* Creates a new HTML save dialog.
*
* @param owner the dialog owner.
*/
public HtmlExportDialog(final Frame owner)
{
super(owner);
initConstructor();
}
/**
* Creates a new HTML export dialog.
*
* @param owner the dialog owner.
*/
public HtmlExportDialog(final Dialog owner)
{
super(owner);
initConstructor();
}
/**
* Creates a new HTML save dialog. The created dialog is modal.
*/
public HtmlExportDialog()
{
initConstructor();
}
/**
* Initialisation.
*/
private void initConstructor()
{
setModal(true);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setTitle(getResources().getString("htmlexportdialog.dialogtitle"));
initialize();
clear();
addWindowListener(new WindowAdapter()
{
public void windowClosing(final WindowEvent e)
{
getCancelAction().actionPerformed(null);
}
}
);
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -