Package org.openfaces.component.chart.impl.configuration.charts

Source Code of org.openfaces.component.chart.impl.configuration.charts.BarChartConfigurator

/*
* OpenFaces - JSF Component Library 2.0
* Copyright (C) 2007-2012, TeamDev Ltd.
* licensing@openfaces.org
* Unless agreed in writing the contents of this file are subject to
* the GNU Lesser General Public License Version 2.1 (the "LGPL" License).
* 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.
* Please visit http://openfaces.org/licensing/ for more details.
*/

package org.openfaces.component.chart.impl.configuration.charts;

import org.jfree.chart.plot.Plot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.openfaces.component.chart.BarChartView;
import org.openfaces.component.chart.Chart;
import org.openfaces.component.chart.ChartModel;
import org.openfaces.component.chart.ChartView;
import org.openfaces.component.chart.impl.ModelConverter;
import org.openfaces.component.chart.impl.ModelInfo;
import org.openfaces.component.chart.impl.ModelType;
import org.openfaces.component.chart.impl.configuration.BarsPainterConfigurator;
import org.openfaces.component.chart.impl.configuration.ConfigurableRenderer;
import org.openfaces.component.chart.impl.configuration.GridLabelsConfigurator;
import org.openfaces.component.chart.impl.configuration.ItemsColorConfigurator;
import org.openfaces.component.chart.impl.configuration.OutlineConfigurator;
import org.openfaces.component.chart.impl.configuration.ShadowConfigurator;
import org.openfaces.component.chart.impl.configuration.TooltipsConfigurator;
import org.openfaces.component.chart.impl.configuration.UrlsConfigurator;
import org.openfaces.component.chart.impl.plots.GridCategoryPlotAdapter;
import org.openfaces.component.chart.impl.plots.GridDatePlotAdapter;
import org.openfaces.component.chart.impl.plots.GridXYPlotAdapter;
import org.openfaces.component.chart.impl.renderers.BarRenderer3DAdapter;
import org.openfaces.component.chart.impl.renderers.BarRendererAdapter;
import org.openfaces.component.chart.impl.renderers.XYBarRendererAdapter;

/**
* @author Eugene Goncharov
*/
public class BarChartConfigurator extends GridChartConfigurator {

    public BarChartConfigurator(ChartModel model) {
        super(model);
    }

    public Plot configurePlot(Chart chart, ModelInfo info) {
        return createPlot(chart, info);
    }

    private Plot createPlot(Chart chart, ModelInfo info) {
        final BarChartView chartView = (BarChartView) chart.getChartView();

        if (info.getModelType().equals(ModelType.Number)) {
            XYDataset ds = ModelConverter.toXYSeriesCollection(info);
            XYBarRenderer renderer = new XYBarRendererAdapter();
            ConfigurableRenderer configurableRenderer = (ConfigurableRenderer) renderer;

            int seriesCount = ds != null ? ds.getSeriesCount() : 0;
            configure(chartView, configurableRenderer, seriesCount);

            final GridXYPlotAdapter xyPlotAdapter = new GridXYPlotAdapter(ds, renderer, chartView);
            initMarkers(chart, xyPlotAdapter);

            return xyPlotAdapter;
        }

        if (info.getModelType().equals(ModelType.Date)) {
            TimeSeriesCollection ds = ModelConverter.toTimeSeriesCollection(chart, info);
            XYBarRenderer renderer = new XYBarRendererAdapter();
            ConfigurableRenderer configurableRenderer = (ConfigurableRenderer) renderer;

            int seriesCount = ds != null ? ds.getSeriesCount() : 0;
            configure(chartView, configurableRenderer, seriesCount);

            final GridDatePlotAdapter datePlotAdapter = new GridDatePlotAdapter(ds, renderer, chartView);
            initMarkers(chart, datePlotAdapter);

            return datePlotAdapter;
        }

        CategoryDataset ds = ModelConverter.toCategoryDataset(info);
        int rowCount = ds != null ? ds.getRowCount() : 0;

        BarRenderer renderer = chartView.isEnable3D()
                ? new BarRenderer3DAdapter()
                : new BarRendererAdapter();

        ConfigurableRenderer configurableRenderer = (ConfigurableRenderer) renderer;
        configure(chartView, configurableRenderer, rowCount);

        if (chartView.isEnable3D() && renderer instanceof BarRenderer3DAdapter) {
            ((BarRenderer3DAdapter) renderer).setWallPaint(chartView.getWallColor());
        }

        final GridCategoryPlotAdapter gridCategoryPlot = new GridCategoryPlotAdapter(ds, renderer, chartView);
        initMarkers(chart, gridCategoryPlot);

        return gridCategoryPlot;
    }

    private void configure(ChartView chartView, ConfigurableRenderer configurableRenderer, int seriesCount) {
        configurableRenderer.addConfigurator(new ItemsColorConfigurator());
        configurableRenderer.addConfigurator(new ShadowConfigurator());
        configurableRenderer.addConfigurator(new BarsPainterConfigurator());
        configurableRenderer.addConfigurator(new OutlineConfigurator(seriesCount));
        configurableRenderer.addConfigurator(new GridLabelsConfigurator());
        configurableRenderer.addConfigurator(new TooltipsConfigurator());
        configurableRenderer.addConfigurator(new UrlsConfigurator());

        configurableRenderer.configure(chartView);
    }
}
TOP

Related Classes of org.openfaces.component.chart.impl.configuration.charts.BarChartConfigurator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.