Files
i2p.itoopie/src/net/i2p/itoopie/gui/component/BandwidthChart.java
dev 10b91cd5a7 Moved RegisteredFrame.
Fixed ssl certificate ui to only be shown once.
Added a special rate tracker for bandwidth (rate / 1024).
Fixed some repaint() issues with labels and buttons.
Enabled updating router info.
2011-07-19 11:35:08 +00:00

95 lines
4.0 KiB
Java

package net.i2p.itoopie.gui.component;
import info.monitorenter.gui.chart.Chart2D;
import info.monitorenter.gui.chart.IAxis.AxisTitle;
import info.monitorenter.gui.chart.ITrace2D;
import info.monitorenter.gui.chart.ITracePainter;
import info.monitorenter.gui.chart.labelformatters.LabelFormatterDate;
import info.monitorenter.gui.chart.labelformatters.LabelFormatterNumber;
import info.monitorenter.gui.chart.rangepolicies.RangePolicyMinimumViewport;
import info.monitorenter.gui.chart.traces.Trace2DLtd;
import info.monitorenter.gui.chart.traces.painters.TracePainterPolyline;
import info.monitorenter.gui.chart.views.ChartPanel;
import info.monitorenter.util.Range;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import javax.swing.JFrame;
import net.i2p.itoopie.configuration.ConfigurationManager;
import net.i2p.itoopie.gui.component.chart.BandwidthTracker;
import net.i2p.itoopie.gui.component.chart.DummyDataCollector;
import net.i2p.itoopie.gui.component.chart.RateStatTracker;
import net.i2p.itoopie.gui.component.chart.ObjRecorder2Trace2DAdapter;
import net.i2p.itoopie.i18n.Transl;
public class BandwidthChart {
private static ConfigurationManager _conf = ConfigurationManager.getInstance();
private final static int DEFAULT_UPDATE_INTERVAL = 2500; // Update every 2500th ms
private final static int DEFAULT_GRAPH_INTERVAL = 2*3600; // The graph will cover a maximum of 2hrs
private final static String DATE_FORMAT = "HH:mm:ss";
public static Chart2D getChart(){
int updateInterval = _conf.getConf("graph.updateinterval", DEFAULT_UPDATE_INTERVAL);
int graphInterval = _conf.getConf("graph.graphinterval", DEFAULT_GRAPH_INTERVAL);
Chart2D chart = new Chart2D();
chart.setUseAntialiasing(true);
chart.setMinPaintLatency(20);
ITrace2D dataBWIn = new Trace2DLtd( updateInterval*graphInterval );
dataBWIn.setStroke(new BasicStroke(1));
dataBWIn.setColor(new Color(255, 0, 0, 255));
dataBWIn.setName(Transl._("Bandwidth In [KB/s]"));
ITracePainter<?> dotPainter = new TracePainterPolyline();
dataBWIn.setTracePainter(dotPainter);
chart.addTrace(dataBWIn);
ITrace2D dataBWOut = new Trace2DLtd( updateInterval*graphInterval );
dataBWOut.setStroke(new BasicStroke(1));
dataBWOut.setColor(new Color(0, 0, 255, 255));
dataBWOut.setName(Transl._("Bandwidth Out [KB/s]"));
dataBWOut.setTracePainter(dotPainter);
chart.addTrace(dataBWOut);
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
chart.getAxisX().setFormatter(new LabelFormatterDate(sdf));
chart.getAxisX().setPaintGrid(true);
chart.getAxisX().setAxisTitle(new AxisTitle(Transl._("Time")));
DecimalFormat df = new DecimalFormat("0 ; 0");
chart.getAxisY().setFormatter(new LabelFormatterNumber(df));
chart.getAxisY().setPaintGrid(true);
chart.getAxisY().setAxisTitle(new AxisTitle(""));
// force ranges:
chart.getAxisY().setRangePolicy(new RangePolicyMinimumViewport(new Range(0, 5)));
new ObjRecorder2Trace2DAdapter(dataBWIn, new BandwidthTracker("bw.sendRate", 60*1000L), "m_value", updateInterval);
// new ObjRecorder2Trace2DAdapter(dataBWIn, new DummyDataCollector(0.5, 1000), "m_number", updateInterval);
new ObjRecorder2Trace2DAdapter(dataBWOut, new BandwidthTracker("bw.recvRate", 60*1000L), "m_value", updateInterval);
// new ObjRecorder2Trace2DAdapter(dataBWOut, new DummyDataCollector(0.5, 1000), "m_number", updateInterval);
return chart;
}
public static void main(final String[] args) {
JFrame frame = new JFrame();
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new ChartPanel(getChart()), BorderLayout.CENTER);
//frame.add(new ChartPanel(getChart()));
frame.setLocation(200, 300);
frame.setSize(700, 210);
frame.setResizable(true);
frame.setVisible(true);
}
}