From 73cdc280c01d7b03f1a99f0d6ef54b6342603698 Mon Sep 17 00:00:00 2001 From: Alexandre Gobbo Date: Fri, 29 Aug 2014 16:15:10 +0200 Subject: [PATCH] Added item count to LinePlotSeries --- .../src/main/java/ch/psi/plot/LinePlotSeries.java | 9 +++++++++ .../src/main/java/ch/psi/plot/PlotBase.java | 4 ++-- .../main/java/ch/psi/plot/javafx/LinePlot.java | 15 ++++++++++++++- .../src/main/java/ch/psi/plot/jfree/LinePlot.java | 4 +++- .../main/java/ch/psi/plot/jlchart/LinePlot.java | 6 ++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/ch.psi.plot/src/main/java/ch/psi/plot/LinePlotSeries.java b/ch.psi.plot/src/main/java/ch/psi/plot/LinePlotSeries.java index d7808f0..fa17f80 100644 --- a/ch.psi.plot/src/main/java/ch/psi/plot/LinePlotSeries.java +++ b/ch.psi.plot/src/main/java/ch/psi/plot/LinePlotSeries.java @@ -87,6 +87,15 @@ public class LinePlotSeries extends PlotSeries { return getPlot().getSeriesData(this)[0].length; } + private int maxItemCount=-1; + public int getMaxItemCount() { + return maxItemCount; + } + public void setMaxItemCount(int value) { + maxItemCount=value; + } + + //Tools public double getAverage() { double average = 0.0; diff --git a/ch.psi.plot/src/main/java/ch/psi/plot/PlotBase.java b/ch.psi.plot/src/main/java/ch/psi/plot/PlotBase.java index 0c161f2..b1fcdd3 100644 --- a/ch.psi.plot/src/main/java/ch/psi/plot/PlotBase.java +++ b/ch.psi.plot/src/main/java/ch/psi/plot/PlotBase.java @@ -76,7 +76,7 @@ abstract public class PlotBase implements Plot { try { doUpdate(); } catch (Exception ex) { - Logger.getLogger(PlotBase.class.getName()).log(Level.SEVERE, null, ex); + //Logger.getLogger(PlotBase.class.getName()).log(Level.SEVERE, null, ex); } } } @@ -282,7 +282,7 @@ abstract public class PlotBase implements Plot { try { updateSeries(series); } catch (Exception ex) { - Logger.getLogger(LinePlotBase.class.getName()).log(Level.SEVERE, null, ex); + //Logger.getLogger(LinePlotBase.class.getName()).log(Level.SEVERE, null, ex); } } }); diff --git a/ch.psi.plot/src/main/java/ch/psi/plot/javafx/LinePlot.java b/ch.psi.plot/src/main/java/ch/psi/plot/javafx/LinePlot.java index e81608a..140ac2c 100644 --- a/ch.psi.plot/src/main/java/ch/psi/plot/javafx/LinePlot.java +++ b/ch.psi.plot/src/main/java/ch/psi/plot/javafx/LinePlot.java @@ -131,6 +131,13 @@ public class LinePlot extends ch.psi.plot.LinePlotBase { return (XYChart.Series) (series.getToken()); } + LinePlotSeries getLinePlotSeries(XYChart.Series s) { + for (LinePlotSeries series:this.getAllSeries()) + if (series.getToken()==s) + return series; + return null; + } + @Override public void doUpdate() { if (mTimerFX != null) { @@ -305,7 +312,9 @@ public class LinePlot extends ch.psi.plot.LinePlotBase { // return; synchronized (seriesList) { for (Iterator it = seriesList.keySet().iterator(); it.hasNext();) { - XYChart.Series series = it.next(); + XYChart.Series series = it.next(); + LinePlotSeries lps = getLinePlotSeries(series); + int maxItemCount = (lps==null) ? -1 : lps.getMaxItemCount(); if (isPlottingSeries(series)) { ConcurrentLinkedQueue> queue = seriesList.get(series); //int count=0; @@ -320,6 +329,10 @@ public class LinePlot extends ch.psi.plot.LinePlotBase { } } series.getData().addAll(queue); + if ((maxItemCount>0)&&(series.getData().size()>maxItemCount)){ + series.getData().remove(0, series.getData().size()-maxItemCount); + } + queue.clear(); } diff --git a/ch.psi.plot/src/main/java/ch/psi/plot/jfree/LinePlot.java b/ch.psi.plot/src/main/java/ch/psi/plot/jfree/LinePlot.java index c9b05d1..70ba041 100644 --- a/ch.psi.plot/src/main/java/ch/psi/plot/jfree/LinePlot.java +++ b/ch.psi.plot/src/main/java/ch/psi/plot/jfree/LinePlot.java @@ -89,8 +89,10 @@ public class LinePlot extends LinePlotBase { @Override protected Object onAddedSeries(LinePlotSeries series) { final XYSeries s = new XYSeries(series.getName()); + if (series.getMaxItemCount()>0){ + s.setMaximumItemCount(series.getMaxItemCount()); + } data.addSeries(s); - return s; } 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 index 33e9efa..410cca6 100644 --- 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 @@ -129,6 +129,9 @@ public class LinePlot extends LinePlotBase { plot.addData(view, x, y); else view.add(x, y); + if (series.getMaxItemCount()>0){ + view.garbagePointLimit(series.getMaxItemCount()); + } } } @@ -137,6 +140,9 @@ public class LinePlot extends LinePlotBase { JLDataView view = getDataView(series); if (view != null) { view.setData(x, y); + if (series.getMaxItemCount()>0){ + view.garbagePointLimit(series.getMaxItemCount()); + } } }