1 package nl.tudelft.simulation.dsol.swing.charts.xy;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import org.jfree.data.DomainOrder;
8 import org.jfree.data.general.AbstractSeriesDataset;
9 import org.jfree.data.general.DatasetChangeEvent;
10 import org.jfree.data.general.DatasetChangeListener;
11
12 import nl.tudelft.simulation.language.filters.FilterInterface;
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class XYDataset extends AbstractSeriesDataset implements org.jfree.data.xy.XYDataset, DatasetChangeListener
27 {
28
29
30 private static final long serialVersionUID = 1L;
31
32
33 private XYSeries[] series = new XYSeries[0];
34
35
36
37
38 public XYDataset()
39 {
40 super();
41 this.fireDatasetChanged();
42 }
43
44
45 @Override
46 public void datasetChanged(final DatasetChangeEvent arg0)
47 {
48 if (arg0 != null)
49 {
50 this.fireDatasetChanged();
51 }
52 }
53
54
55
56
57
58 public synchronized void addSeries(final XYSeries dataset)
59 {
60 dataset.addChangeListener(this);
61 List<XYSeries> list = new ArrayList<XYSeries>(Arrays.asList(this.series));
62 list.add(dataset);
63 this.series = list.toArray(new XYSeries[list.size()]);
64 this.fireDatasetChanged();
65 }
66
67
68 @Override
69 public DomainOrder getDomainOrder()
70 {
71 return DomainOrder.ASCENDING;
72 }
73
74
75 @Override
76 public int getItemCount(final int serie)
77 {
78 return this.series[serie].getItemCount();
79 }
80
81
82 @Override
83 public double getXValue(final int serie, final int item)
84 {
85 return this.series[serie].getXValue(item);
86 }
87
88
89 @Override
90 public double getYValue(final int serie, final int item)
91 {
92 return this.series[serie].getYValue(item);
93 }
94
95
96 @Override
97 public int getSeriesCount()
98 {
99 return this.series.length;
100 }
101
102
103
104
105
106 public String getSeriesName(final int serie)
107 {
108 return this.series[serie].getSeriesName();
109 }
110
111
112 @Override
113 public Number getX(final int serie, final int item)
114 {
115 return Double.valueOf(this.series[serie].getXValue(item));
116 }
117
118
119 @Override
120 public Number getY(final int serie, final int item)
121 {
122 return Double.valueOf(this.series[serie].getYValue(item));
123 }
124
125
126
127
128
129 public void setFilter(final FilterInterface filter)
130 {
131 for (int i = 0; i < this.series.length; i++)
132 {
133 this.series[i].setFilter(filter);
134 }
135 }
136
137
138 @Override
139 public Comparable<?> getSeriesKey(final int seriesNumber)
140 {
141 return this.series[seriesNumber].getSeriesName();
142 }
143
144 }