Skip to content
Snippets Groups Projects
Commit da898f1b authored by Tim Molter's avatar Tim Molter
Browse files

Different implementation of PR #107

parent 8504276c
Branches
No related tags found
No related merge requests found
...@@ -58,6 +58,7 @@ import com.xeiam.xchart.demo.charts.line.LineChart05; ...@@ -58,6 +58,7 @@ import com.xeiam.xchart.demo.charts.line.LineChart05;
import com.xeiam.xchart.demo.charts.line.LineChart06; import com.xeiam.xchart.demo.charts.line.LineChart06;
import com.xeiam.xchart.demo.charts.realtime.RealtimeChart01; import com.xeiam.xchart.demo.charts.realtime.RealtimeChart01;
import com.xeiam.xchart.demo.charts.realtime.RealtimeChart02; import com.xeiam.xchart.demo.charts.realtime.RealtimeChart02;
import com.xeiam.xchart.demo.charts.realtime.RealtimeChart03;
import com.xeiam.xchart.demo.charts.scatter.ScatterChart01; import com.xeiam.xchart.demo.charts.scatter.ScatterChart01;
import com.xeiam.xchart.demo.charts.scatter.ScatterChart02; import com.xeiam.xchart.demo.charts.scatter.ScatterChart02;
import com.xeiam.xchart.demo.charts.scatter.ScatterChart03; import com.xeiam.xchart.demo.charts.scatter.ScatterChart03;
...@@ -86,6 +87,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { ...@@ -86,6 +87,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
/** real-time chart example */ /** real-time chart example */
final RealtimeChart01 realtimeChart01 = new RealtimeChart01(); final RealtimeChart01 realtimeChart01 = new RealtimeChart01();
final RealtimeChart02 realtimeChart02 = new RealtimeChart02(); final RealtimeChart02 realtimeChart02 = new RealtimeChart02();
final RealtimeChart03 realtimeChart03 = new RealtimeChart03();
Timer timer = new Timer(); Timer timer = new Timer();
/** /**
...@@ -153,7 +155,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { ...@@ -153,7 +155,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
public void run() { public void run() {
realtimeChart01.updateData(); realtimeChart01.updateData();
chartPanel.updateSeries(RealtimeChart01.SERIES_NAME, realtimeChart01.getyData()); chartPanel.updateSeries(RealtimeChart01.SERIES_NAME, null, realtimeChart01.getyData(), null);
} }
}; };
timer = new Timer(); timer = new Timer();
...@@ -167,7 +169,21 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { ...@@ -167,7 +169,21 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
public void run() { public void run() {
realtimeChart02.updateData(); realtimeChart02.updateData();
chartPanel.updateSeries(RealtimeChart02.SERIES_NAME, realtimeChart02.getxData(), realtimeChart02.getyData()); chartPanel.updateSeries(RealtimeChart02.SERIES_NAME, realtimeChart02.getxData(), realtimeChart02.getyData(), null);
}
};
timer = new Timer();
timer.scheduleAtFixedRate(chartUpdaterTask, 0, 500);
}
else if (chartInfo.getExampleChartName().startsWith("RealtimeChart03")) {
// set up real-time chart simulated data feed
TimerTask chartUpdaterTask = new TimerTask() {
@Override
public void run() {
realtimeChart03.updateData();
chartPanel.updateSeries(RealtimeChart02.SERIES_NAME, null, realtimeChart03.getyData(), realtimeChart03.getErrorBars());
} }
}; };
timer = new Timer(); timer = new Timer();
...@@ -321,6 +337,9 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { ...@@ -321,6 +337,9 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("RealtimeChart02 - Updating X-Axis Window", realtimeChart02.getChart())); defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("RealtimeChart02 - Updating X-Axis Window", realtimeChart02.getChart()));
category.add(defaultMutableTreeNode); category.add(defaultMutableTreeNode);
defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("RealtimeChart03 - Updating With Error Bars", realtimeChart03.getChart()));
category.add(defaultMutableTreeNode);
} }
/** /**
......
...@@ -70,7 +70,7 @@ public class RealtimeChart01 implements ExampleChart { ...@@ -70,7 +70,7 @@ public class RealtimeChart01 implements ExampleChart {
public void run() { public void run() {
realtimeChart01.updateData(); realtimeChart01.updateData();
chartPanel.updateSeries(SERIES_NAME, realtimeChart01.getyData()); chartPanel.updateSeries(SERIES_NAME, null, realtimeChart01.getyData(), null);
} }
}; };
......
...@@ -72,7 +72,7 @@ public class RealtimeChart02 implements ExampleChart { ...@@ -72,7 +72,7 @@ public class RealtimeChart02 implements ExampleChart {
public void run() { public void run() {
realtimeChart02.updateData(); realtimeChart02.updateData();
chartPanel.updateSeries(SERIES_NAME, realtimeChart02.getxData(), realtimeChart02.getyData()); chartPanel.updateSeries(SERIES_NAME, realtimeChart02.getxData(), realtimeChart02.getyData(), null);
} }
}; };
......
...@@ -141,4 +141,9 @@ public class RealtimeChart03 implements ExampleChart { ...@@ -141,4 +141,9 @@ public class RealtimeChart03 implements ExampleChart {
return yData; return yData;
} }
public List<Double> getErrorBars() {
return errorBars;
}
} }
...@@ -331,20 +331,18 @@ public class Series { ...@@ -331,20 +331,18 @@ public class Series {
return name; return name;
} }
public void replaceXData(Collection<?> newXData) { public void replaceData(Collection<?> newXData, Collection<? extends Number> newYData, Collection<? extends Number> newErrorBars) {
xData = newXData; // Sanity check
calculateMinMax(); if (newErrorBars != null && newErrorBars.size() != newYData.size()) {
throw new IllegalArgumentException("errorbars and Y-Axis sizes are not the same!!!");
} }
if (newXData.size() != newYData.size()) {
public void replaceYData(Collection<? extends Number> newYData) { throw new IllegalArgumentException("X and Y-Axis sizes are not the same!!!");
yData = newYData;
calculateMinMax();
} }
public void replaceErrroBarData(Collection<? extends Number> newErrorBars) { xData = newXData;
yData = newYData;
errorBars = newErrorBars; errorBars = newErrorBars;
calculateMinMax(); calculateMinMax();
} }
......
...@@ -275,76 +275,32 @@ public class XChartPanel extends JPanel { ...@@ -275,76 +275,32 @@ public class XChartPanel extends JPanel {
} }
/** /**
* update a series by only updating the Y-Axis data. The X-Axis data will be automatically generated as a list of increasing Integers starting from * Update a series by updating the X-Axis, Y-Axis and error bar data
* 1 and ending at the size of the new Y-Axis data list.
* *
* @param seriesName * @param seriesName
* @param newXData - set null to be automatically generated as a list of increasing Integers starting from
* 1 and ending at the size of the new Y-Axis data list.
* @param newYData * @param newYData
* @param newErrorBarData - set null if there are no error bars
* @return * @return
*/ */
public Series updateSeries(String seriesName, Collection<? extends Number> newYData) { public Series updateSeries(String seriesName, Collection<?> newXData, List<? extends Number> newYData, List<? extends Number> newErrorBarData) {
Series series = chart.getSeriesMap().get(seriesName); Series series = chart.getSeriesMap().get(seriesName);
if (series == null) { if (series == null) {
throw new IllegalArgumentException("Series name >" + seriesName + "< not found!!!"); throw new IllegalArgumentException("Series name >" + seriesName + "< not found!!!");
} }
series.replaceYData(newYData); if (newXData == null) {
// generate X-Data // generate X-Data
List<Integer> generatedXData = new ArrayList<Integer>(); List<Integer> generatedXData = new ArrayList<Integer>();
for (int i = 1; i < newYData.size() + 1; i++) { for (int i = 1; i <= newYData.size(); i++) {
generatedXData.add(i); generatedXData.add(i);
} }
series.replaceXData(generatedXData); series.replaceData(generatedXData, newYData, newErrorBarData);
// Re-display the chart
revalidate();
repaint();
return series;
} }
else {
/** series.replaceData(newXData, newYData, newErrorBarData);
* update a series by updating both the X-Axis and Y-Axis data
*
* @param seriesName
* @param newYData
* @return
*/
public Series updateSeries(String seriesName, Collection<?> newXData, List<? extends Number> newYData) {
Series series = chart.getSeriesMap().get(seriesName);
if (series == null) {
throw new IllegalArgumentException("Series name >" + seriesName + "< not found!!!");
}
series.replaceXData(newXData);
series.replaceYData(newYData);
// Re-display the chart
revalidate();
repaint();
return series;
}
/**
* update a series by updating the X-Axis, Y-Axis and error bar data
*
* @param seriesName
* @param newXData
* @param newYData
* @param newErrorBarData
* @return
*/
public Series updateSeries(String seriesName, Collection<?> newXData, List<? extends Number> newYData, List<? extends Number> newErrorBarData) {
Series series = chart.getSeriesMap().get(seriesName);
if (series == null) {
throw new IllegalArgumentException("Series name >" + seriesName + "< not found!!!");
} }
series.replaceXData(newXData);
series.replaceYData(newYData);
series.replaceErrroBarData(newErrorBarData);
// Re-display the chart // Re-display the chart
revalidate(); revalidate();
......
...@@ -81,9 +81,18 @@ public class AxisPair implements ChartPart { ...@@ -81,9 +81,18 @@ public class AxisPair implements ChartPart {
if (xData != null && xData.size() == 0) { if (xData != null && xData.size() == 0) {
throw new IllegalArgumentException("X-Axis data cannot be empty!!!"); throw new IllegalArgumentException("X-Axis data cannot be empty!!!");
} }
// Sanity check
if (errorBars != null && errorBars.size() != yData.size()) {
throw new IllegalArgumentException("errorbars and Y-Axis sizes are not the same!!!");
}
Series series = null; Series series = null;
if (xData != null) { if (xData != null) {
// Sanity check
if (xData.size() != yData.size()) {
throw new IllegalArgumentException("X and Y-Axis sizes are not the same!!!");
}
// inspect the series to see what kind of data it contains (Number, Date or String) // inspect the series to see what kind of data it contains (Number, Date or String)
Iterator<?> itr = xData.iterator(); Iterator<?> itr = xData.iterator();
Object dataPoint = itr.next(); Object dataPoint = itr.next();
...@@ -123,14 +132,6 @@ public class AxisPair implements ChartPart { ...@@ -123,14 +132,6 @@ public class AxisPair implements ChartPart {
series.setSeriesType(Series.SeriesType.Line); series.setSeriesType(Series.SeriesType.Line);
} }
// Sanity check
if (xData != null && xData.size() != yData.size()) {
throw new IllegalArgumentException("X and Y-Axis sizes are not the same!!!");
}
if (errorBars != null && errorBars.size() != yData.size()) {
throw new IllegalArgumentException("errorbars and Y-Axis sizes are not the same!!!");
}
if (seriesMap.keySet().contains(seriesName)) { if (seriesMap.keySet().contains(seriesName)) {
throw new IllegalArgumentException("Series name >" + seriesName + "< has already been used. Use unique names for each series!!!"); throw new IllegalArgumentException("Series name >" + seriesName + "< has already been used. Use unique names for each series!!!");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment