package de.rub.nds.eccjava.view.curve; import de.rub.nds.eccjava.controller.AppController; import de.rub.nds.eccjava.curve.Curve; import de.rub.nds.eccjava.curve.DivisionException; import de.rub.nds.eccjava.curve.Oracle; import de.rub.nds.eccjava.curve.Point; import java.awt.Color; import java.math.BigInteger; import java.util.List; import org.apache.log4j.Logger; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.annotations.XYTextAnnotation; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.xy.XYDataItem; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; /** * * @author Juraj Somorovsky - [email protected] * @version 0.1 */ public class CurveGraphPanel extends ChartPanel { private static CurveGraphPanel INSTANCE = null; private static final AppController appController = new AppController(); private static XYSeries eccSeries; private static final Logger LOG = Logger.getLogger(CurveGraphPanel.class); private CurveGraphPanel(JFreeChart chart) { super(chart); } public static CurveGraphPanel getInstance() { if (INSTANCE == null) { eccSeries = new XYSeries("ecc", false); XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(eccSeries); JFreeChart chart = ChartFactory.createScatterPlot(null, null, null, dataset, PlotOrientation.VERTICAL, false, true, false); INSTANCE = new CurveGraphPanel(chart); XYItemRenderer renderer = chart.getXYPlot().getRenderer(); renderer.setSeriesPaint(2, Color.BLACK); } return INSTANCE; } public void showAnnotations() { XYItemRenderer renderer = getChart().getXYPlot().getRenderer(); renderer.removeAnnotations(); for (int i = 0; i < eccSeries.getItemCount(); i++) { XYDataItem item = (XYDataItem) eccSeries.getDataItem(i); XYTextAnnotation annon = new XYTextAnnotation(new Integer(i).toString(), item.getX().longValue(), item .getY().longValue()); renderer.addAnnotation(annon); } } public void removeAnnotations() { XYItemRenderer renderer = getChart().getXYPlot().getRenderer(); renderer.removeAnnotations(); } public void updateSeries(Point point) { if (!point.isInfinity()) { eccSeries.add(point.getX(), point.getY()); } } public void clearSeries() { eccSeries.clear(); } }