/******************************************************************************* * Copyright (c) 2006, 2009 University of Edinburgh. * All rights reserved. This program and the accompanying materials * are made available under the terms of the BSD Licence, which * accompanies this feature and can be downloaded from * http://groups.inf.ed.ac.uk/pepa/update/licence.txt *******************************************************************************/ /* BarChartBuilder.java * * created by mtribast on 21 Feb 2008 * */ package uk.ac.ed.inf.common.ui.plotting.internal; import org.eclipse.birt.chart.model.attribute.LegendItemType; import org.eclipse.birt.chart.model.component.Series; import org.eclipse.birt.chart.model.component.impl.SeriesImpl; import org.eclipse.birt.chart.model.data.NumberDataSet; import org.eclipse.birt.chart.model.data.SeriesDefinition; import org.eclipse.birt.chart.model.data.TextDataSet; import org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl; import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl; import org.eclipse.birt.chart.model.data.impl.TextDataSetImpl; import org.eclipse.birt.chart.model.layout.Legend; import org.eclipse.birt.chart.model.type.BarSeries; import org.eclipse.birt.chart.model.type.impl.BarSeriesImpl; import uk.ac.ed.inf.common.ui.plotting.data.InfoWithAxes; /** * @author mtribast * */ public class BarChartBuilder extends ChartWithAxesBuilder { private SeriesDefinition xSeriesDefinition; public BarChartBuilder(InfoWithAxes info) { super(info, true); } @Override protected void buildXAxis() { super.buildXAxis(); // overwrites previous settings xAxis.getMajorGrid().getLineAttributes().setVisible(false); xAxis.getLabel().setVisible(false); } @Override protected void buildXSeries() { String[] values = info.getCategories(); TextDataSet categoryValues = TextDataSetImpl.create(values); Series seriesCategory = SeriesImpl.create(); //String key = "BarChartXSeries"; //provider.provide(key, values); seriesCategory.setDataSet(categoryValues); // Test for data definitions // seCategory.getDataDefinition().add(QueryImpl.create(key)); // Apply the color palette xSeriesDefinition = SeriesDefinitionImpl.create(); xSeriesDefinition.getSeriesPalette().shift(1); xAxis.getSeriesDefinitions().add(xSeriesDefinition); xSeriesDefinition.getSeries().add(seriesCategory); } /* * (non-Javadoc) * * @see com.ibm.examples.chart.widget.AbstractChartBuilder#buildYSeries() */ @Override protected void buildYSeries() { SeriesDefinition seriesDefinitionY = SeriesDefinitionImpl.create(); // seriesDefinitionY.setQuery(nextId()); yAxis.getSeriesDefinitions().add(seriesDefinitionY); //int i = 0; //String keyPrefix = "BarChartYSeries_"; for (uk.ac.ed.inf.common.ui.plotting.data.Series series : ((InfoWithAxes) info) .getYSeries()) { double[] values = series.getValues(); BarSeries barSeries = createBarSeries(series.getValues()); { //String key = keyPrefix + (i++); Double[] recordedValues = new Double[values.length]; for (int j = 0; j < recordedValues.length; j++) recordedValues[j] = values[j]; //provider.provide(key, recordedValues); //barSeries.getDataDefinition().add(QueryImpl.create(key)); } barSeries.setSeriesIdentifier(series.getLabel()); seriesDefinitionY.getSeriesPalette().shift(1); seriesDefinitionY.getSeries().add(barSeries); } } protected void handleLegend(Legend legend) { super.handleLegend(legend); legend.setItemType(LegendItemType.CATEGORIES_LITERAL); } private BarSeries createBarSeries(double[] values) { NumberDataSet orthoValuesDataSet1 = NumberDataSetImpl.create(values); BarSeries series = (BarSeries) BarSeriesImpl.create(); series.setRiserOutline(null); series.setDataSet(orthoValuesDataSet1); return series; } }