/* * 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.demo.ancient.demo; import java.awt.Color; import java.awt.geom.Point2D; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot; import org.pentaho.reporting.engine.classic.core.ElementAlignment; import org.pentaho.reporting.engine.classic.core.MasterReport; import org.pentaho.reporting.engine.classic.core.TableDataFactory; import org.pentaho.reporting.engine.classic.core.elementfactory.TextFieldElementFactory; import org.pentaho.reporting.engine.classic.core.modules.gui.base.PreviewDialog; import org.pentaho.reporting.engine.classic.demo.util.DefaultCloseHandler; import org.pentaho.reporting.engine.classic.demo.util.DemoHandler; import org.pentaho.reporting.engine.classic.demo.util.PreviewHandler; import org.pentaho.reporting.libraries.base.util.FloatDimension; /** * A very simple JFreeReport demo. The purpose of this demo is to illustrate the basic steps required to connect a * report definition with some data and display a report preview on-screen. * <p/> * In this example, the report definition is created in code. It is also possible to read a report definition from an * XML file...that is demonstrated elsewhere. * * @author David Gilbert */ public class HelloWorld implements DemoHandler { /** * A helper class to make this demo accessible from the DemoFrontend. */ private class HelloWorldPreviewHandler implements PreviewHandler { protected HelloWorldPreviewHandler() { } public void attemptPreview() { executeReport(); } } /** * Creates and displays a simple report. */ public HelloWorld() { } protected void executeReport() { final MasterReport report = createReportDefinition(); report.setDataFactory(new TableDataFactory ("default", createData())); final PreviewDialog preview = new PreviewDialog(report); preview.addWindowListener(new DefaultCloseHandler()); preview.pack(); preview.setVisible(true); } /** * Creates a small dataset to use in a report. JFreeReport always reads data from a <code>TableModel</code> * instance. * * @return a dataset. */ private TableModel createData() { final Object[] columnNames = new String[]{"Column1", "Column2"}; final DefaultTableModel result = new DefaultTableModel(columnNames, 1); result.setValueAt("Hello\n", 0, 0); result.setValueAt("World!\n", 0, 1); return result; } /** * Creates a report definition. * * @return a report definition. */ private MasterReport createReportDefinition() { final MasterReport report = new MasterReport(); report.setName(getDescription()); TextFieldElementFactory factory = new TextFieldElementFactory(); factory.setName("T1"); factory.setAbsolutePosition(new Point2D.Float(0, 0)); factory.setMinimumSize(new FloatDimension(150, 12)); factory.setColor(Color.black); factory.setHorizontalAlignment(ElementAlignment.RIGHT); factory.setVerticalAlignment(ElementAlignment.MIDDLE); factory.setNullString("-"); factory.setFieldname("Column1"); report.getItemBand().addElement(factory.createElement()); factory = new TextFieldElementFactory(); factory.setName("T2"); factory.setAbsolutePosition(new Point2D.Float(200, 0)); factory.setMinimumSize(new FloatDimension(150, 12)); factory.setColor(Color.black); factory.setHorizontalAlignment(ElementAlignment.LEFT); factory.setVerticalAlignment(ElementAlignment.MIDDLE); factory.setNullString("-"); factory.setFieldname("Column2"); report.getItemBand().addElement(factory.createElement()); return report; } /** * Returns a short description of the demo. * * @return a description of this report. */ protected String getDescription() { return "A Very Simple Report"; } public String getDemoName() { return "Hello World Demo (External)"; } public PreviewHandler getPreviewHandler() { return new HelloWorldPreviewHandler(); } /** * The starting point for the "Hello World" demo application. * * @param args ignored. */ public static void main(final String[] args) { // this also installs the log. // initialize JFreeReport ClassicEngineBoot.getInstance().start(); //final HelloWorld app = new HelloWorld().executeReport(); } }