📄 jfreereportdemo.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.
*
* --------------------
* JFreeReportDemo.java
* --------------------
* (C)opyright 2000-2003, by Simba Management Limited.
*
* Original Author: David Gilbert (for Simba Management Limited);
* Contributor(s): -;
*
* $Id: JFreeReportDemo.java,v 1.6 2003/11/07 18:33:48 taqua Exp $
*
* Changes (from 8-Feb-2002)
* -------------------------
* 08-Feb-2002 : Updated code to work with latest version of the JCommon class library (DG);
* 07-May-2002 : Demo now uses resource bundles for localisation...just need some translations
* now (DG);
* 16-May-2002 : Line delimiters adjusted
* get report definition from jar (getResource())
* close behaviour unified
* 05-Jun-2002 : Documentation
* 10-Jun-2002 : Updated code to work with latest version of the JCommon class library;
* 27-Aug-2002 : Added more demos
* 29-Aug-2002 : Downport to JDK 1.2.2
*/
package org.jfree.report.demo;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import org.jfree.report.Boot;
import org.jfree.report.JFreeReport;
import org.jfree.report.demo.helper.AboutAction;
import org.jfree.report.demo.helper.AbstractDemoFrame;
import org.jfree.report.modules.gui.base.PreviewFrame;
import org.jfree.report.modules.gui.base.components.ActionButton;
import org.jfree.report.modules.gui.base.components.ActionDowngrade;
import org.jfree.report.modules.gui.base.components.ActionMenuItem;
import org.jfree.report.modules.gui.base.components.FloatingButtonEnabler;
import org.jfree.report.modules.parser.base.ReportGenerator;
import org.jfree.report.util.Log;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.about.AboutFrame;
/**
* The main frame in the report demonstration application. This demo has huge reports
* added, so calling report 5 and 6 can require some patience.
* <p>
* If the system property "org.jfree.report.demo.DEBUG" is set to "true", debugging
* messages to System.out stream are enabled.
*
* @author David Gilbert
*/
public class JFreeReportDemo extends AbstractDemoFrame
{
/**
* A demo handler class.
*/
protected abstract static class DemoHandler
{
/**
* Launches a preview of the report demo.
*
* @param def the demo definition.
*/
public abstract void performPreview(DemoDefinition def);
}
/**
* A URL demo handler.
*/
protected class URLDemoHandler extends DemoHandler
{
/** The report definition URL. */
private final String definitionURL;
/**
* Creates a new handler.
*
* @param definitionURL the URL for the report definition.
*/
public URLDemoHandler(final String definitionURL)
{
this.definitionURL = definitionURL;
}
/**
* Performs the preview.
*
* @param def the demo definition.
*/
public void performPreview(final DemoDefinition def)
{
preview(definitionURL, def.getData());
}
}
/**
* A demo definition.
*/
protected static class DemoDefinition
{
/** The demo name. */
private String name;
/** The data for the demo. */
private TableModel data;
/** The demo handler. */
private DemoHandler handler;
/**
* Creates a new demo definition.
*
* @param name the demo name.
* @param data the data.
* @param handler the demo handler.
*/
public DemoDefinition(final String name, final TableModel data, final DemoHandler handler)
{
if (name == null)
{
throw new NullPointerException("Name must not be null");
}
if (data == null)
{
throw new NullPointerException("TableModel must not be null");
}
if (handler == null)
{
throw new NullPointerException("Handler must not be null");
}
this.name = name;
this.data = data;
this.handler = handler;
}
/**
* Returns the name of the demo.
*
* @return The name.
*/
public String getName()
{
return name;
}
/**
* Returns the data for the demo.
*
* @return The data.
*/
public TableModel getData()
{
return data;
}
/**
* Returns the demo handler.
*
* @return The demo handler.
*/
public DemoHandler getHandler()
{
return handler;
}
}
/**
* About action.
*/
private class DemoAboutAction extends AboutAction
{
/**
* Default constructor.
*/
public DemoAboutAction()
{
super(getResources());
}
/**
* Receives notification of an action event.
*
* @param event the event.
*/
public void actionPerformed(final ActionEvent event)
{
displayAbout();
}
}
/** About action. */
private AboutAction aboutAction;
/** A frame for displaying information about the demo application. */
private AboutFrame aboutFrame;
/** A tabbed pane for displaying the sample data sets. */
private final JTabbedPane tabbedPane;
/** A list of the available demos. */
private final List availableDemos;
/**
* Constructs a frame containing sample reports created using the JFreeReport Class Library.
*/
public JFreeReportDemo()
{
final Object[] arguments = new Object[]{JFreeReport.getInfo().getVersion()};
final String pattern = getResources().getString("main-frame.title.pattern");
setTitle(MessageFormat.format(pattern, arguments));
availableDemos = createAvailableDemos();
createActions();
// set up the menu
setJMenuBar(createMenuBar());
final JPanel content = (JPanel) getContentPane();
final JToolBar toolbar = createToolBar();
content.add(toolbar, BorderLayout.NORTH);
tabbedPane = new JTabbedPane();
tabbedPane.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
for (int i = 0; i < availableDemos.size(); i++)
{
final DemoDefinition dd = (DemoDefinition) availableDemos.get(i);
tabbedPane.addTab(dd.getName(),
RefineryUtilities.createTablePanel(dd.getData()));
}
content.add(tabbedPane);
final JPanel buttons = new JPanel();
buttons.setLayout(new GridLayout());
final ActionButton helpButton = new ActionButton();
helpButton.setAction(aboutAction);
FloatingButtonEnabler.getInstance().addButton(helpButton);
buttons.add(helpButton);
final ActionButton previewButton = new ActionButton();
previewButton.setAction(getPreviewAction());
FloatingButtonEnabler.getInstance().addButton(previewButton);
buttons.add(previewButton);
final ActionButton closeButton = new ActionButton();
closeButton.setAction(getCloseAction());
FloatingButtonEnabler.getInstance().addButton(closeButton);
buttons.add(closeButton);
buttons.setBorder(BorderFactory.createEmptyBorder(0, 4, 4, 4));
content.add(buttons, BorderLayout.SOUTH);
setContentPane(content);
}
/**
* Creates a list of the available demos.
*
* @return The list.
*/
protected List createAvailableDemos()
{
// create a couple of sample data sets
final TableModel data1 = new SampleData1();
final TableModel data2 = new SampleData2();
final TableModel data3 = new SampleData3();
final TableModel data4 = new SampleData4();
final ArrayList list = new ArrayList();
list.add(new DemoDefinition(createExampleName(1), data1,
new URLDemoHandler("/org/jfree/report/demo/report1.xml")));
list.add(new DemoDefinition(createExampleName(2), data2,
new URLDemoHandler("/org/jfree/report/demo/report2.xml")));
list.add(new DemoDefinition(createExampleName(3), data3,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -