From 04b55fce0043fbf61f51eba4cd8d4a0bccc6864b Mon Sep 17 00:00:00 2001 From: ebner Date: Tue, 5 May 2015 08:54:28 +0200 Subject: [PATCH] removed dependency to jline same or better performance can be reached by jfree with correct tuning --- ch.psi.plot/pom.xml | 4 +- .../java/ch/psi/plot/jlchart/LinePlot.java | 310 ------------------ ch.psi.plot/src/test/java/Frame.java | 93 ------ ch.psi.plot/src/test/java/LinePlotTest.java | 4 +- 4 files changed, 4 insertions(+), 407 deletions(-) delete mode 100644 ch.psi.plot/src/main/java/ch/psi/plot/jlchart/LinePlot.java delete mode 100644 ch.psi.plot/src/test/java/Frame.java diff --git a/ch.psi.plot/pom.xml b/ch.psi.plot/pom.xml index 3658ea8..2d9e507 100644 --- a/ch.psi.plot/pom.xml +++ b/ch.psi.plot/pom.xml @@ -22,11 +22,11 @@ 4.8.2 test - + org.jzy3d jzy3d-api diff --git a/ch.psi.plot/src/main/java/ch/psi/plot/jlchart/LinePlot.java b/ch.psi.plot/src/main/java/ch/psi/plot/jlchart/LinePlot.java deleted file mode 100644 index fca6c48..0000000 --- a/ch.psi.plot/src/main/java/ch/psi/plot/jlchart/LinePlot.java +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. - */ -package ch.psi.plot.jlchart; - -import ch.psi.plot.LinePlotBase; -import ch.psi.plot.LinePlotSeries; -import ch.psi.plot.utils.SwingUtils; -import fr.esrf.tangoatk.widget.util.chart.DataList; -import fr.esrf.tangoatk.widget.util.chart.JLAxis; -import fr.esrf.tangoatk.widget.util.chart.JLChart; -import fr.esrf.tangoatk.widget.util.chart.JLDataView; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.util.ArrayList; -import java.util.Random; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; - -/** - * - */ -public class LinePlot extends LinePlotBase { - - JLChart plot; - - final ArrayList views = new ArrayList<>(); - - public LinePlot() { - super(); - setRequireUpdateOnAppend(false); - } - - @Override - public void setBackground(Color c){ - super.setBackground(c); - if (plot!=null){ - plot.setBackground(c); - } - } - - - static final Color[] defaultColors = new Color[]{Color.RED,Color.BLUE,Color.GREEN,Color.ORANGE,Color.MAGENTA,Color.CYAN,Color.YELLOW,Color.PINK,Color.LIGHT_GRAY,Color.GRAY}; - Random random; - - int colorIndex=0; - @Override - protected Object onAddedSeries(LinePlotSeries series) { - JLDataView view = new JLDataView(); - Color color = series.getColor(); - if (color==null){ - if (colorIndex < defaultColors.length) { - color = defaultColors[colorIndex%10]; - colorIndex++; - } - if (color==null){ - if (random==null) - random = new Random(1000);// Generate a random color, but repeatable for same graphs. - color = SwingUtils.generateRandomColor(random); - } - } - view.setColor(color); - //view.setLineWidth(1); - - int markerSize = 4; - view.setName(series.getName()); - view.setMarkerSize(markerSize); - view.setMarkerColor(color); - - view.setViewType(JLDataView.TYPE_LINE); - - if (markerSize > 0) { - view.setMarker(JLDataView.MARKER_DOT); - } else { - view.setMarker(JLDataView.MARKER_NONE); - } - - if (series.getAxisY() == 2) { - plot.getY2Axis().addDataView(view); - } else { - plot.getY1Axis().addDataView(view); - } - return view; - } - - JLDataView getDataView(LinePlotSeries series) { - return (JLDataView) (series.getToken()); - } - - @Override - protected void onRemovedSeries(LinePlotSeries series) { - JLDataView view = getDataView(series); - for (int i = 0; i < plot.getY1Axis().getViewNumber(); i++) { - if (view.getName().equals(plot.getY1Axis().getDataView(i).getName())) { - plot.getY1Axis().removeDataView(view); - } - - } - for (int i = 0; i < plot.getY2Axis().getViewNumber(); i++) { - if (view.getName().equals(plot.getY2Axis().getDataView(i).getName())) { - plot.getY2Axis().removeDataView(view); - } - } - } - - @Override - protected void onAppendData(LinePlotSeries series, double x, double y) { - JLDataView view = getDataView(series); - if (view != null) - { - if (isUpdatesEnabled()) - plot.addData(view, x, y); - else - view.add(x, y); - if (series.getMaxItemCount()>0){ - view.garbagePointLimit(series.getMaxItemCount()); - } - } - } - - @Override - protected void onSetData(LinePlotSeries series, double[] x, double[] y) { - JLDataView view = getDataView(series); - if (view != null) { - view.setData(x, y); - if (series.getMaxItemCount()>0){ - view.garbagePointLimit(series.getMaxItemCount()); - } - } - } - - @Override - public double[][] getSeriesData(LinePlotSeries series) { - JLDataView view = getDataView(series); - double[] x = new double[view.getDataLength()]; - double[] y = new double[x.length]; - int index = 0; - DataList data = view.getData(); - while (data != null) { - if (index >= x.length) { - break; - } - x[index] = data.x; - y[index] = data.y; - index++; - data = data.next; - } - return new double[][]{x, y}; - } - - @Override - protected void onShown() { - addKeyBindings(); - } - - @Override - protected void createChart() { - super.createChart(); - - plot = new JLChart(); - plot.getXAxis().setAnnotation(JLAxis.VALUE_ANNO); - //plot.getXAxis().setLabelFormat(JLAxis.SCIENTIFIC_FORMAT); - plot.getY1Axis().setAutoScale(true); - plot.getY2Axis().setAutoScale(true); - plot.getXAxis().setAutoScale(true); - plot.getY1Axis().setGridVisible(true); - plot.getXAxis().setGridVisible(true); - - /* - plot.getY1Axis().setAutoScale(false); - plot.getY2Axis().setAutoScale(false); - plot.getXAxis().setAutoScale(false); - plot.getY1Axis().setMinimum(0); - plot.getY1Axis().setMaximum(10); - plot.getY2Axis().setMinimum(0); - plot.getY2Axis().setMaximum(10); - plot.getXAxis().setMinimum(0); - plot.getXAxis().setMaximum(10); - */ - plot.setLabelVisible(false); - plot.setBackground(getBackground()); - - setLayout(new BorderLayout()); - add(plot); - setPreferredSize(new Dimension(PREFERRED_WIDTH, PREFERRED_HEIGHT)); - - plot.setHeader(getTitle()); - plot.getY1Axis().setName(getAxis(AxisId.Y).getLabel()); - plot.getXAxis().setName(getAxis(AxisId.X).getLabel()); - } - - @Override - protected void onTitleChanged() { - plot.setHeader(getTitle()); - if(getTitleFont()!=null) - plot.setHeaderFont(getTitleFont()); - } - - @Override - protected void onAxisLabelChanged(AxisId axis) { - switch (axis){ - case X: - plot.getXAxis().setName(getAxis(AxisId.X).getLabel()); - break; - case Y: - plot.getY1Axis().setName(getAxis(AxisId.Y).getLabel()); - break; - - } - } - - @Override - protected void onAxisRangeChanged(AxisId axisId) { - JLAxis axis = null; - switch (axisId) { - case X: - axis = plot.getXAxis(); - break; - case Y: - axis = plot.getY1Axis(); - break; - default: - return; - } - axis.setAutoScale(getAxis(axisId).isAutoRange()); - axis.setMinimum(getAxis(axisId).getMin()); - axis.setMaximum(getAxis(axisId).getMax()); - update(true); - } - - - @Override - protected void createPopupMenu() { - super.createPopupMenu(); - - //Remove duplicated menu items - JMenuItem dummy=new JMenuItem(); - plot.addMenuItem(dummy); - JPopupMenu menu = (JPopupMenu) dummy.getParent(); - for (int index=9;index>=6;index--) - menu.remove(index); - menu.remove(dummy); - - } - - @Override - public void updateSeries(LinePlotSeries series) { - doUpdate();//TODO - } - - @Override - public void doUpdate() { - plot.repaint(); - } - - private void addKeyBindings() { - //The zoom method ois not doing what I expecte, and no documentation... - /* - plot.setFocusable( true ); - plot.requestFocusInWindow(); - plot.addKeyListener(new KeyListener() { - - @Override - public void keyTyped(KeyEvent e) { - } - - @Override - public void keyPressed(KeyEvent e) { - doUpdate(); - System.out.println("Total " + plot.getXAxis().getMinimum() + "->" + plot.getXAxis().getMaximum()); - System.out.println("Zoom " + plot.getXAxis().getMin() + "->" + plot.getXAxis().getMax()); - if (plot.isZoomed()){ - if (e.getKeyCode()==KeyEvent.VK_RIGHT){ - double w = plot.getXAxis().getMax()-plot.getXAxis().getMin(); - double r = plot.getXAxis().getMax() + w/10; - //r = Math.min(r,plot.getXAxis().getMaximum()); - plot.getXAxis().zoom((int)(r-w),(int)r); - System.out.println("Zooming to " + ((int)(r-w)) + "-" + ((int)r)); - requestUpdate(); - - } - else if (e.getKeyCode()==KeyEvent.VK_LEFT){ - double w = plot.getXAxis().getMax()-plot.getXAxis().getMin(); - double l = plot.getXAxis().getMin() - w/10; - //l = Math.max(l,plot.getXAxis().getMinimum()); - plot.getXAxis().zoom((int)l,(int)(l+w)); - System.out.println("Zooming to " + ((int)l) + "-" + ((int)(l+w))); - requestUpdate(); - } - } - } - - @Override - public void keyReleased(KeyEvent e) { - - } - }); - */ - } - - protected void addPopupMenuItem(final JMenuItem item) { - if (item == null) { - plot.addSeparator(); - } else { - plot.addMenuItem(item); - } - } - -} diff --git a/ch.psi.plot/src/test/java/Frame.java b/ch.psi.plot/src/test/java/Frame.java deleted file mode 100644 index 9e44df4..0000000 --- a/ch.psi.plot/src/test/java/Frame.java +++ /dev/null @@ -1,93 +0,0 @@ - -import ch.psi.plot.LinePlotSeries; - -/* - * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. - */ - -/** - * - * @author gobbo_a - */ -public class Frame extends javax.swing.JFrame { - - /** - * Creates new form Frame - */ - public Frame() { - initComponents(); - LinePlotSeries series = new LinePlotSeries("Test"); - plot.addSeries(series); - series.appendData(1,3); - series.appendData(2,4); - series.appendData(4,3); - } - - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - plot = new ch.psi.plot.jlchart.LinePlot(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - - plot.setTitle("Frame Test"); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(plot, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - ); - - pack(); - }// //GEN-END:initComponents - - /** - * @param args the command line arguments - */ - public static void main(String args[]) { - /* Set the Nimbus look and feel */ - // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } - // - - /* Create and display the form */ - java.awt.EventQueue.invokeLater(new Runnable() { - public void run() { - new Frame().setVisible(true); - } - }); - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private ch.psi.plot.jlchart.LinePlot plot; - // End of variables declaration//GEN-END:variables -} diff --git a/ch.psi.plot/src/test/java/LinePlotTest.java b/ch.psi.plot/src/test/java/LinePlotTest.java index da23646..f4dda6b 100644 --- a/ch.psi.plot/src/test/java/LinePlotTest.java +++ b/ch.psi.plot/src/test/java/LinePlotTest.java @@ -20,8 +20,8 @@ public class LinePlotTest { //for(int i=0;i<10;i++) { //LinePlot linePlot = ServiceLoader.load(LinePlot.class).iterator().next(); - LinePlot linePlot = new ch.psi.plot.jlchart.LinePlot(); - //LinePlot linePlot = new ch.psi.plot.jfree.LinePlot(); +// LinePlot linePlot = new ch.psi.plot.jlchart.LinePlot(); + LinePlot linePlot = new ch.psi.plot.jfree.LinePlot(); //LinePlot linePlot = new ch.psi.plot.javafx.LinePlot() ; linePlot.setTitle("Title");