/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program 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.
*
* Copyright (c) 2001 - 2013 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved.
*/
package org.pentaho.reporting.engine.classic.core.modules.gui.html;
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.io.File;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.modules.gui.base.AbstractExportDialog;
import org.pentaho.reporting.engine.classic.core.modules.gui.common.StatusType;
import org.pentaho.reporting.engine.classic.core.modules.gui.commonswing.EncodingComboBoxModel;
import org.pentaho.reporting.engine.classic.core.modules.gui.commonswing.JStatusBar;
import org.pentaho.reporting.libraries.base.config.Configuration;
import org.pentaho.reporting.libraries.base.config.DefaultConfiguration;
import org.pentaho.reporting.libraries.base.util.FilesystemFilter;
import org.pentaho.reporting.libraries.base.util.IOUtils;
import org.pentaho.reporting.libraries.base.util.StringUtils;
import org.pentaho.reporting.libraries.fonts.encoding.EncodingRegistry;
/**
* A dialog that is used to perform the printing of a report into an HTML file.
*
* @author Heiko Evermann
*/
public class HtmlZipExportDialog extends AbstractExportDialog
{
/**
* The 'HTML encoding' property key.
*/
public static final String HTML_OUTPUT_ENCODING
= "org.pentaho.reporting.engine.classic.core.modules.output.table.html.Encoding"; //$NON-NLS-1$
/**
* A default value of the 'HTML encoding' property key.
*/
public static final String HTML_OUTPUT_ENCODING_DEFAULT = "UTF-16"; //$NON-NLS-1$
/**
* An action to select the export target file.
*/
private class ActionSelectDirFile extends AbstractAction
{
/**
* Default constructor.
*/
protected ActionSelectDirFile(final ResourceBundle resources)
{
putValue(Action.NAME, resources.getString("htmlexportdialog.selectFile")); //$NON-NLS-1$
}
/**
* Receives notification that the action has occurred.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e)
{
performSelectFileZip();
}
}
/**
* Filename text field.
*/
private JTextField txFilename;
/**
* Data file name field.
*/
private JTextField txDataFilename;
/**
* 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 check-box for...
*/
private JCheckBox cbxCopyExternalReferences;
/**
* A file chooser for a ZIP file.
*/
private JFileChooser fileChooserZip;
private static final String ZIP_FILE_EXTENSION = ".zip"; //$NON-NLS-1$
private static final String JAR_FILE_EXTENSION = ".jar"; //$NON-NLS-1$
private JStatusBar statusBar;
private JTextField txKeywords;
private JTextField txDescription;
/**
* Creates a new HTML save dialog.
*
* @param owner the dialog owner.
*/
public HtmlZipExportDialog(final Frame owner)
{
super(owner);
initConstructor();
}
/**
* Creates a new HTML export dialog.
*
* @param owner the dialog owner.
*/
public HtmlZipExportDialog(final Dialog owner)
{
super(owner);
initConstructor();
}
/**
* Creates a new HTML save dialog. The created dialog is modal.
*/
public HtmlZipExportDialog()
{
initConstructor();
}
/**
* Initialisation.
*/
private void initConstructor()
{
statusBar = new JStatusBar();
setTitle(getResources().getString("htmlexportdialog.dialogtitle")); //$NON-NLS-1$
initialize();
clear();
}
public JStatusBar getStatusBar()
{
return statusBar;
}
private JPanel createExportPanel()
{
final JLabel lblDirFileName = new JLabel(getResources().getString("htmlexportdialog.filename")); //$NON-NLS-1$
final JLabel lblDirDataFileName = new JLabel(getResources().getString(
"htmlexportdialog.datafilename")); //$NON-NLS-1$
final JPanel contentPane = new JPanel();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.insets = new Insets(1, 1, 1, 5);
contentPane.add(lblDirFileName, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.weightx = 1;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(txFilename, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 2;
gbc.gridy = 1;
contentPane.add(new JButton(new ActionSelectDirFile(getResources())), gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 2;
gbc.insets = new Insets(1, 1, 1, 5);
contentPane.add(lblDirDataFileName, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridwidth = 1;
gbc.weightx = 1;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(txDataFilename, gbc);
final JPanel advancedOptionsPane = new JPanel();
advancedOptionsPane.setLayout(new BorderLayout());
advancedOptionsPane.add(contentPane, BorderLayout.NORTH);
return advancedOptionsPane;
}
private JPanel createExportOptionsPanel()
{
final JLabel lblEncoding = new JLabel(getResources().getString("htmlexportdialog.encoding")); //$NON-NLS-1$
final JPanel contentPane = new JPanel();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridwidth = 1;
gbc.weightx = 1;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(cbxCopyExternalReferences, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(lblEncoding, gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(cbEncoding, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(cbxStrictLayout, gbc);
final JPanel advancedOptionsPane = new JPanel();
advancedOptionsPane.setLayout(new BorderLayout());
advancedOptionsPane.add(contentPane, BorderLayout.NORTH);
return advancedOptionsPane;
}
private JPanel createMetaDataPanel()
{
final JPanel contentPane = new JPanel();
contentPane.setLayout(new GridBagLayout());
final JLabel lblAuthor = new JLabel(getResources().getString("htmlexportdialog.author")); //$NON-NLS-1$
final JLabel lblTitel = new JLabel(getResources().getString("htmlexportdialog.title")); //$NON-NLS-1$
final JLabel lblKeywords = new JLabel(getResources().getString("htmlexportdialog.keywords")); //$NON-NLS-1$
final JLabel lblDescription = new JLabel(getResources().getString("htmlexportdialog.description")); //$NON-NLS-1$
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(3, 1, 1, 1);
contentPane.add(lblTitel, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(lblAuthor, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(lblKeywords, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 3;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(lblDescription, gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.insets = new Insets(3, 1, 1, 1);
contentPane.add(txTitle, gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(txAuthor, gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridwidth = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(txKeywords, gbc);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.gridx = 1;
gbc.gridy = 3;
gbc.gridwidth = 2;
gbc.insets = new Insets(1, 1, 1, 1);
contentPane.add(txDescription, gbc);
final JPanel advancedOptionsPane = new JPanel();
advancedOptionsPane.setLayout(new BorderLayout());
advancedOptionsPane.add(contentPane, BorderLayout.NORTH);
return advancedOptionsPane;
}
/**
* Initializes the Swing components of this dialog.
*/
private void initialize()
{
txAuthor = new JTextField();
txAuthor.setColumns(40);
txTitle = new JTextField();
txTitle.setColumns(40);
txKeywords = new JTextField();
txKeywords.setColumns(40);
txDescription = new JTextField();
txDescription.setColumns(40);
txFilename = new JTextField();
txFilename.setColumns(40);
txDataFilename = new JTextField();
txDataFilename.setColumns(40);
encodingModel = EncodingComboBoxModel.createDefaultModel(Locale.getDefault());
encodingModel.sort();
cbEncoding = new JComboBox(encodingModel);
cbxStrictLayout = new JCheckBox(getResources().getString("htmlexportdialog.strict-layout")); //$NON-NLS-1$
cbxCopyExternalReferences = new JCheckBox(getResources().getString(
"htmlexportdialog.copy-external-references")); //$NON-NLS-1$
getFormValidator().registerButton(cbxStrictLayout);
getFormValidator().registerTextField(txFilename);
getFormValidator().registerTextField(txDataFilename);
getFormValidator().registerComboBox(cbEncoding);
final JPanel exportPane = createExportPanel();
final Configuration config = ClassicEngineBoot.getInstance().getGlobalConfig();
final boolean advancedSettingsTabAvail =
"true".equals(config.getConfigProperty(
"org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.AdvancedSettingsAvailable"));
final boolean metaDataSettingsTabAvail =
"true".equals(config.getConfigProperty(
"org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.MetaDataSettingsAvailable"));
final JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.add(getResources().getString("htmlexportdialog.export-settings"), exportPane); //$NON-NLS-1$
tabbedPane.add(getResources().getString("htmlexportdialog.parameters"), getParametersPanel()); //$NON-NLS-1$
if (metaDataSettingsTabAvail)
{
tabbedPane.add(getResources().getString("htmlexportdialog.metadata-settings"),
createMetaDataPanel()); //$NON-NLS-1$
}
if (advancedSettingsTabAvail)
{
tabbedPane.add(getResources().getString("htmlexportdialog.advanced-settings"),
createExportOptionsPanel()); //$NON-NLS-1$
}
setContentPane(createContentPane(tabbedPane));
}
/**
* Returns the title of the HTML file.
*
* @return the title
*/
public String getHTMLTitle()
{
return txTitle.getText();
}
/**
* Defines the title of the HTML file.
*
* @param title the title
*/
public void setHTMLTitle(final String title)
{
this.txTitle.setText(title);
}
/**
* Gets the author of the dialog. This is not yet implemented in the HTML-Target.
*
* @return the name of the author of this report.
*/
public String getAuthor()
{
return txAuthor.getText();
}
/**
* Defines the Author of the report. Any freeform text is valid. This defaults to the value of the systemProperty
* "user.name".
*
* @param author the name of the author.
*/
public void setAuthor(final String author)
{
this.txAuthor.setText(author);
}
public void setKeywords(final String keywords)
{
this.txKeywords.setText(keywords);
}
public String getKeywords()
{
return this.txKeywords.getText();
}
public void setDescription(final String description)
{
this.txDescription.setText(description);
}
public String getDescription()
{
return this.txDescription.getText();
}
/**
* Clears all selections and input fields.
*/
public void clear()
{
txAuthor.setText(ClassicEngineBoot.getInstance().getGlobalConfig().getConfigProperty
("user.name", "")); //$NON-NLS-1$ //$NON-NLS-2$
txFilename.setText(""); //$NON-NLS-1$
txDataFilename.setText(""); //$NON-NLS-1$
txTitle.setText(""); //$NON-NLS-1$
txKeywords.setText(""); //$NON-NLS-1$
txDescription.setText(""); //$NON-NLS-1$
cbEncoding.setSelectedIndex(encodingModel.indexOf
(EncodingRegistry.getPlatformDefaultEncoding()));
cbxCopyExternalReferences.setSelected(false);
cbxStrictLayout.setSelected(false);
}
/**
* Returns a new (and not connected to the default config from the job) configuration containing all properties from
* the dialog.
*
* @param full
* @return
*/
protected Configuration grabDialogContents(final boolean full)
{
final DefaultConfiguration p = new DefaultConfiguration();
if (full)
{
p.setProperty
("org.pentaho.reporting.engine.classic.core.modules.gui.html.ExportMethod", "zip"); //$NON-NLS-1$ //$NON-NLS-2$
p.setProperty("org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.DataDirectory",//$NON-NLS-1$
getDataFilename());
p.setProperty("org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.TargetFileName",//$NON-NLS-1$
getFilename());
}
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Keywords",//$NON-NLS-1$
getKeywords());
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Description",//$NON-NLS-1$
getDescription());
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Author",//$NON-NLS-1$
getAuthor());
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Encoding",//$NON-NLS-1$
getEncoding());
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Title",//$NON-NLS-1$
getHTMLTitle());
p.setConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.StrictLayout",//$NON-NLS-1$
String.valueOf(isStrictLayout()));
return p;
}
protected void setDialogContents(final Configuration p)
{
setHTMLTitle(p.getConfigProperty
("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Title", //$NON-NLS-1$
p.getConfigProperty("org.pentaho.reporting.engine.classic.core.metadata.Title"))); //$NON-NLS-1$
setAuthor(p.getConfigProperty("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Author",
//$NON-NLS-1$
p.getConfigProperty("org.pentaho.reporting.engine.classic.core.metadata.Author"))); //$NON-NLS-1$
setKeywords(p.getConfigProperty
("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Keywords", //$NON-NLS-1$
p.getConfigProperty("org.pentaho.reporting.engine.classic.core.metadata.Keywords"))); //$NON-NLS-1$
setDescription(p.getConfigProperty(
"org.pentaho.reporting.engine.classic.core.modules.output.table.html.Description", //$NON-NLS-1$
p.getConfigProperty("org.pentaho.reporting.engine.classic.core.metadata.Description"))); //$NON-NLS-1$
setStrictLayout("true".equals(p.getConfigProperty //$NON-NLS-1$
("org.pentaho.reporting.engine.classic.core.modules.output.table.html.StrictLayout"))); //$NON-NLS-1$
final String encoding = p.getConfigProperty
("org.pentaho.reporting.engine.classic.core.modules.output.table.html.Encoding", //$NON-NLS-1$
EncodingRegistry.getPlatformDefaultEncoding());
encodingModel.ensureEncodingAvailable(encoding);
setEncoding(encoding);
setDataFilename(p.getConfigProperty
("org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.DataDirectory", "")); //$NON-NLS-1$ //$NON-NLS-2$
setFilename(p.getConfigProperty
("org.pentaho.reporting.engine.classic.core.modules.gui.html.zip.TargetFileName", "")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Returns the directory data file name.
*
* @return The file name.
*/
public String getDataFilename()
{
return txDataFilename.getText();
}
/**
* Sets the directory data file name.
*
* @param dirFilename the file name.
*/
public void setDataFilename(final String dirFilename)
{
this.txDataFilename.setText(dirFilename);
}
/**
* Returns the directory file name.
*
* @return The directory file name.
*/
public String getFilename()
{
return txFilename.getText();
}
/**
* Sets the directory file name.
*
* @param dirFilename the file name.
*/
public void setFilename(final String dirFilename)
{
this.txFilename.setText(dirFilename);
}
/**
* Returns the setting of the 'strict layout' check-box.
*
* @return A boolean.
*/
public boolean isStrictLayout()
{
return cbxStrictLayout.isSelected();
}
/**
* Sets the 'strict layout' check-box.
*
* @param s boolean.
*/
public void setStrictLayout(final boolean s)
{
cbxStrictLayout.setSelected(s);
}
/**
* Returns the selected encoding.
*
* @return The encoding name.
*/
public String getEncoding()
{
if (cbEncoding.getSelectedIndex() == -1)
{
return EncodingRegistry.getPlatformDefaultEncoding();
}
else
{
return encodingModel.getEncoding(cbEncoding.getSelectedIndex());
}
}
/**
* Sets the encoding.
*
* @param encoding the encoding name.
*/
public void setEncoding(final String encoding)
{
cbEncoding.setSelectedIndex(encodingModel.indexOf(encoding));
}
/**
* Selects a file to use as target for the report processing.
*/
protected void performSelectFileZip()
{
final File file = new File(getFilename());
if (fileChooserZip == null)
{
fileChooserZip = new JFileChooser();
fileChooserZip.addChoosableFileFilter
(new FilesystemFilter(
new String[]{HtmlZipExportDialog.ZIP_FILE_EXTENSION, HtmlZipExportDialog.JAR_FILE_EXTENSION},
getResources().getString("htmlexportdialog.zip-archives"), true)); //$NON-NLS-1$
fileChooserZip.setMultiSelectionEnabled(false);
}
fileChooserZip.setCurrentDirectory(file);
fileChooserZip.setSelectedFile(file);
final int option = fileChooserZip.showSaveDialog(this);
if (option == JFileChooser.APPROVE_OPTION)
{
final File selFile = fileChooserZip.getSelectedFile();
String selFileName = selFile.getAbsolutePath();
// Test if ends on xls
if (StringUtils.endsWithIgnoreCase(selFileName, HtmlZipExportDialog.ZIP_FILE_EXTENSION) == false)
{
selFileName = selFileName + HtmlZipExportDialog.ZIP_FILE_EXTENSION;
}
setFilename(selFileName);
}
}
/**
* Validates the contents of the dialog's input fields. If the selected file exists, it is also checked for validity.
*
* @return true, if the input is valid, false otherwise
*/
public boolean performValidate()
{
getStatusBar().clear();
final String filename = getFilename();
if (filename.trim().length() == 0)
{
getStatusBar().setStatus(StatusType.ERROR,
getResources().getString("htmlexportdialog.targetIsEmpty")); //$NON-NLS-1$
return false;
}
final File f = new File(filename);
if (f.exists())
{
if (f.isFile() == false)
{
getStatusBar().setStatus(StatusType.ERROR,
getResources().getString("htmlexportdialog.targetIsNoFile")); //$NON-NLS-1$
return false;
}
if (f.canWrite() == false)
{
getStatusBar().setStatus(StatusType.ERROR,
getResources().getString("htmlexportdialog.targetIsNotWritable")); //$NON-NLS-1$
return false;
}
final String message = MessageFormat.format(getResources().getString
("htmlexportdialog.targetExistsWarning"), //$NON-NLS-1$
new Object[]{filename});
getStatusBar().setStatus(StatusType.WARNING, message);
}
try
{
final File dataDir = new File(getDataFilename());
final File baseDir = new File(""); //$NON-NLS-1$
if (IOUtils.getInstance().isSubDirectory(baseDir, dataDir) == false)
{
getStatusBar().setStatus(StatusType.ERROR,
getResources().getString("htmlexportdialog.targetPathIsAbsolute")); //$NON-NLS-1$
return false;
}
}
catch (Exception e)
{
getStatusBar().setStatus(StatusType.ERROR, "error.validationfailed"); //$NON-NLS-1$
return false;
}
return true;
}
protected boolean performConfirm()
{
final String filename = getFilename();
final File f = new File(filename).getAbsoluteFile();
if (f.exists())
{
final String key1 = "htmlexportdialog.targetOverwriteConfirmation"; //$NON-NLS-1$
final String key2 = "htmlexportdialog.targetOverwriteTitle"; //$NON-NLS-1$
if (JOptionPane.showConfirmDialog(this,
MessageFormat.format(getResources().getString(key1),
new Object[]{getFilename()}),
getResources().getString(key2),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)
== JOptionPane.NO_OPTION)
{
return false;
}
}
return true;
}
protected String getConfigurationSuffix()
{
return "_html-zip-export"; //$NON-NLS-1$
}
protected String getResourceBaseName()
{
return HtmlExportGUIModule.BASE_RESOURCE_CLASS;
}
protected String getConfigurationPrefix()
{
return "org.pentaho.reporting.engine.classic.core.modules.gui.html.zip."; //$NON-NLS-1$
}
}