package name.abuchen.portfolio.ui.util.chart; import org.eclipse.jface.action.IMenuManager; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.swtchart.Chart; import org.swtchart.IAxis; import org.swtchart.IAxis.Position; import org.swtchart.ILineSeries; import org.swtchart.ISeries.SeriesType; import org.swtchart.LineStyle; public class ScatterChart extends Chart { private ChartContextMenu contextMenu; public ScatterChart(Composite parent) { super(parent, SWT.NONE); Color backColor = Display.getDefault().getSystemColor(SWT.COLOR_BLACK); setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); getTitle().setForeground(backColor); getLegend().setVisible(false); // x axis IAxis xAxis = getAxisSet().getXAxis(0); xAxis.getTitle().setForeground(backColor); xAxis.getTick().setForeground(backColor); // y axis IAxis yAxis = getAxisSet().getYAxis(0); yAxis.getTitle().setForeground(backColor); yAxis.getTick().setForeground(backColor); yAxis.setPosition(Position.Secondary); new ScatterChartToolTip(this); ZoomMouseWheelListener.attachTo(this); MovePlotKeyListener.attachTo(this); ZoomInAreaListener.attachTo(this); this.contextMenu = new ChartContextMenu(this); } public ILineSeries addScatterSeries(double[] xSeries, double[] ySeries, String label) { ILineSeries scatterSeries = (ILineSeries) getSeriesSet().createSeries(SeriesType.LINE, label); scatterSeries.setLineStyle(LineStyle.NONE); scatterSeries.setXSeries(xSeries); scatterSeries.setYSeries(ySeries); scatterSeries.setAntialias(SWT.ON); scatterSeries.setSymbolSize(10); return scatterSeries; } public void adjustRange() { try { setRedraw(false); getAxisSet().adjustRange(); ChartUtil.addMargins(this, 0.1); } finally { setRedraw(true); } } public void exportMenuAboutToShow(IMenuManager manager, String label) { this.contextMenu.exportMenuAboutToShow(manager, label); } }