/*
 * AirDensityEstimateDialog.java
 *
 * Created on February 9, 2007, 12:29 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package usda.weru.erosion;

import usda.weru.erosion.gui.AirDensityEstimateDialog_n;

/**
 *
 * @author Joseph Levin
 */
public class AirDensityEstimateDialog extends AirDensityEstimateDialog_n{
    private static final long serialVersionUID = 1L;
    
    /**
     * Return value if cancel is chosen.
     */
    public static final int CANCEL_OPTION = 1;
    
    /**
     * Return value if approve (yes, ok) is chosen.
     */
    public static final int APPROVE_OPTION = 0;

	/**
	 *
	 */
	protected int c_result = CANCEL_OPTION;

	/**
	 *
	 */
	protected double c_amzele;

	/**
	 *
	 */
	protected double c_awtdav;
    /** Creates a new instance of AirDensityEstimateDialog
	 * @param parent
	 * @param modal */
    public AirDensityEstimateDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
    }

	/**
	 *
	 * @return
	 */
	public double calculateAverageAirDensity(){
        double awdair = 348.56d * (1.013d-0.1183d * (c_amzele/1000.) + 0.0048d * Math.pow(c_amzele/1000.0d, 2d)) / (c_awtdav + 273.1d) ;
        awdair = (double)Math.round(awdair * 10000) / 10000;
        return awdair;
        
    }

	/**
	 *
	 * @return
	 */
	public int showDialog(){
        setVisible(true);
        return c_result;
    }

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {        
        c_result = CANCEL_OPTION;
        setVisible(false);
    }

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void okayButtonActionPerformed(java.awt.event.ActionEvent evt) {
        c_result = APPROVE_OPTION;
        setVisible(false);
    }

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void temperatureFieldFocusLost(java.awt.event.FocusEvent evt) {
        
        temperatureFieldActionPerformed(null);
    }

	/**
	 *
	 */
	protected String c_oldTemp = "0.0";

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void temperatureFieldActionPerformed(java.awt.event.ActionEvent evt) {
        String valStr = g_temperatureField.getText();
        try {
            double value = Double.parseDouble(valStr);            
            c_awtdav = value;          
            c_oldTemp = valStr;
        } catch (NumberFormatException k) {                
            c_awtdav = Double.NaN;
            g_temperatureField.setText(c_oldTemp); 
        }
    }

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void elevationFieldFocusLost(java.awt.event.FocusEvent evt) {
         if (!evt.isTemporary()){
            elevationFieldActionPerformed(null);
         }
    }

	/**
	 *
	 */
	protected String c_oldElev = "0.0";

	/**
	 *
	 * @param evt
	 */
	@Override
    protected void elevationFieldActionPerformed(java.awt.event.ActionEvent evt) {
        String valStr = g_elevationField.getText();
        try {
            double value = Double.parseDouble(valStr);
            c_amzele = value;            
            c_oldElev = valStr;            
        } catch (NumberFormatException k) {                      
            c_amzele = Double.NaN;
            g_elevationField.setText(c_oldElev);           
        }
    }
    
}
