/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.wordpress.salaboy.emergencyservice.monitor; import java.awt.Color; import java.text.NumberFormat; import java.text.SimpleDateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.time.Millisecond; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.RectangleInsets; /** * * @author esteban */ public class HeartBeatWidget { private static String DATE_PATTERN = "hh:mm:ss"; private final TimeSeriesCollection dataset = new TimeSeriesCollection(); private TimeSeries pulseTimeSeries = new TimeSeries("Pulse"); private ChartPanel chartPanel; public HeartBeatWidget() { pulseTimeSeries.setMaximumItemCount(20); dataset.addSeries(pulseTimeSeries); final JFreeChart chart = createTimeSeriesChart(); chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(220, 200)); chartPanel.setName("Monitor"); } private JFreeChart createTimeSeriesChart() { JFreeChart chart = ChartFactory.createTimeSeriesChart( "Pulse", "X", "Y", dataset, true, true, false); chart.setBackgroundPaint(Color.white); XYPlot plot = (XYPlot) chart.getPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); plot.setDomainCrosshairVisible(true); plot.setRangeCrosshairVisible(true); XYItemRenderer r = plot.getRenderer(); if (r instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); } DateAxis axis = (DateAxis) plot.getDomainAxis(); axis.setDateFormatOverride(new SimpleDateFormat(DATE_PATTERN)); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); NumberFormat numberformat = NumberFormat.getInstance(); numberformat.setMaximumFractionDigits(0); numberformat.setMinimumFractionDigits(0); rangeAxis.setNumberFormatOverride(numberformat); return chart; } public void updateMonitorGraph(double pulse) { pulseTimeSeries.removeAgedItems(false); pulseTimeSeries.addOrUpdate(new Millisecond(), pulse); } public ChartPanel getChartPanel(){ return this.chartPanel; } }