ch.unibe.iam.scg.archie.ui.charts.ConsultationMoneyChart.java Source code

Java tutorial

Introduction

Here is the source code for ch.unibe.iam.scg.archie.ui.charts.ConsultationMoneyChart.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Dennis Schenk, Peter Siska.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Dennis Schenk - initial implementation
 *     Peter Siska    - initial implementation
 *******************************************************************************/
package ch.unibe.iam.scg.archie.ui.charts;

import java.awt.Color;
import java.text.SimpleDateFormat;

import org.eclipse.swt.widgets.Composite;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;

/**
 * <p>
 * Creates a chart showing how much profit, income and costs we 
 * had with consultations of the last six months.
 * </p>
 * 
 * $Id: ConsultationMoneyChart.java 747 2009-07-23 09:14:53Z peschehimself $
 * 
 * @author Peter Siska
 * @author Dennis Schenk
 * @version $Rev: 747 $
 */
public class ConsultationMoneyChart extends AbstractChartComposite {

    private static final String CHART_TITLE = "Consultation Money";

    /**
     * @param parent
     * @param style
     */
    public ConsultationMoneyChart(Composite parent, int style) {
        super(parent, style);
    }

    /**
     * @see ch.unibe.iam.scg.archie.ui.charts.AbstractChartComposite#
     * initializeChart()
     */
    @Override
    protected JFreeChart initializeChart() {
        JFreeChart chart = ChartFactory.createTimeSeriesChart(ConsultationMoneyChart.CHART_TITLE, // title
                "", // x-axis label
                "Amount", // y-axis label
                (XYDataset) this.creator.getDataset(), // data
                true, // create legend?
                true, // generate tooltips?
                false // generate URLs?
        );

        // Set chart background color to it's parents background
        chart.setBackgroundPaint(new Color(this.parent.getBackground().getRed(),
                this.parent.getBackground().getGreen(), this.parent.getBackground().getBlue()));

        XYPlot plot = (XYPlot) chart.getPlot();
        plot.setDomainGridlinePaint(Color.lightGray);
        plot.setRangeGridlinePaint(Color.lightGray);
        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
        plot.setDomainCrosshairVisible(true);
        plot.setRangeCrosshairVisible(true);

        XYItemRenderer r = plot.getRenderer();
        if (r instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
            renderer.setBaseShapesVisible(true);
            renderer.setBaseShapesFilled(true);
            renderer.setDrawSeriesLineAsPath(true);
        }

        DateAxis axis = (DateAxis) plot.getDomainAxis();
        axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));

        return chart;
    }

    /** 
     * @see ch.unibe.iam.scg.archie.ui.charts.AbstractChartComposite#
     * initializeCreator()
     */
    @Override
    protected AbstractDatasetCreator initializeCreator() {
        return new ConsultationMoneyDatasetCreator(ConsultationMoneyChart.CHART_TITLE);
    }

    /**
     * @see ch.unibe.iam.scg.archie.ui.charts.AbstractChartComposite#refresh()
     */
    @Override
    public void refresh() {
        super.refresh();
    }

}