package edu.mbl.jif.gui.imaging; import edu.mbl.jif.gui.imaging.event.RoiChangeListener; import edu.mbl.jif.gui.imaging.event.RoiChangeEvent; import edu.mbl.jif.gui.value.ValueNoLabel; import edu.mbl.jif.gui.imaging.event.PixelChangeEvent; import edu.mbl.jif.gui.imaging.event.PixelChangeListener; import edu.mbl.jif.utils.JifUtils; import edu.mbl.jif.utils.color.JifColor; import java.awt.*; import java.text.NumberFormat; import javax.swing.*; /** * <p>Title: Used to display pixel, min, mean, max, and ROI values </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author not attributable * @version 1.0 */ public class PanelValuePointPixel extends JPanel implements PixelChangeListener, RoiChangeListener { static NumberFormat fmtDec1; static NumberFormat fmtDec2; static { fmtDec1 = NumberFormat.getNumberInstance(); fmtDec1.setMinimumFractionDigits(1); fmtDec1.setMaximumFractionDigits(1); fmtDec2 = NumberFormat.getNumberInstance(); fmtDec2.setMinimumFractionDigits(2); fmtDec2.setMaximumFractionDigits(2); } ValueNoLabel valuePixel = new ValueNoLabel(); ValueNoLabel valueStats = new ValueNoLabel(); ValueNoLabel valueROI = new ValueNoLabel(); private boolean showRetAzim = false; public PanelValuePointPixel() { this(0); } public PanelValuePointPixel(int show) { if (show == 1) { showRetAzim = true; } try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } void jbInit() throws Exception { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); this.add(valuePixel, null); this.add(valueStats, null); this.add(valueROI, null); this.setMaximumSize(new Dimension(9999, 20)); } // Pixel changed, PixelChangeListener implementation public void pixelChanged(PixelChangeEvent evnt) { if (evnt.value < 0) { setValuePixel(); } else { setValuePixel(evnt.value, evnt.x, evnt.y); } } // ROI changed, RoiChangeListener implementation public void roiChanged(RoiChangeEvent roiEvt) { if (roiEvt.w > 0) { setValueStats(roiEvt.min, roiEvt.mean, roiEvt.max, Color.blue); setValueROI(roiEvt.x, roiEvt.y, roiEvt.w, roiEvt.h); } else { // show values for full image setValueStats(roiEvt.min, roiEvt.mean, roiEvt.max, Color.black); setValueROI(); } } //---------------------------------------------------------------------- public void setValuePixel(int v, int x, int y) { valuePixel.set(fixedWidth(v, 3) + " (" + String.valueOf(x) + ", " + String.valueOf(y) + ")"); } String fixedWidth(int v, int width) { String s = String.valueOf(v); while (s.length() <= width) s = " " + s; return s; } public void setValuePixel() { valuePixel.set(""); } public void setValueStats(int min, float mean, int max) { valueStats.set(String.valueOf(min) + " < " + fmtDec1.format(mean) + " < " + String.valueOf(max)); } public void setValueStats(int min, float mean, int max, Color color) { valueStats.set(String.valueOf(min) + " < " + fmtDec1.format(mean) + " < " + String.valueOf(max), color); } public void setValueStats() { valueStats.set(""); } public void setValueROI(int x, int y, int w, int h) { valueROI.set(String.valueOf(x) + ", " + String.valueOf(y) + " (" + String.valueOf(w) + " x " + String.valueOf(h) + ")", Color.BLUE); } public void setValueROI() { valueROI.set(""); } public void blankAll() { valuePixel.set(""); valueStats.set(""); valueROI.set(""); } }