01: /*
02: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
03: */
04: package com.tc.admin;
05:
06: import java.awt.Color;
07: import java.text.SimpleDateFormat;
08: import org.jfree.chart.ChartFactory;
09: import org.jfree.chart.JFreeChart;
10: import org.jfree.chart.axis.DateAxis;
11: import org.jfree.chart.plot.XYPlot;
12: import org.jfree.chart.renderer.xy.XYItemRenderer;
13: import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
14: import org.jfree.data.time.TimeSeries;
15: import org.jfree.data.time.TimeSeriesCollection;
16: import org.jfree.data.xy.XYDataset;
17: import org.jfree.ui.RectangleInsets;
18:
19: public class DemoChartFactory {
20: public static JFreeChart getChart(TimeSeries ts) {
21: XYDataset dataset = createDataset(ts);
22: return createChart(dataset);
23: }
24:
25: private static JFreeChart createChart(XYDataset dataset) {
26: JFreeChart chart = ChartFactory.createTimeSeriesChart(
27: "Transaction Rate", "Time", "Txn Per Second", dataset,
28: true, true, false);
29:
30: chart.setBackgroundPaint(Color.white);
31:
32: XYPlot plot = (XYPlot) chart.getPlot();
33:
34: plot.setBackgroundPaint(Color.lightGray);
35: plot.setDomainGridlinePaint(Color.white);
36: plot.setRangeGridlinePaint(Color.white);
37: plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
38: plot.setDomainCrosshairVisible(true);
39: plot.setRangeCrosshairVisible(true);
40:
41: XYItemRenderer r = plot.getRenderer();
42:
43: if (r instanceof XYLineAndShapeRenderer) {
44: XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
45:
46: renderer.setBaseShapesVisible(true);
47: renderer.setBaseShapesFilled(true);
48: }
49:
50: DateAxis axis = (DateAxis) plot.getDomainAxis();
51: axis.setDateFormatOverride(new SimpleDateFormat("kk:mm:ss"));
52:
53: return chart;
54: }
55:
56: private static XYDataset createDataset(TimeSeries s1) {
57: TimeSeriesCollection dataset = new TimeSeriesCollection();
58:
59: dataset.addSeries(s1);
60:
61: dataset.setDomainIsPointsInTime(true);
62:
63: return dataset;
64: }
65: }
|