Added categories for cleaner tab layout
* Added estimated packet loss and next hop change count to node info panel
This commit is contained in:
parent
58db04ee64
commit
bba653f20c
10 changed files with 416 additions and 275 deletions
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: BarChartPanel.java,v 1.4 2010/09/15 15:52:28 nifi Exp $
|
||||
* $Id: BarChartPanel.java,v 1.5 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 5 jul 2008
|
||||
* Updated : $Date: 2010/09/15 15:52:28 $
|
||||
* $Revision: 1.4 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.5 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -67,6 +67,7 @@ public abstract class BarChartPanel extends JPanel implements Visualizer {
|
|||
private static final long serialVersionUID = 7664283678708048061L;
|
||||
|
||||
protected final CollectServer server;
|
||||
protected final String category;
|
||||
protected final String title;
|
||||
protected final String[] categories;
|
||||
protected final JFreeChart chart;
|
||||
|
@ -76,17 +77,18 @@ public abstract class BarChartPanel extends JPanel implements Visualizer {
|
|||
private boolean isShowingAllNodes = false;
|
||||
private int categoryOrder = 0;
|
||||
|
||||
protected BarChartPanel(CollectServer server, String title,
|
||||
protected BarChartPanel(CollectServer server, String category, String title,
|
||||
String chartTitle, String domainAxisLabel, String valueAxisLabel,
|
||||
String[] categories) {
|
||||
this(server, title, chartTitle, domainAxisLabel, valueAxisLabel, categories, true);
|
||||
this(server, category, title, chartTitle, domainAxisLabel, valueAxisLabel, categories, true);
|
||||
}
|
||||
|
||||
protected BarChartPanel(CollectServer server, String title,
|
||||
protected BarChartPanel(CollectServer server, String category, String title,
|
||||
String chartTitle, String domainAxisLabel, String valueAxisLabel,
|
||||
String[] categories, boolean stackedChart) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
this.title = title;
|
||||
this.categories = categories;
|
||||
|
||||
|
@ -137,6 +139,11 @@ public abstract class BarChartPanel extends JPanel implements Visualizer {
|
|||
add(chartPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return title;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: MapPanel.java,v 1.2 2010/09/06 22:32:56 nifi Exp $
|
||||
* $Id: MapPanel.java,v 1.3 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 3 jul 2008
|
||||
* Updated : $Date: 2010/09/06 22:32:56 $
|
||||
* $Revision: 1.2 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.3 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -124,13 +124,14 @@ public class MapPanel extends JPanel implements Visualizer, ActionListener, Mous
|
|||
private String mapName;
|
||||
|
||||
private final CollectServer server;
|
||||
private final String category;
|
||||
|
||||
private boolean hideNetwork = false;
|
||||
|
||||
|
||||
public MapPanel(CollectServer server) {
|
||||
public MapPanel(CollectServer server, String category) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
setPreferredSize(new Dimension(300, 200));
|
||||
|
||||
popupMenu = new JPopupMenu(getTitle());
|
||||
|
@ -221,6 +222,11 @@ public class MapPanel extends JPanel implements Visualizer, ActionListener, Mous
|
|||
// Visualizer
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return "Sensor Map";
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: NodeInfoPanel.java,v 1.4 2010/09/14 23:04:51 nifi Exp $
|
||||
* $Id: NodeInfoPanel.java,v 1.5 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,13 +34,15 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 6 sep 2010
|
||||
* Updated : $Date: 2010/09/14 23:04:51 $
|
||||
* $Revision: 1.4 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.5 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
|
@ -48,6 +50,7 @@ import javax.swing.JScrollPane;
|
|||
import javax.swing.JTable;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.DefaultTableCellRenderer;
|
||||
import javax.swing.table.JTableHeader;
|
||||
|
||||
import se.sics.contiki.collect.CollectServer;
|
||||
import se.sics.contiki.collect.Node;
|
||||
|
@ -62,77 +65,36 @@ public class NodeInfoPanel extends JPanel implements Visualizer {
|
|||
private static final long serialVersionUID = -1060893468047793431L;
|
||||
|
||||
private final CollectServer server;
|
||||
private final String category;
|
||||
private final JTable nodeTable;
|
||||
private final AbstractTableModel nodeModel;
|
||||
private final NodeModel nodeModel;
|
||||
private Node[] nodes;
|
||||
|
||||
public NodeInfoPanel(CollectServer server) {
|
||||
public NodeInfoPanel(CollectServer server, String category) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
|
||||
nodeModel = new AbstractTableModel() {
|
||||
nodeModel = new NodeModel();
|
||||
nodeTable = new JTable(nodeModel) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final long serialVersionUID = 1692207305977527004L;
|
||||
public Dimension getPreferredScrollableViewportSize() {
|
||||
return getPreferredSize();
|
||||
}
|
||||
|
||||
private final String[] COLUMN_NAMES = {
|
||||
"Node",
|
||||
"Packets Received",
|
||||
"Duplicates Received",
|
||||
"Average Inter-packet time",
|
||||
"Shortest Inter-packet time",
|
||||
"Longest Inter-packet time",
|
||||
};
|
||||
protected JTableHeader createDefaultTableHeader() {
|
||||
return new JTableHeader(columnModel) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Object getValueAt(int row, int col) {
|
||||
Node node = nodes[row];
|
||||
switch (col) {
|
||||
case 0:
|
||||
return node;
|
||||
case 1:
|
||||
return node.getSensorDataAggregator().getPacketCount();
|
||||
case 2:
|
||||
return node.getSensorDataAggregator().getDuplicateCount();
|
||||
case 3:
|
||||
return node.getSensorDataAggregator().getAveragePeriod();
|
||||
case 4: {
|
||||
long time = node.getSensorDataAggregator().getShortestPeriod();
|
||||
return time < Long.MAX_VALUE ? time : 0;
|
||||
}
|
||||
case 5:
|
||||
return node.getSensorDataAggregator().getLongestPeriod();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
public String getToolTipText(MouseEvent e) {
|
||||
int index = columnModel.getColumnIndexAtX(e.getPoint().x);
|
||||
int realIndex = index < 0 ? index : columnModel.getColumn(index).getModelIndex();
|
||||
return realIndex < 0 ? null : nodeModel.getColumnToolTip(realIndex);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public Class<?> getColumnClass(int c) {
|
||||
if (c == 0) {
|
||||
return Node.class;
|
||||
}
|
||||
if (c < 3) {
|
||||
return Integer.class;
|
||||
}
|
||||
if (c < 6) {
|
||||
return Long.class;
|
||||
}
|
||||
return super.getColumnClass(c);
|
||||
}
|
||||
|
||||
public String getColumnName(int col) {
|
||||
return COLUMN_NAMES[col];
|
||||
}
|
||||
|
||||
public int getColumnCount() {
|
||||
return COLUMN_NAMES.length;
|
||||
}
|
||||
|
||||
public int getRowCount() {
|
||||
return nodes == null ? 0 : nodes.length;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
nodeTable = new JTable(nodeModel);
|
||||
nodeTable.setFillsViewportHeight(true);
|
||||
nodeTable.setAutoCreateRowSorter(true);
|
||||
|
||||
|
@ -141,7 +103,7 @@ public class NodeInfoPanel extends JPanel implements Visualizer {
|
|||
renderer.setHorizontalAlignment(JLabel.RIGHT);
|
||||
nodeTable.setDefaultRenderer(Node.class, renderer);
|
||||
|
||||
// Add time renderer
|
||||
// Add renderer for time
|
||||
renderer = new DefaultTableCellRenderer() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
@ -152,6 +114,22 @@ public class NodeInfoPanel extends JPanel implements Visualizer {
|
|||
};
|
||||
nodeTable.setDefaultRenderer(Long.class, renderer);
|
||||
|
||||
// Add renderer for double
|
||||
renderer = new DefaultTableCellRenderer() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public void setValue(Object value) {
|
||||
if (value == null) {
|
||||
setText(null);
|
||||
}
|
||||
double v = (Double) value + 0.0005;
|
||||
int dec = ((int)(v * 1000)) % 1000;
|
||||
setText((long)v + "." + (dec > 99 ? "" : "0") + (dec > 9 ? "" : "0") + dec);
|
||||
}
|
||||
};
|
||||
renderer.setHorizontalAlignment(JLabel.RIGHT);
|
||||
nodeTable.setDefaultRenderer(Double.class, renderer);
|
||||
|
||||
add(new JScrollPane(nodeTable), BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
|
@ -160,6 +138,11 @@ public class NodeInfoPanel extends JPanel implements Visualizer {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return "Node Info";
|
||||
|
@ -226,16 +209,92 @@ public class NodeInfoPanel extends JPanel implements Visualizer {
|
|||
time /= 1000;
|
||||
if (time > 24 * 60 * 60) {
|
||||
long days = time / (24 * 60 * 60);
|
||||
sb.append(days).append(" days, ");
|
||||
sb.append(days).append(days > 1 ? " days, " : " day, ");
|
||||
time -= days * 24 * 60 * 60;
|
||||
}
|
||||
if (time > 60 * 60) {
|
||||
long hours = time / (60 * 60);
|
||||
sb.append(hours).append(" hours, ");
|
||||
sb.append(hours).append(hours > 1 ? " hours, " : " hour, ");
|
||||
time -= hours * 60 * 60;
|
||||
}
|
||||
sb.append(time / 60).append(" min, ").append(time % 60).append(" sec");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private class NodeModel extends AbstractTableModel {
|
||||
|
||||
private static final long serialVersionUID = 1692207305977527004L;
|
||||
|
||||
private final String[] COLUMN_NAMES = {
|
||||
"Node", "Node",
|
||||
"Packets", "Packets Received",
|
||||
"Duplicates", "Duplicate Packets Received",
|
||||
"Estimated Lost", "Estimated Lost Packets",
|
||||
"Average Hops", "Average Hops to Sink",
|
||||
"Next Hop Changes", "Next Hop Change Count",
|
||||
"Average Inter-packet time", "Average Inter-packet Time",
|
||||
"Shortest Inter-packet Time", "Shortest Inter-packet Time",
|
||||
"Longest Inter-packet Time", "Longest Inter-packet Time"
|
||||
};
|
||||
private final Class<?>[] COLUMN_TYPES = {
|
||||
Node.class,
|
||||
Integer.class,
|
||||
Integer.class,
|
||||
Integer.class,
|
||||
Double.class,
|
||||
Integer.class,
|
||||
Long.class,
|
||||
Long.class,
|
||||
Long.class
|
||||
};
|
||||
|
||||
public Object getValueAt(int row, int col) {
|
||||
Node node = nodes[row];
|
||||
switch (col) {
|
||||
case 0:
|
||||
return node;
|
||||
case 1:
|
||||
return node.getSensorDataAggregator().getPacketCount();
|
||||
case 2:
|
||||
return node.getSensorDataAggregator().getDuplicateCount();
|
||||
case 3:
|
||||
return node.getSensorDataAggregator().getEstimatedLostCount();
|
||||
case 4:
|
||||
return node.getSensorDataAggregator().getAverageValue(SensorData.HOPS);
|
||||
case 5:
|
||||
return node.getSensorDataAggregator().getNextHopChangeCount();
|
||||
case 6:
|
||||
return node.getSensorDataAggregator().getAveragePeriod();
|
||||
case 7: {
|
||||
long time = node.getSensorDataAggregator().getShortestPeriod();
|
||||
return time < Long.MAX_VALUE ? time : 0;
|
||||
}
|
||||
case 8:
|
||||
return node.getSensorDataAggregator().getLongestPeriod();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Class<?> getColumnClass(int c) {
|
||||
return COLUMN_TYPES[c];
|
||||
}
|
||||
|
||||
public String getColumnName(int col) {
|
||||
return COLUMN_NAMES[col * 2];
|
||||
}
|
||||
|
||||
public String getColumnToolTip(int col) {
|
||||
return COLUMN_NAMES[col * 2 + 1];
|
||||
}
|
||||
|
||||
public int getColumnCount() {
|
||||
return COLUMN_NAMES.length / 2;
|
||||
}
|
||||
|
||||
public int getRowCount() {
|
||||
return nodes == null ? 0 : nodes.length;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: PacketChartPanel.java,v 1.7 2010/09/15 15:20:47 nifi Exp $
|
||||
* $Id: PacketChartPanel.java,v 1.8 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 6 sep 2010
|
||||
* Updated : $Date: 2010/09/15 15:20:47 $
|
||||
* $Revision: 1.7 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.8 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -69,6 +69,7 @@ public class PacketChartPanel extends JPanel implements Visualizer {
|
|||
private static final long serialVersionUID = -607864439709540641L;
|
||||
|
||||
protected final CollectServer server;
|
||||
protected final String category;
|
||||
protected final String title;
|
||||
protected final TimeSeries series;
|
||||
|
||||
|
@ -78,10 +79,11 @@ public class PacketChartPanel extends JPanel implements Visualizer {
|
|||
private Node[] selectedNodes;
|
||||
private HashMap<Node,Node> selectedMap = new HashMap<Node,Node>();
|
||||
|
||||
public PacketChartPanel(CollectServer server, String title,
|
||||
public PacketChartPanel(CollectServer server, String category, String title,
|
||||
String timeAxisLabel, String valueAxisLabel) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
this.title = title;
|
||||
this.series = new TimeSeries("Received Packets", Minute.class);
|
||||
TimeSeriesCollection timeSeries = new TimeSeriesCollection(series);
|
||||
|
@ -97,6 +99,11 @@ public class PacketChartPanel extends JPanel implements Visualizer {
|
|||
add(chartPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return title;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SeqnoChartPanel.java,v 1.1 2010/08/31 13:05:40 nifi Exp $
|
||||
* $Id: SeqnoChartPanel.java,v 1.2 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 3 jul 2008
|
||||
* Updated : $Date: 2010/08/31 13:05:40 $
|
||||
* $Revision: 1.1 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.2 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -66,6 +66,7 @@ public class SeqnoChartPanel extends JPanel implements Visualizer {
|
|||
private static final long serialVersionUID = 4302047079820959307L;
|
||||
|
||||
protected final CollectServer server;
|
||||
protected final String category;
|
||||
protected final String title;
|
||||
protected final XYSeriesCollection dataSet;
|
||||
protected final XYSeries series;
|
||||
|
@ -74,10 +75,11 @@ public class SeqnoChartPanel extends JPanel implements Visualizer {
|
|||
|
||||
private Node[] selectedNodes;
|
||||
|
||||
public SeqnoChartPanel(CollectServer server, String title,
|
||||
public SeqnoChartPanel(CollectServer server, String category, String title,
|
||||
String chartTitle, String timeAxisLabel, String valueAxisLabel) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
this.title = title;
|
||||
this.series = new XYSeries(chartTitle);
|
||||
this.dataSet = new XYSeriesCollection(this.series);
|
||||
|
@ -90,6 +92,11 @@ public class SeqnoChartPanel extends JPanel implements Visualizer {
|
|||
add(chartPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return title;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SerialConsole.java,v 1.1 2008/07/09 23:18:07 nifi Exp $
|
||||
* $Id: SerialConsole.java,v 1.2 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 4 jul 2008
|
||||
* Updated : $Date: 2008/07/09 23:18:07 $
|
||||
* $Revision: 1.1 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.2 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -64,6 +64,7 @@ import se.sics.contiki.collect.Visualizer;
|
|||
public class SerialConsole implements Visualizer {
|
||||
|
||||
private final CollectServer server;
|
||||
private final String category;
|
||||
private JPanel panel;
|
||||
private JTextArea logArea;
|
||||
private JTextField commandField;
|
||||
|
@ -71,8 +72,9 @@ public class SerialConsole implements Visualizer {
|
|||
private int historyPos = 0;
|
||||
private int historyCount = 0;
|
||||
|
||||
public SerialConsole(CollectServer server) {
|
||||
public SerialConsole(CollectServer server, String category) {
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
panel = new JPanel(new BorderLayout());
|
||||
logArea = new JTextArea(4, 30);
|
||||
logArea.setEditable(false);
|
||||
|
@ -168,6 +170,11 @@ public class SerialConsole implements Visualizer {
|
|||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return "Serial Console";
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: TimeChartPanel.java,v 1.6 2010/09/15 15:16:49 nifi Exp $
|
||||
* $Id: TimeChartPanel.java,v 1.7 2010/09/15 16:15:10 nifi Exp $
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
|
@ -34,8 +34,8 @@
|
|||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 3 jul 2008
|
||||
* Updated : $Date: 2010/09/15 15:16:49 $
|
||||
* $Revision: 1.6 $
|
||||
* Updated : $Date: 2010/09/15 16:15:10 $
|
||||
* $Revision: 1.7 $
|
||||
*/
|
||||
|
||||
package se.sics.contiki.collect.gui;
|
||||
|
@ -64,6 +64,7 @@ public abstract class TimeChartPanel extends JPanel implements Visualizer {
|
|||
private static final long serialVersionUID = -607864439709540641L;
|
||||
|
||||
protected final CollectServer server;
|
||||
protected final String category;
|
||||
protected final String title;
|
||||
protected final TimeSeriesCollection timeSeries;
|
||||
protected final JFreeChart chart;
|
||||
|
@ -76,11 +77,12 @@ public abstract class TimeChartPanel extends JPanel implements Visualizer {
|
|||
private int rangeTick = 0;
|
||||
private boolean hasGlobalRange;
|
||||
private int maxItemCount;
|
||||
|
||||
public TimeChartPanel(CollectServer server, String title,
|
||||
|
||||
public TimeChartPanel(CollectServer server, String category, String title,
|
||||
String chartTitle, String timeAxisLabel, String valueAxisLabel) {
|
||||
super(new BorderLayout());
|
||||
this.server = server;
|
||||
this.category = category;
|
||||
this.title = title;
|
||||
this.timeSeries = new TimeSeriesCollection();
|
||||
this.chart = ChartFactory.createTimeSeriesChart(
|
||||
|
@ -93,6 +95,11 @@ public abstract class TimeChartPanel extends JPanel implements Visualizer {
|
|||
add(chartPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return title;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue