package usda.weru.erosion;

import de.schlichtherle.truezip.file.TFile;
import java.beans.*;
import java.util.*;
import usda.weru.util.*;
import java.text.NumberFormat;
import javax.swing.JTextField;

class SoilLayers extends usda.weru.erosion.gui.SoilLayers_n implements PropertyChangeListener {

    private static final long serialVersionUID = 1L;

    private final String measurementUnits = Util.SIUnits;
    private final int curSubr = 0;

    private DataStore ds;

    public static void main(String[] args) {
        SoilLayers soi = new SoilLayers();
        soi.ds = new DataStore();
        soi.addPropertyChangeListener(soi.ds);
        soi.ds.addPropertyChangeListener(soi);
        soi.setSize(640, 480);
        soi.setTitle("Daily Wind Erosion Model - SoilLayers Test");
        soi.setVisible(true);
        soi.ds.readTextFile(new TFile("c:/weps.wrk/test/barrier_test.in"));
    }

    Hashtable<String, JTextField> HT_displayFields = new Hashtable<String, JTextField>();

    SoilLayers() {
        super();

        HT_displayFields.put(DataStore.LayerOrigNum + 0, JTF_orgLayerNum0);
        HT_displayFields.put(DataStore.LayerOrigNum + 1, JTF_orgLayerNum1);
        HT_displayFields.put(DataStore.LayerOrigNum + 2, JTF_orgLayerNum2);

        HT_displayFields.put(DataStore.LayerThickness + 0, JTF_layerThk0);
        HT_displayFields.put(DataStore.LayerThickness + 1, JTF_layerThk1);
        HT_displayFields.put(DataStore.LayerThickness + 2, JTF_layerThk2);

        HT_displayFields.put(DataStore.LayerBD + 0, JTF_layerBD0);
        HT_displayFields.put(DataStore.LayerBD + 1, JTF_layerBD1);
        HT_displayFields.put(DataStore.LayerBD + 2, JTF_layerBD2);

        HT_displayFields.put(DataStore.LayerSand + 0, JTF_layerSand0);
        HT_displayFields.put(DataStore.LayerSand + 1, JTF_layerSand1);
        HT_displayFields.put(DataStore.LayerSand + 2, JTF_layerSand2);

        HT_displayFields.put(DataStore.LayerVFSand + 0, JTF_layerVFSand0);
        HT_displayFields.put(DataStore.LayerVFSand + 1, JTF_layerVFSand1);
        HT_displayFields.put(DataStore.LayerVFSand + 2, JTF_layerVFSand2);

        HT_displayFields.put(DataStore.LayerSilt + 0, JTF_layerSilt0);
        HT_displayFields.put(DataStore.LayerSilt + 1, JTF_layerSilt1);
        HT_displayFields.put(DataStore.LayerSilt + 2, JTF_layerSilt2);

        HT_displayFields.put(DataStore.LayerClay + 0, JTF_layerClay0);
        HT_displayFields.put(DataStore.LayerClay + 1, JTF_layerClay1);
        HT_displayFields.put(DataStore.LayerClay + 2, JTF_layerClay2);

        HT_displayFields.put(DataStore.LayerRock + 0, JTF_layerRock0);
        HT_displayFields.put(DataStore.LayerRock + 1, JTF_layerRock1);
        HT_displayFields.put(DataStore.LayerRock + 2, JTF_layerRock2);

        HT_displayFields.put(DataStore.LayerAggDen + 0, JTF_layerAggDen0);
        HT_displayFields.put(DataStore.LayerAggDen + 1, JTF_layerAggDen1);
        HT_displayFields.put(DataStore.LayerAggDen + 2, JTF_layerAggDen2);

        HT_displayFields.put(DataStore.LayerAggSta + 0, JTF_layerAggStab0);
        HT_displayFields.put(DataStore.LayerAggSta + 1, JTF_layerAggStab1);
        HT_displayFields.put(DataStore.LayerAggSta + 2, JTF_layerAggStab2);

        HT_displayFields.put(DataStore.LayerAggGMD + 0, JTF_layerAggGMD0);
        HT_displayFields.put(DataStore.LayerAggGMD + 1, JTF_layerAggGMD1);
        HT_displayFields.put(DataStore.LayerAggGMD + 2, JTF_layerAggGMD2);

        HT_displayFields.put(DataStore.LayerAggMin + 0, JTF_layerAggMin0);
        HT_displayFields.put(DataStore.LayerAggMin + 1, JTF_layerAggMin1);
        HT_displayFields.put(DataStore.LayerAggMin + 2, JTF_layerAggMin2);

        HT_displayFields.put(DataStore.LayerAggMax + 0, JTF_layerAggMax0);
        HT_displayFields.put(DataStore.LayerAggMax + 1, JTF_layerAggMax1);
        HT_displayFields.put(DataStore.LayerAggMax + 2, JTF_layerAggMax2);

        HT_displayFields.put(DataStore.LayerAggGSD + 0, JTF_layerAggGSD0);
        HT_displayFields.put(DataStore.LayerAggGSD + 1, JTF_layerAggGSD1);
        HT_displayFields.put(DataStore.LayerAggGSD + 2, JTF_layerAggGSD2);

        HT_displayFields.put(DataStore.LayerWPWC + 0, JTF_wiltingPoint0);
        HT_displayFields.put(DataStore.LayerWPWC + 1, JTF_wiltingPoint1);
        HT_displayFields.put(DataStore.LayerWPWC + 2, JTF_wiltingPoint2);

    }

    /** Field and button handlers **/
    @Override
    protected void JS_numLayersStateChanged(javax.swing.event.ChangeEvent evt) {
        int numLayers = ((Integer) JS_numLayers.getValue()).intValue();
        changes.firePropertyChange(DataStore.LayerNum + "+0", null, " " + numLayers);
        JTF_layerThk0.setEnabled(0 < numLayers);
        JTF_layerThk1.setEnabled(1 < numLayers);
        JTF_layerThk2.setEnabled(2 < numLayers);
        JTF_layerBD0.setEnabled(0 < numLayers);
        JTF_layerBD1.setEnabled(1 < numLayers);
        JTF_layerBD2.setEnabled(2 < numLayers);
        JTF_layerSand0.setEnabled(0 < numLayers);
        JTF_layerSand1.setEnabled(1 < numLayers);
        JTF_layerSand2.setEnabled(2 < numLayers);
        JTF_layerVFSand0.setEnabled(0 < numLayers);
        JTF_layerVFSand1.setEnabled(1 < numLayers);
        JTF_layerVFSand2.setEnabled(2 < numLayers);
        JTF_layerSilt0.setEnabled(0 < numLayers);
        JTF_layerSilt1.setEnabled(1 < numLayers);
        JTF_layerSilt2.setEnabled(2 < numLayers);
        JTF_layerClay0.setEnabled(0 < numLayers);
        JTF_layerClay1.setEnabled(1 < numLayers);
        JTF_layerClay2.setEnabled(2 < numLayers);
        JTF_layerRock0.setEnabled(0 < numLayers);
        JTF_layerRock1.setEnabled(1 < numLayers);
        JTF_layerRock2.setEnabled(2 < numLayers);
        JTF_layerAggDen0.setEnabled(0 < numLayers);
        JTF_layerAggDen1.setEnabled(1 < numLayers);
        JTF_layerAggDen2.setEnabled(2 < numLayers);
        JTF_layerAggStab0.setEnabled(0 < numLayers);
        JTF_layerAggStab1.setEnabled(1 < numLayers);
        JTF_layerAggStab2.setEnabled(2 < numLayers);
        JTF_layerAggGMD0.setEnabled(0 < numLayers);
        JTF_layerAggGMD1.setEnabled(1 < numLayers);
        JTF_layerAggGMD2.setEnabled(2 < numLayers);
        JTF_layerAggMin0.setEnabled(0 < numLayers);
        JTF_layerAggMin1.setEnabled(1 < numLayers);
        JTF_layerAggMin2.setEnabled(2 < numLayers);
        JTF_layerAggMax0.setEnabled(0 < numLayers);
        JTF_layerAggMax1.setEnabled(1 < numLayers);
        JTF_layerAggMax2.setEnabled(2 < numLayers);
        JTF_layerAggGSD0.setEnabled(0 < numLayers);
        JTF_layerAggGSD1.setEnabled(1 < numLayers);
        JTF_layerAggGSD2.setEnabled(2 < numLayers);
        JTF_wiltingPoint0.setEnabled(0 < numLayers);
        JTF_wiltingPoint1.setEnabled(1 < numLayers);
        JTF_wiltingPoint2.setEnabled(2 < numLayers);

    }

    double dummyDouble;

    @Override
    protected void JB_shiftRightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_shiftRightActionPerformed
        int numLayers = ((Integer) JS_numLayers.getValue()).intValue();
//System.out.println("SL_JBsR: " + numLayers);		
        if (numLayers == 3) {
            return;
        }
        numLayers++;
        changes.firePropertyChange(DataStore.LayerNum, null, " " + numLayers);

        changes.firePropertyChange(DataStore.LayerOrigNum + 2, null, JTF_orgLayerNum1.getText());
        changes.firePropertyChange(DataStore.LayerOrigNum + 1, null, JTF_orgLayerNum0.getText());
        changes.firePropertyChange(DataStore.LayerOrigNum + 0, null, "User");
        changes.firePropertyChange(DataStore.LayerThickness + 2, null, JTF_layerThk1.getText());
        changes.firePropertyChange(DataStore.LayerThickness + 1, null, JTF_layerThk0.getText());
        changes.firePropertyChange(DataStore.LayerThickness + 0, null, "");
        changes.firePropertyChange(DataStore.LayerBD + 2, null, JTF_layerBD1.getText());
        changes.firePropertyChange(DataStore.LayerBD + 1, null, JTF_layerBD0.getText());
        changes.firePropertyChange(DataStore.LayerBD + 0, null, "");
        changes.firePropertyChange(DataStore.LayerSand + 2, null, JTF_layerSand1.getText());
        changes.firePropertyChange(DataStore.LayerSand + 1, null, JTF_layerSand0.getText());
        changes.firePropertyChange(DataStore.LayerSand + 0, null, "");
        changes.firePropertyChange(DataStore.LayerVFSand + 2, null, JTF_layerVFSand1.getText());
        changes.firePropertyChange(DataStore.LayerVFSand + 1, null, JTF_layerVFSand0.getText());
        changes.firePropertyChange(DataStore.LayerVFSand + 0, null, "");
        changes.firePropertyChange(DataStore.LayerSilt + 2, null, JTF_layerSilt1.getText());
        changes.firePropertyChange(DataStore.LayerSilt + 1, null, JTF_layerSilt0.getText());
        changes.firePropertyChange(DataStore.LayerSilt + 0, null, "");
        changes.firePropertyChange(DataStore.LayerClay + 2, null, JTF_layerClay1.getText());
        changes.firePropertyChange(DataStore.LayerClay + 1, null, JTF_layerClay0.getText());
        changes.firePropertyChange(DataStore.LayerClay + 0, null, "");
        changes.firePropertyChange(DataStore.LayerRock + 2, null, JTF_layerRock1.getText());
        changes.firePropertyChange(DataStore.LayerRock + 1, null, JTF_layerRock0.getText());
        changes.firePropertyChange(DataStore.LayerRock + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggDen + 2, null, JTF_layerAggDen1.getText());
        changes.firePropertyChange(DataStore.LayerAggDen + 1, null, JTF_layerAggDen0.getText());
        changes.firePropertyChange(DataStore.LayerAggDen + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggSta + 2, null, JTF_layerAggStab1.getText());
        changes.firePropertyChange(DataStore.LayerAggSta + 1, null, JTF_layerAggStab0.getText());
        changes.firePropertyChange(DataStore.LayerAggSta + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggGMD + 2, null, JTF_layerAggGMD1.getText());
        changes.firePropertyChange(DataStore.LayerAggGMD + 1, null, JTF_layerAggGMD0.getText());
        changes.firePropertyChange(DataStore.LayerAggGMD + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggMin + 2, null, JTF_layerAggMin1.getText());
        changes.firePropertyChange(DataStore.LayerAggMin + 1, null, JTF_layerAggMin0.getText());
        changes.firePropertyChange(DataStore.LayerAggMin + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggMax + 2, null, JTF_layerAggMax1.getText());
        changes.firePropertyChange(DataStore.LayerAggMax + 1, null, JTF_layerAggMax0.getText());
        changes.firePropertyChange(DataStore.LayerAggMax + 0, null, "");
        changes.firePropertyChange(DataStore.LayerAggGSD + 2, null, JTF_layerAggGSD1.getText());
        changes.firePropertyChange(DataStore.LayerAggGSD + 1, null, JTF_layerAggGSD0.getText());
        changes.firePropertyChange(DataStore.LayerAggGSD + 0, null, "");
        changes.firePropertyChange(DataStore.LayerWPWC + 2, null, JTF_wiltingPoint1.getText());
        changes.firePropertyChange(DataStore.LayerWPWC + 1, null, JTF_wiltingPoint0.getText());
        changes.firePropertyChange(DataStore.LayerWPWC + 0, null, "");

    }//GEN-LAST:event_JB_shiftRightActionPerformed

    @Override
    protected void JB_shiftLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_shiftLeftActionPerformed
        int numLayers = ((Integer) JS_numLayers.getValue()).intValue();
//System.out.println("SL_JBsL: " + numLayers);		
        if (numLayers == 1) {
            return;
        }
        numLayers--;
        changes.firePropertyChange(DataStore.LayerNum, null, " " + numLayers);

        changes.firePropertyChange(DataStore.LayerOrigNum + 0, null, JTF_orgLayerNum1.getText());
        changes.firePropertyChange(DataStore.LayerOrigNum + 1, null, JTF_orgLayerNum2.getText());
        changes.firePropertyChange(DataStore.LayerOrigNum + 2, null, "");
        changes.firePropertyChange(DataStore.LayerThickness + 0, null, JTF_layerThk1.getText());
        changes.firePropertyChange(DataStore.LayerThickness + 1, null, JTF_layerThk2.getText());
        changes.firePropertyChange(DataStore.LayerThickness + 2, null, "");
        changes.firePropertyChange(DataStore.LayerBD + 0, null, JTF_layerBD1.getText());
        changes.firePropertyChange(DataStore.LayerBD + 1, null, JTF_layerBD2.getText());
        changes.firePropertyChange(DataStore.LayerBD + 2, null, "");
        changes.firePropertyChange(DataStore.LayerSand + 0, null, JTF_layerSand1.getText());
        changes.firePropertyChange(DataStore.LayerSand + 1, null, JTF_layerSand2.getText());
        changes.firePropertyChange(DataStore.LayerSand + 2, null, "");
        changes.firePropertyChange(DataStore.LayerVFSand + 0, null, JTF_layerVFSand1.getText());
        changes.firePropertyChange(DataStore.LayerVFSand + 1, null, JTF_layerVFSand2.getText());
        changes.firePropertyChange(DataStore.LayerVFSand + 2, null, "");
        changes.firePropertyChange(DataStore.LayerSilt + 0, null, JTF_layerSilt1.getText());
        changes.firePropertyChange(DataStore.LayerSilt + 1, null, JTF_layerSilt2.getText());
        changes.firePropertyChange(DataStore.LayerSilt + 2, null, "");
        changes.firePropertyChange(DataStore.LayerClay + 0, null, JTF_layerClay1.getText());
        changes.firePropertyChange(DataStore.LayerClay + 1, null, JTF_layerClay2.getText());
        changes.firePropertyChange(DataStore.LayerClay + 2, null, "");
        changes.firePropertyChange(DataStore.LayerRock + 0, null, JTF_layerRock1.getText());
        changes.firePropertyChange(DataStore.LayerRock + 1, null, JTF_layerRock2.getText());
        changes.firePropertyChange(DataStore.LayerRock + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggDen + 0, null, JTF_layerAggDen1.getText());
        changes.firePropertyChange(DataStore.LayerAggDen + 1, null, JTF_layerAggDen2.getText());
        changes.firePropertyChange(DataStore.LayerAggDen + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggSta + 0, null, JTF_layerAggStab1.getText());
        changes.firePropertyChange(DataStore.LayerAggSta + 1, null, JTF_layerAggStab2.getText());
        changes.firePropertyChange(DataStore.LayerAggSta + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggGMD + 0, null, JTF_layerAggGMD1.getText());
        changes.firePropertyChange(DataStore.LayerAggGMD + 1, null, JTF_layerAggGMD2.getText());
        changes.firePropertyChange(DataStore.LayerAggGMD + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggMin + 0, null, JTF_layerAggMin1.getText());
        changes.firePropertyChange(DataStore.LayerAggMin + 1, null, JTF_layerAggMin2.getText());
        changes.firePropertyChange(DataStore.LayerAggMin + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggMax + 0, null, JTF_layerAggMax1.getText());
        changes.firePropertyChange(DataStore.LayerAggMax + 1, null, JTF_layerAggMax2.getText());
        changes.firePropertyChange(DataStore.LayerAggMax + 2, null, "");
        changes.firePropertyChange(DataStore.LayerAggGSD + 0, null, JTF_layerAggGSD1.getText());
        changes.firePropertyChange(DataStore.LayerAggGSD + 1, null, JTF_layerAggGSD2.getText());
        changes.firePropertyChange(DataStore.LayerAggGSD + 2, null, "");
        changes.firePropertyChange(DataStore.LayerWPWC + 0, null, JTF_wiltingPoint1.getText());
        changes.firePropertyChange(DataStore.LayerWPWC + 1, null, JTF_wiltingPoint2.getText());
        changes.firePropertyChange(DataStore.LayerWPWC + 2, null, "");
    }//GEN-LAST:event_JB_shiftLeftActionPerformed

    @Override
    protected void JTF_wiltingPoint0FocusLost(java.awt.event.FocusEvent evt) {
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint0, dummyDouble,
                DataStore.LayerWPWC + 0 + "+" + curSubr,
                changes, measurementUnits);
    }

    @Override
    protected void JTF_wiltingPoint0ActionPerformed(java.awt.event.ActionEvent evt) {
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint0, dummyDouble,
                DataStore.LayerWPWC + 0 + "+" + curSubr,
                changes, measurementUnits);
    }

    @Override
    protected void JTF_wiltingPoint1FocusLost(java.awt.event.FocusEvent evt) {
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint1, dummyDouble,
                DataStore.LayerWPWC + 1 + "+" + curSubr,
                changes, measurementUnits);
    }

    @Override
    protected void JTF_wiltingPoint1ActionPerformed(java.awt.event.ActionEvent evt) {
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint1, dummyDouble,
                DataStore.LayerWPWC + 1 + "+" + curSubr,
                changes, measurementUnits);
    }

    @Override
    protected void JTF_wiltingPoint2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_wiltingPointFocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint2, dummyDouble,
                DataStore.LayerWPWC + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_wiltingPointFocusLost

    @Override
    protected void JTF_wiltingPoint2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_wiltingPointActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_wiltingPoint2, dummyDouble,
                DataStore.LayerWPWC + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_wiltingPointActionPerformed

    @Override
    protected void JTF_layerAggGSD2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD2, dummyDouble,
                DataStore.LayerAggGSD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD2FocusLost

    @Override
    protected void JTF_layerAggGSD2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD2, dummyDouble,
                DataStore.LayerAggGSD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD2ActionPerformed

    @Override
    protected void JTF_layerAggGSD1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD1, dummyDouble,
                DataStore.LayerAggGSD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD1FocusLost

    @Override
    protected void JTF_layerAggGSD1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD1, dummyDouble,
                DataStore.LayerAggGSD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD1ActionPerformed

    @Override
    protected void JTF_layerAggGSD0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD0, dummyDouble,
                DataStore.LayerAggGSD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD0FocusLost

    @Override
    protected void JTF_layerAggGSD0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGSD0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD0, dummyDouble,
                DataStore.LayerAggGSD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGSD0ActionPerformed

    @Override
    protected void JTF_layerAggMax2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMax2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMax2, dummyDouble,
                DataStore.LayerAggMax + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax2FocusLost

    @Override
    protected void JTF_layerAggMax2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMax2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMax2, dummyDouble,
                DataStore.LayerAggMax + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax2ActionPerformed

    @Override
    protected void JTF_layerAggMax1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMax1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMax1, dummyDouble,
                DataStore.LayerAggMax + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax1FocusLost

    @Override
    protected void JTF_layerAggMax1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMax1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGSD1, dummyDouble,
                DataStore.LayerAggMax + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax1ActionPerformed

    @Override
    protected void JTF_layerAggMax0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMax0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMax0, dummyDouble,
                DataStore.LayerAggMax + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax0FocusLost

    @Override
    protected void JTF_layerAggMax0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMax0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMax0, dummyDouble,
                DataStore.LayerAggMax + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMax0ActionPerformed

    @Override
    protected void JTF_layerAggMin2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMin2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin2, dummyDouble,
                DataStore.LayerAggMin + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin2FocusLost

    @Override
    protected void JTF_layerAggMin2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMin2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin2, dummyDouble,
                DataStore.LayerAggMin + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin2ActionPerformed

    @Override
    protected void JTF_layerAggMin1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMin1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin1, dummyDouble,
                DataStore.LayerAggMin + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin1FocusLost

    @Override
    protected void JTF_layerAggMin1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMin1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin1, dummyDouble,
                DataStore.LayerAggMin + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin1ActionPerformed

    @Override
    protected void JTF_layerAggMin0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggMin0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin0, dummyDouble,
                DataStore.LayerAggMin + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin0FocusLost

    @Override
    protected void JTF_layerAggMin0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggMin0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggMin0, dummyDouble,
                DataStore.LayerAggMin + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggMin0ActionPerformed

    @Override
    protected void JTF_layerAggGMD2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD2, dummyDouble,
                DataStore.LayerAggGMD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD2FocusLost

    @Override
    protected void JTF_layerAggGMD2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD2, dummyDouble,
                DataStore.LayerAggGMD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD2ActionPerformed

    @Override
    protected void JTF_layerAggGMD1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD1, dummyDouble,
                DataStore.LayerAggGMD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD1FocusLost

    @Override
    protected void JTF_layerAggGMD1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD1, dummyDouble,
                DataStore.LayerAggGMD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD1ActionPerformed

    @Override
    protected void JTF_layerAggGMD0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD0, dummyDouble,
                DataStore.LayerAggGMD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD0FocusLost

    @Override
    protected void JTF_layerAggGMD0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggGMD0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggGMD0, dummyDouble,
                DataStore.LayerAggGMD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggGMD0ActionPerformed

    @Override
    protected void JTF_layerAggStab2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggStab2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab2, dummyDouble,
                DataStore.LayerAggSta + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab2FocusLost

    @Override
    protected void JTF_layerAggStab2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggStab2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab2, dummyDouble,
                DataStore.LayerAggSta + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab2ActionPerformed

    @Override
    protected void JTF_layerAggStab1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggStab1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab1, dummyDouble,
                DataStore.LayerAggSta + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab1FocusLost

    @Override
    protected void JTF_layerAggStab1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggStab1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab1, dummyDouble,
                DataStore.LayerAggSta + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab1ActionPerformed

    @Override
    protected void JTF_layerAggStab0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggStab0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab0, dummyDouble,
                DataStore.LayerAggSta + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab0FocusLost

    @Override
    protected void JTF_layerAggStab0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggStab0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggStab0, dummyDouble,
                DataStore.LayerAggSta + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggStab0ActionPerformed

    @Override
    protected void JTF_layerAggDen2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggDen2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen2, dummyDouble,
                DataStore.LayerAggDen + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen2FocusLost

    @Override
    protected void JTF_layerAggDen2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggDen2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen2, dummyDouble,
                DataStore.LayerAggDen + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen2ActionPerformed

    @Override
    protected void JTF_layerAggDen1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggDen1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen1, dummyDouble,
                DataStore.LayerAggDen + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen1FocusLost

    @Override
    protected void JTF_layerAggDen1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggDen1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen1, dummyDouble,
                DataStore.LayerAggDen + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen1ActionPerformed

    @Override
    protected void JTF_layerAggDen0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerAggDen0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen0, dummyDouble,
                DataStore.LayerAggDen + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen0FocusLost

    @Override
    protected void JTF_layerAggDen0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerAggDen0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerAggDen0, dummyDouble,
                DataStore.LayerAggDen + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerAggDen0ActionPerformed

    @Override
    protected void JTF_layerRock2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerRock2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock2, dummyDouble,
                DataStore.LayerRock + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock2FocusLost

    @Override
    protected void JTF_layerRock2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerRock2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock2, dummyDouble,
                DataStore.LayerRock + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock2ActionPerformed

    @Override
    protected void JTF_layerRock1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerRock1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock1, dummyDouble,
                DataStore.LayerRock + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock1FocusLost

    @Override
    protected void JTF_layerRock1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerRock1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock1, dummyDouble,
                DataStore.LayerRock + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock1ActionPerformed

    @Override
    protected void JTF_layerRock0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerRock0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock0, dummyDouble,
                DataStore.LayerRock + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock0FocusLost

    @Override
    protected void JTF_layerRock0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerRock0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerRock0, dummyDouble,
                DataStore.LayerRock + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerRock0ActionPerformed

    @Override
    protected void JTF_layerClay2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerClay2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay2, dummyDouble,
                DataStore.LayerClay + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay2FocusLost

    @Override
    protected void JTF_layerClay2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerClay2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay2, dummyDouble,
                DataStore.LayerClay + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay2ActionPerformed

    @Override
    protected void JTF_layerClay1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerClay1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay1, dummyDouble,
                DataStore.LayerClay + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay1FocusLost

    @Override
    protected void JTF_layerClay1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerClay1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay1, dummyDouble,
                DataStore.LayerClay + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay1ActionPerformed

    @Override
    protected void JTF_layerClay0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerClay0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay0, dummyDouble,
                DataStore.LayerClay + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay0FocusLost

    @Override
    protected void JTF_layerClay0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerClay0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerClay0, dummyDouble,
                DataStore.LayerClay + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerClay0ActionPerformed

    @Override
    protected void JTF_layerSilt2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSilt2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt2, dummyDouble,
                DataStore.LayerSilt + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt2FocusLost

    @Override
    protected void JTF_layerSilt2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSilt2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt2, dummyDouble,
                DataStore.LayerSilt + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt2ActionPerformed

    @Override
    protected void JTF_layerSilt1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSilt1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt1, dummyDouble,
                DataStore.LayerSilt + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt1FocusLost

    @Override
    protected void JTF_layerSilt1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSilt1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt1, dummyDouble,
                DataStore.LayerSilt + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt1ActionPerformed

    @Override
    protected void JTF_layerSilt0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSilt0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt0, dummyDouble,
                DataStore.LayerSilt + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt0FocusLost

    @Override
    protected void JTF_layerSilt0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSilt0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSilt0, dummyDouble,
                DataStore.LayerSilt + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSilt0ActionPerformed

    @Override
    protected void JTF_layerVFSand2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerVFSand2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand2, dummyDouble,
                DataStore.LayerVFSand + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand2FocusLost

    @Override
    protected void JTF_layerVFSand2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerVFSand2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand2, dummyDouble,
                DataStore.LayerVFSand + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand2ActionPerformed

    @Override
    protected void JTF_layerVFSand1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerVFSand1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand1, dummyDouble,
                DataStore.LayerVFSand + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand1FocusLost

    @Override
    protected void JTF_layerVFSand1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerVFSand1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand1, dummyDouble,
                DataStore.LayerVFSand + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand1ActionPerformed

    @Override
    protected void JTF_layerVFSand0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerVFSand0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand0, dummyDouble,
                DataStore.LayerVFSand + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand0FocusLost

    @Override
    protected void JTF_layerVFSand0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerVFSand0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerVFSand0, dummyDouble,
                DataStore.LayerVFSand + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerVFSand0ActionPerformed

    @Override
    protected void JTF_layerSand2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSand2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand2, dummyDouble,
                DataStore.LayerSand + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand2FocusLost

    @Override
    protected void JTF_layerSand2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSand2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand2, dummyDouble,
                DataStore.LayerSand + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand2ActionPerformed

    @Override
    protected void JTF_layerSand1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSand1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand1, dummyDouble,
                DataStore.LayerSand + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand1FocusLost

    @Override
    protected void JTF_layerSand1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSand1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand1, dummyDouble,
                DataStore.LayerSand + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand1ActionPerformed

    @Override
    protected void JTF_layerSand0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerSand0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand0, dummyDouble,
                DataStore.LayerSand + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand0FocusLost

    @Override
    protected void JTF_layerSand0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerSand0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerSand0, dummyDouble,
                DataStore.LayerSand + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerSand0ActionPerformed

    @Override
    protected void JTF_layerBD2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerBD2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD2, dummyDouble,
                DataStore.LayerBD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD2FocusLost

    @Override
    protected void JTF_layerBD2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerBD2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD2, dummyDouble,
                DataStore.LayerBD + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD2ActionPerformed

    @Override
    protected void JTF_layerBD1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerBD1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD1, dummyDouble,
                DataStore.LayerBD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD1FocusLost

    @Override
    protected void JTF_layerBD1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerBD1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD1, dummyDouble,
                DataStore.LayerBD + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD1ActionPerformed

    @Override
    protected void JTF_layerBD0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerBD0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD0, dummyDouble,
                DataStore.LayerBD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD0FocusLost

    @Override
    protected void JTF_layerBD0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerBD0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerBD0, dummyDouble,
                DataStore.LayerBD + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerBD0ActionPerformed

    @Override
    protected void JTF_layerThk2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerThk2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk2, dummyDouble,
                DataStore.LayerThickness + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk2FocusLost

    @Override
    protected void JTF_layerThk2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerThk2ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk2, dummyDouble,
                DataStore.LayerThickness + 2 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk2ActionPerformed

    @Override
    protected void JTF_layerThk1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerThk1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk1, dummyDouble,
                DataStore.LayerThickness + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk1FocusLost

    @Override
    protected void JTF_layerThk1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerThk1ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk1, dummyDouble,
                DataStore.LayerThickness + 1 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk1ActionPerformed

    @Override
    protected void JTF_layerThk0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_layerThk0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk0, dummyDouble,
                DataStore.LayerThickness + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk0FocusLost

    @Override
    protected void JTF_layerThk0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_layerThk0ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_layers, JTF_layerThk0, dummyDouble,
                DataStore.LayerThickness + 0 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_layerThk0ActionPerformed

    /****** Property change support methods *****/
    /**
     * RunFileData throws a property change each time setData is called.
     * Wrapper classes listen to determine if the the event is relevant to
     * them.
     */
    private final PropertyChangeSupport changes = new PropertyChangeSupport(this);

    /**
     * Allows the container to add or register some other components to recognize the changes that occur
     * on this component.
     * @param l The listener that listens and reacts towards the the changes to be reflected.
     */
    @Override
    public void addPropertyChangeListener(PropertyChangeListener l) {
        changes.addPropertyChangeListener(l);
    }

    /**
     * Allows the container to remove or de-register some other components and stop recognizing the
     * changes that occur on this component.
     * @param l The listener that does not listen and react towards the the changes to be reflected.
     */
    @Override
    public void removePropertyChangeListener(PropertyChangeListener l) {
        changes.removePropertyChangeListener(l);
    }

    /**
     * Recognizes and takes appropriate actions on registered properties from different
     * screens to update and synchronize data and GUI screens as needed.
     * @param e The event itself that is responsible for triggering the change required for registered
     * properties/components.
     */
    Hashtable<JTextField, String> HT_prop = new Hashtable<>();

    @Override
    public void propertyChange(PropertyChangeEvent e) {

        String property = e.getPropertyName();
        if (property.indexOf("+") > 0) {
            property = property.substring(0, property.indexOf("+")); // strip region number (only have 1 region for now)
        }
        if (property.equals(DataStore.LayerNum)) {
            setNumLayers((String) e.getNewValue());
        } else {
            String value = "";
            try {
                value = (String) e.getNewValue();
            } catch (ClassCastException cce) {
                // not our kind of thing
                return;
            }
            Object obj = HT_displayFields.get(property);
            if (obj != null) {
                if (obj instanceof javax.swing.JTextField) {
                    javax.swing.JTextField jtf = (javax.swing.JTextField) obj;
                    double val = 0.0;
                    HT_prop.put(jtf, value);
                    try {
                        val = Double.parseDouble(value);
                        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
                        nf.setMaximumFractionDigits(3);
                        nf.setMinimumFractionDigits(0);
                        nf.setGroupingUsed(false);
                        value = nf.format(val);
                    } catch (NumberFormatException f) {
                    }
                    jtf.setText(value.trim());
                }
            }
        }
    }

    private void setNumLayers(String numLayStr) {
        int numLay = Integer.parseInt(numLayStr.trim());
//		JS_numLayers.setValue(new Integer(numLay));
        JS_numLayers.setValue(numLay);
    }

}
