ErrorRange.java [tools/WepsSoilsIfcCreator/src/usda/weru/soil] Revision: 0963adc11caf5d7616128736008ebbc7f276df4c Date: Wed Sep 02 15:16:53 MDT 2015
package usda.weru.soil;
//import java.awt.*;
import javax.swing.*;
public class ErrorRange {
String title;
double loValue;
double hiValue;
/**
* wjr
* @param lo
*/
public void setLowValue(double lo) {
loValue = lo;
}
/**
* wjr
* @param high
*/
public void setHighValue(double high) {
hiValue = high;
}
/********************************************************************* wjr */
/**
* wjr
* @param ti
* @param lo
* @param hi
*/
/* entry for integer or double */
public ErrorRange(String ti, double lo, double hi) {
title = ti;
loValue = lo;
hiValue = hi;
}
/**
* wjr
* @param ti
*/
/* entry for string */
public ErrorRange(String ti) {
title = ti;
loValue = 0;
hiValue = -1;
}
/**
* wjr
* @param label
* @return
*/
public final int errorBox(String label) {
int rtnval = checkRange(label);
return errorBox(rtnval);
}
public final int errorBox(double value) {
int rtnval = checkRange(value);
return errorBox(rtnval);
}
private final int errorBox(int rtnval) {
String message = null;
//System.out.println("ER_eB: " + rtnval);
switch (rtnval) {
case -1 :
case -2 :
case 1 : message = "\nRange = " + loValue + " to " + hiValue + "."; break;
case 2 : message = "\nInvalid character for number"; break;
case 3 : message = "\nBlank entry is not valid"; break;
}
if (rtnval != 0) JOptionPane.showMessageDialog(new JPanel(), title + message, "Invalid input", JOptionPane.WARNING_MESSAGE);
return rtnval;
}
/**
* wjr *
* @param label
* @return
*/
public int checkRange(String label) {
double range = 0.0;
if (loValue == 0 && hiValue == -1) { // it's a string
if (label == null) return -3;
if (label.trim().length() > 0) return 0;
return -3;
}
////System.out.println("checkRange: " + title + " " + label + " " + loValue + " " + hiValue);
if (label == null) return -2;
try{ // it's a number
range = Double.valueOf(label).doubleValue();
if ( range < loValue || range > hiValue) return (range < loValue) ? -1 : 1;
}catch (NumberFormatException e) {
return -2;
}
return 0;
}
public int checkRange(double value){
if (Double.isNaN(value)) return -1;
if ( value < loValue || value > hiValue) return (value < loValue) ? -1 : 1;
return 0;
}
/**
* wjr *
* @param idx
* @return
*/
public String adjValue(int idx) {
if (idx == -3) return "no value given";
double rtn = 0;
switch (idx) {
case -1 : rtn = loValue; break;
case 1 : rtn = hiValue; break;
case -2 : rtn = (loValue + hiValue) / 2; break;
}
int numdigits = (int) -(Math.log(rtn) / Math.log(10.0)) + 4;
if (numdigits < 0) numdigits = 0;
return usda.weru.util.Util.formatDouble(rtn, numdigits);
}
/**
* wjr *
* @param inpval
* @return
*/
public double adjValue(double inpval) {
if (inpval < loValue) return loValue;
if (inpval > hiValue) return hiValue;
return inpval;
}
/**
* wjr *
* @return
*/
public String getToolTipText() {
if (loValue > hiValue) return title;
else return title + " " + loValue + " - " + hiValue;
}
/************************************************************************ wjr **/
}