/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.print.PageFormat;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import ilog.views.chart.IlvChart;
import ilog.views.chart.data.IlvDefaultDataSet;
import ilog.views.chart.print.IlvChartFlowObject;
import ilog.views.chart.renderer.IlvBarChartRenderer;
import ilog.views.util.IlvProductUtil;
import ilog.views.util.print.IlvFlow;
import ilog.views.util.print.IlvPrintableDocument;
import ilog.views.util.print.IlvPrintingController;
import ilog.views.util.print.IlvUnit;
/**
* A simple class that illustrate how chart and test can be mixed in a flow.
*/
public class PrintFlowExample extends JFrame {
/** The printing controller that handles the printing process. */
IlvPrintingController controller;
/**
* Initializes a new <code>PrintFlowExample</code> object.
*/
public PrintFlowExample() {
super("Printing Charts Together With Text");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
IlvChart chart = createChart();
// The toolbar to holds printing controls.
JToolBar toolbar = new JToolBar(JToolBar.HORIZONTAL);
toolbar.add(new AbstractAction("Print Setup") {
Override
public void actionPerformed(ActionEvent evt) {
printSetup();
}
});
toolbar.add(new AbstractAction("Print Preview") {
Override
public void actionPerformed(ActionEvent evt) {
printPreview();
}
});
// Creates the document.
IlvPrintableDocument document = new IlvPrintableDocument("ChartInFlow", PageFormat.PORTRAIT);
// Creates the printing controller, and associates it with our document.
controller = new IlvPrintingController(document);
// Gets the flow from the document.
IlvFlow flow = document.getFlow();
// Creates a new TextStyle to format the paragraphs and texts.
IlvFlow.TextStyle style = new IlvFlow.TextStyle();
// Initialize a new paragraph. Object of this paragraph are aligned with
// a center alignment, and text is rendered using a Dialog-20 font.
style.setAlignment(IlvFlow.TextStyle.CENTER_ALIGNMENT);
style.setFont(new Font("Dialog", Font.PLAIN, 20));
// apply the style
flow.setTextStyle(style);
// add a title.
flow.add("A Chart in a Flow");
// creates a new paragraph, keeping the current text style.
flow.newLine();
// Adds a chart to the flow. The chart is center justified, and covers
// 60% of the page width, with a aspect ratio of 0.75 between its width
// and height.
IlvChartFlowObject printChart = new IlvChartFlowObject(chart, flow, 60, 0, .75f);
flow.add(printChart, IlvFlow.BOTTOM_ALIGNMENT);
// Creates a new paragraph: first set its text style then create it with
// newLine().
style.setAlignment(IlvFlow.TextStyle.LEFT_ALIGNMENT);
style.setFont(new Font("Dialog", Font.PLAIN, 12));
flow.setTextStyle(style);
flow.newLine();
// A the text.
String text = "A flow consists on a list of printable objects of different types (text, charts, manager, etc...) that are printed sequencially in a document."
+ " Flow objects are instances of the ilog.views.printing.IlvFlow class and are directly obtained from the printable document by means of the "
+ "IlvPrintableDocument.getFlow() method (Note that theres only one flow per document). A flow object is responsible for creating the document "
+ "pages and performing their layout, positionning the printable object according to various printing parameters that may affect the pages format.";
flow.add(text);
// Creates a new paragraph. The text style is changed to specify a new
// font. This paragraph contains a text object and a chart.
style.setFont(new Font("Dialog", Font.PLAIN, 10));
flow.setTextStyle(style);
flow.newLine();
flow.newLine();
text = "Note: A flow may also mix chart and text in the same line";
flow.add(text);
// Creates the chart. The chart is centered on the text baseline.
printChart = new IlvChartFlowObject(chart, flow, new IlvUnit.Dimension(6, 5, IlvUnit.CM));
flow.add(printChart, IlvFlow.CENTER_BASELINE);
getContentPane().add(toolbar, BorderLayout.NORTH);
getContentPane().add(chart, BorderLayout.CENTER);
setSize(400, 300);
}
/**
* Show the preview panel.
*/
private void printPreview() {
controller.printPreview(this);
}
/**
* Show the chart setup dialog.
*/
private void printSetup() {
controller.setupDialog(this, true, true);
}
/**
* Returns a configured IlvChart instance.
*/
protected IlvChart createChart() {
IlvChart chart = new IlvChart();
chart.setAntiAliasing(true);
IlvBarChartRenderer r = new IlvBarChartRenderer();
chart.addRenderer(r, new IlvDefaultDataSet("DataSet 1", new double[] { 5, 1, 0, 9, 6, 11, 13, 5, 3, 9 }));
return chart;
}
public static final void main(String[] args) {
// This sample uses JViews Charts features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Charts Deployment license.
IlvProductUtil.DeploymentLicenseRequired(IlvProductUtil.JViews_Charts_Deployment);
SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
PrintFlowExample frame = new PrintFlowExample();
frame.setVisible(true);
}
});
}
}