package name.abuchen.portfolio.ui.util.chart; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.text.NumberFormat; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.util.AbstractCSVExporter; import org.apache.commons.csv.CSVPrinter; import org.eclipse.swt.widgets.Control; import org.swtchart.ISeries; public class ScatterChartCSVExporter extends AbstractCSVExporter { private final ScatterChart chart; private NumberFormat valueFormat = new DecimalFormat("#,##0.00"); //$NON-NLS-1$ public ScatterChartCSVExporter(ScatterChart viewer) { this.chart = viewer; } public void setValueFormat(NumberFormat valueFormat) { this.valueFormat = valueFormat; } @Override protected Control getControl() { return chart; } @Override protected void writeToFile(File file) throws IOException { try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)) { CSVPrinter printer = new CSVPrinter(writer); printer.setStrategy(STRATEGY); // write header printer.print(Messages.ColumnDataSeries); printer.print(chart.getAxisSet().getXAxis(0).getTitle().getText()); printer.print(chart.getAxisSet().getYAxis(0).getTitle().getText()); printer.println(); // write body ISeries[] series = chart.getSeriesSet().getSeries(); for (ISeries serie : series) { printer.print(serie.getId()); printer.print(valueFormat.format(serie.getXSeries()[0])); printer.print(valueFormat.format(serie.getYSeries()[0])); printer.println(); } } } }