Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  streams library
   *
   *  Copyright (C) 2011-2014 by Christian Bockermann, Hendrik Blom
   * 
   *  streams is a library, API and runtime environment for processing high
   *  volume data streams. It is composed of three submodules "stream-api",
   *  "stream-core" and "stream-runtime".
   *
  *  The streams library (and its submodules) is free software: you can 
  *  redistribute it and/or modify it under the terms of the 
  *  GNU Affero General Public License as published by the Free Software 
  *  Foundation, either version 3 of the License, or (at your option) any 
  *  later version.
  *
  *  The stream.ai library (and its submodules) is distributed in the hope
  *  that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  *  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU Affero General Public License for more details.
  *
  *  You should have received a copy of the GNU Affero General Public License
  *  along with this program.  If not, see http://www.gnu.org/licenses/.
  */
 package stream.plotter;
 
 import java.awt.Color;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 
 
 import stream.Data;

Author(s):
chris
 
 public class PlotPanel extends JPanel {

The unique class ID
 
 	private static final long serialVersionUID = -4365922853856318209L;
 
 	static Logger log = LoggerFactory.getLogger(PlotPanel.class);
 	final JTextField valueField = new JTextField(10);
 	protected final XYPlot plot;
 
 
 	final JSlider stepSlider = new JSlider(5, 1000, 100);
 	final JTextField stepField = new JTextField(4);
 	String pivotKey = null;
 	Double pivotValue = 0.0d;
 	Long lastUpdate = 0L;
 
 	protected final JFreeChart chart;
 
 	public PlotPanel() {
 		// super("Stream Monitor");
 
 
 		JPanel fp = new JPanel(new FlowLayout(.));
 		fp.setBorder(null);
 		fp.add(new JLabel("Value: "));
		final JLabel stepLabel = new JLabel("History: ");
			public void stateChanged(ChangeEvent arg0) {
				int steps = .getValue();
				setSteps(steps);
				.setText(steps + "");
			}
		});
		fp.add(stepLabel);
		// setBorder(BorderFactory.createEtchedBorder());
		ValueAxis range = new NumberAxis("");
		range.setAutoRange(true);
		// range.setAutoTickUnitSelection(true);
		 = new XYPlot(rangenew NumberAxis(""), render);
		final ChartPanel p = new ChartPanel();
			public void chartMouseClicked(ChartMouseEvent arg0) {
			}
			public void chartMouseMoved(ChartMouseEvent arg0) {
				// log.info( "chartMouseMoved: {}", arg0 );
				MouseEvent me = arg0.getTrigger();
				/*
				 * log.info( "offsets: {}", offsets ); log.info(
				 * "domainAxisEdge: {}", plot.getDomainAxisEdge() ); log.info(
				 * "rangeAxisLocation: {}", plot.getRangeAxisLocation() );
				 * log.info( "domainAxisLocation: {}",
				 * plot.getDomainAxisLocation() ); log.info( "p.insets: {}",
				 * p.getInsets() ); log.info( "axis.offset.left: {}",
				 * plot.getAxisOffset().getLeft() );
				 */
				Double xval = domain.java2DToValue((doubleme.getPoint().,
						chartArea.getDomainAxisEdge());
						(doubleme.getPoint().chartArea,
				String val = yval + "";
				if (val.length() > 10) {
else
				if (me.isShiftDown()) {
					for (ValueListener v : ) {
						v.selectedValue(xvalyval);
					}
				}
			}
		});
		p.setBorder(new EmptyBorder(8, 8, 8, 8));
	}
	public XYPlot getPlot() {
		return ;
	}
	public JFreeChart getChart() {
		return ;
	}
	public void reset() {
		 = 0.0d;
	}
	public void removeKey(String key) {
		for (int i = 0; i < .getSeriesCount(); i++) {
			if (key.equals(.getSeries(i).getKey().toString())) {
				return;
			}
		}
	}
	public void setSteps(Integer steps) {
		.info("Setting steps to {}"steps);
		for (int i = 0; i < .getSeriesCount(); i++) {
		}
		.setText(steps + "");
	}
	public Integer getSteps() {
		return this..getValue();
	}
	public void setHistory(Integer steps) {
		setSteps(steps);
	}
	public void setYRange(Double yminDouble ymax) {
		if (ymin != null && ymax != null)
			.getRangeAxis().setRange(yminymax);
	}
	public void setTitle(String title) {
	}
	public void addValueListener(ValueListener v) {
	}

	public void dataArrived(Data item) {
		.debug("Data arrived: {}"item);
		Statistics stats = new Statistics("");
		for (String key : item.keySet()) {
			try {
				Serializable val = item.get(key);
				if (val instanceof Number) {
					stats.add(keynew Double(val.toString()));
				}
				// Double val = new Double("" + item.get(key));
				// stats.add(key, val);
catch (Exception e) {
				.error("Error: {}"e.getMessage());
			}
		}
	}

See also:
stream.data.stats.StatisticsListener#dataArrived(stream.data.Statistics )
	public void dataArrived(Statistics item) {
		.debug("Plotting {}"item);
		if ( == null)
			 += 1.0d;
		else {
			Serializable pv = item.get();
			try {
				Double xval = new Double("" + pv);
				 = xval;
catch (Exception e) {
				.error("Error: {}"e.getMessage());
				 += 1.0d;
			}
		}
		//
		// we need to update all series and create missing
		// series elements as well
		//
		Set<Stringkeys = new HashSet<String>(item.keySet());
		for (String key : keys) {
			if (key.equals())
				continue;
			XYSeries series = .get(key);
			if (series == null) {
				series = new XYSeries(key);
				this..addSeries(series);
				.put(keyseries);
			}
			Double value = item.get(key);
			if (value == null)
				value = 0.0d;
			series.add(value);
		}
		if (System.currentTimeMillis() -  >= 1000)
	}
	public void updateChart() {
		// synchronized (plot) {
		// }
	}
	public String getPivotKey() {
		return ;
	}
	public void setPivotKey(String pivotKey) {
		this. = pivotKey;
	}
New to GrepCode? Check out our FAQ X