package com.vaadin.addon.spreadsheet.charts.converter;
import org.apache.poi.xssf.usermodel.XSSFChart;
import com.vaadin.addon.charts.Chart;
import com.vaadin.addon.charts.PointSelectEvent;
import com.vaadin.addon.charts.PointSelectListener;
import com.vaadin.addon.charts.model.Configuration;
import com.vaadin.addon.charts.model.Series;
import com.vaadin.addon.spreadsheet.ChartCreator;
import com.vaadin.addon.spreadsheet.Spreadsheet;
import com.vaadin.addon.spreadsheet.charts.converter.chartdata.ChartData;
import com.vaadin.addon.spreadsheet.charts.converter.confwriter.ChartDataToVaadinConfigWriter;
import com.vaadin.addon.spreadsheet.charts.converter.confwriter.SelectListeningDataSeries;
import com.vaadin.addon.spreadsheet.charts.converter.xssfreader.XSSFChartReader;
import com.vaadin.ui.Component;
public class DefaultChartCreator implements ChartCreator {
private ChartDataToVaadinConfigWriter chartDataToVaadinConfigWriter;
public DefaultChartCreator() {
chartDataToVaadinConfigWriter = new ChartDataToVaadinConfigWriter();
}
@Override
public Component createChart(XSSFChart chartXml, Spreadsheet spreadsheet) {
ChartData chartDefinition = new XSSFChartReader(spreadsheet, chartXml)
.readXSSFChart();
Configuration conf = chartDataToVaadinConfigWriter
.createConfigurationFromChartData(chartDefinition);
Chart chart = new Chart();
chart.setConfiguration(conf);
chart.addPointSelectListener(new PointSelectListener() {
@Override
public void onSelect(PointSelectEvent event) {
Series series = event.getSeries();
if (series instanceof SelectListeningDataSeries) {
((SelectListeningDataSeries) series).getSelectListener()
.selected();
}
}
});
return chart;
}
}