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 SoilSurface extends usda.weru.erosion.gui.SoilSurface_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) {
        SoilSurface soi = new SoilSurface();
        soi.ds = new DataStore();
        soi.addPropertyChangeListener(soi.ds);
        soi.ds.addPropertyChangeListener(soi);
        soi.setSize(640, 480);
        soi.setTitle("Daily Wind Erosion Mode - SoilSurface 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>();

    SoilSurface() {
        super();

        HT_displayFields.put(DataStore.SurfCrustDen, JTF_crustDensity);
        HT_displayFields.put(DataStore.SurfCrustFrac, JTF_crustFraction);
        HT_displayFields.put(DataStore.SurfCrustSta, JTF_crustStability);
        HT_displayFields.put(DataStore.SurfCrustThk, JTF_crustThickness);
        HT_displayFields.put(DataStore.SurfDikeSpacing, JTF_dikeSpacing);
        HT_displayFields.put(DataStore.SurfLMFrac, JTF_looseMaterial);
        HT_displayFields.put(DataStore.SurfLMMass, JTF_looseMaterialMass);
        HT_displayFields.put(DataStore.SurfARR, JTF_randomRoughness);
        HT_displayFields.put(DataStore.SurfRidgHgt, JTF_ridgeHeight);
        HT_displayFields.put(DataStore.SurfRidgOrient, JTF_ridgeOrientation);
        HT_displayFields.put(DataStore.SurfRidgSpacing, JTF_ridgeSpacing);
        HT_displayFields.put(DataStore.SurfRidgWid, JTF_ridgeWidth);
        HT_displayFields.put(DataStore.SurfWC + 0, JTF_SLWCH0);
        HT_displayFields.put(DataStore.SurfWC + 1, JTF_SLWCH1);
        HT_displayFields.put(DataStore.SurfWC + 2, JTF_SLWCH2);
        HT_displayFields.put(DataStore.SurfWC + 3, JTF_SLWCH3);
        HT_displayFields.put(DataStore.SurfWC + 4, JTF_SLWCH4);
        HT_displayFields.put(DataStore.SurfWC + 5, JTF_SLWCH5);
        HT_displayFields.put(DataStore.SurfWC + 6, JTF_SLWCH6);
        HT_displayFields.put(DataStore.SurfWC + 7, JTF_SLWCH7);
        HT_displayFields.put(DataStore.SurfWC + 8, JTF_SLWCH8);
        HT_displayFields.put(DataStore.SurfWC + 9, JTF_SLWCH9);
        HT_displayFields.put(DataStore.SurfWC + 10, JTF_SLWCH10);
        HT_displayFields.put(DataStore.SurfWC + 11, JTF_SLWCH11);
        HT_displayFields.put(DataStore.SurfWC + 12, JTF_SLWCH12);
        HT_displayFields.put(DataStore.SurfWC + 13, JTF_SLWCH13);
        HT_displayFields.put(DataStore.SurfWC + 14, JTF_SLWCH14);
        HT_displayFields.put(DataStore.SurfWC + 15, JTF_SLWCH15);
        HT_displayFields.put(DataStore.SurfWC + 16, JTF_SLWCH16);
        HT_displayFields.put(DataStore.SurfWC + 17, JTF_SLWCH17);
        HT_displayFields.put(DataStore.SurfWC + 18, JTF_SLWCH18);
        HT_displayFields.put(DataStore.SurfWC + 19, JTF_SLWCH19);
        HT_displayFields.put(DataStore.SurfWC + 20, JTF_SLWCH20);
        HT_displayFields.put(DataStore.SurfWC + 21, JTF_SLWCH21);
        HT_displayFields.put(DataStore.SurfWC + 22, JTF_SLWCH22);
        HT_displayFields.put(DataStore.SurfWC + 23, JTF_SLWCH23);
        HT_displayFields.put(DataStore.SurfSnowDepth, JTF_snowDepth);

    }

    double dummyDouble;

    @Override
    protected void JB_roughnessPicsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_roughnessPicsActionPerformed
        PictureChooser pc = new PictureChooser(new TFile("pictures/roughness/roughness.xml"));
        pc.setDialogTitle("Allmaras random roughness (mm)");
        int result = pc.showDialog(this);
        if (result == PictureChooser.APPROVE_OPTION) {
            String valStr = pc.getValue(DataStore.SurfARR);
            if (valStr != null) {
                changes.firePropertyChange(DataStore.SurfARR + "+" + curSubr, null, valStr);
            }
        }
        pc.dispose();
        pc = null;
    }//GEN-LAST:event_JB_roughnessPicsActionPerformed

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

    @Override
    protected void JTF_snowDepthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_snowDepthActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_snowDepth, dummyDouble,
                DataStore.SurfSnowDepth + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_snowDepthActionPerformed

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

    @Override
    protected void JTF_dikeSpacingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_dikeSpacingActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_dikeSpacing, dummyDouble,
                DataStore.SurfDikeSpacing + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_dikeSpacingActionPerformed

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

    @Override
    protected void JTF_ridgeOrientationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeOrientationActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_ridgeOrientation, dummyDouble,
                DataStore.SurfRidgOrient + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_ridgeOrientationActionPerformed

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

    @Override
    protected void JTF_ridgeWidthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeWidthActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_ridgeWidth, dummyDouble,
                DataStore.SurfRidgWid + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_ridgeWidthActionPerformed

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

    @Override
    protected void JTF_ridgeSpacingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeSpacingActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_ridgeSpacing, dummyDouble,
                DataStore.SurfRidgSpacing + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_ridgeSpacingActionPerformed

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

    @Override
    protected void JTF_ridgeHeightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeHeightActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_ridgeHeight, dummyDouble,
                DataStore.SurfRidgHgt + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_ridgeHeightActionPerformed

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

    @Override
    protected void JTF_randomRoughnessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_randomRoughnessActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_randomRoughness, dummyDouble,
                DataStore.SurfARR + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_randomRoughnessActionPerformed

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

    @Override
    protected void JTF_crustStabilityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustStabilityActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_crustStability, dummyDouble,
                DataStore.SurfCrustSta + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_crustStabilityActionPerformed

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

    @Override
    protected void JTF_crustDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustDensityActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_crustDensity, dummyDouble,
                DataStore.SurfCrustDen + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_crustDensityActionPerformed

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

    @Override
    protected void JTF_looseMaterialMassActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_looseMaterialMassActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_looseMaterialMass, dummyDouble,
                DataStore.SurfLMMass + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_looseMaterialMassActionPerformed

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

    @Override
    protected void JTF_looseMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_looseMaterialActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_looseMaterial, dummyDouble,
                DataStore.SurfLMFrac + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_looseMaterialActionPerformed

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

    @Override
    protected void JTF_crustThicknessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustThicknessActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_crustThickness, dummyDouble,
                DataStore.SurfCrustThk + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_crustThicknessActionPerformed

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

    @Override
    protected void JTF_crustFractionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustFractionActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_crustFraction, dummyDouble,
                DataStore.SurfCrustFrac + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_crustFractionActionPerformed

    @Override
    protected void JTF_SLWCH23FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH23FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH23, dummyDouble,
                DataStore.SurfWC + 23 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH23FocusLost

    @Override
    protected void JTF_SLWCH23ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH23ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH23, dummyDouble,
                DataStore.SurfWC + 23 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH23ActionPerformed

    @Override
    protected void JTF_SLWCH22FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH22FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH22, dummyDouble,
                DataStore.SurfWC + 22 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH22FocusLost

    @Override
    protected void JTF_SLWCH22ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH22ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH22, dummyDouble,
                DataStore.SurfWC + 22 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH22ActionPerformed

    @Override
    protected void JTF_SLWCH21ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH21ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH21, dummyDouble,
                DataStore.SurfWC + 21 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH21ActionPerformed

    @Override
    protected void JTF_SLWCH21FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH21FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH21, dummyDouble,
                DataStore.SurfWC + 21 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH21FocusLost

    @Override
    protected void JTF_SLWCH20FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH20FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH20, dummyDouble,
                DataStore.SurfWC + 20 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH20FocusLost

    @Override
    protected void JTF_SLWCH20ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH20ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH20, dummyDouble,
                DataStore.SurfWC + 20 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH20ActionPerformed

    @Override
    protected void JTF_SLWCH19FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH19FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH19, dummyDouble,
                DataStore.SurfWC + 19 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH19FocusLost

    @Override
    protected void JTF_SLWCH19ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH19ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH19, dummyDouble,
                DataStore.SurfWC + 19 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH19ActionPerformed

    @Override
    protected void JTF_SLWCH18FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH18FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH18, dummyDouble,
                DataStore.SurfWC + 18 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH18FocusLost

    @Override
    protected void JTF_SLWCH18ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH18ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH18, dummyDouble,
                DataStore.SurfWC + 18 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH18ActionPerformed

    @Override
    protected void JTF_SLWCH17FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH17FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH17, dummyDouble,
                DataStore.SurfWC + 17 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH17FocusLost

    @Override
    protected void JTF_SLWCH17ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH17ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH17, dummyDouble,
                DataStore.SurfWC + 17 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH17ActionPerformed

    @Override
    protected void JTF_SLWCH16FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH16FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH16, dummyDouble,
                DataStore.SurfWC + 16 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH16FocusLost

    @Override
    protected void JTF_SLWCH16ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH16ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH16, dummyDouble,
                DataStore.SurfWC + 16 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH16ActionPerformed

    @Override
    protected void JTF_SLWCH15FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH15FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH15, dummyDouble,
                DataStore.SurfWC + 15 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH15FocusLost

    @Override
    protected void JTF_SLWCH15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH15ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH15, dummyDouble,
                DataStore.SurfWC + 15 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH15ActionPerformed

    @Override
    protected void JTF_SLWCH14FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH14FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH14, dummyDouble,
                DataStore.SurfWC + 14 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH14FocusLost

    @Override
    protected void JTF_SLWCH14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH14ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH14, dummyDouble,
                DataStore.SurfWC + 14 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH14ActionPerformed

    @Override
    protected void JTF_SLWCH13FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH13FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH13, dummyDouble,
                DataStore.SurfWC + 13 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH13FocusLost

    @Override
    protected void JTF_SLWCH13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH13ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH13, dummyDouble,
                DataStore.SurfWC + 13 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH13ActionPerformed

    @Override
    protected void JTF_SLWCH12FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH12FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH12, dummyDouble,
                DataStore.SurfWC + 12 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH12FocusLost

    @Override
    protected void JTF_SLWCH12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH12ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH12, dummyDouble,
                DataStore.SurfWC + 12 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH12ActionPerformed

    @Override
    protected void JTF_SLWCH11FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH11FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH11, dummyDouble,
                DataStore.SurfWC + 11 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH11FocusLost

    @Override
    protected void JTF_SLWCH11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH11ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH11, dummyDouble,
                DataStore.SurfWC + 11 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH11ActionPerformed

    @Override
    protected void JTF_SLWCH10FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH10FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH10, dummyDouble,
                DataStore.SurfWC + 10 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH10FocusLost

    @Override
    protected void JTF_SLWCH10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH10ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH10, dummyDouble,
                DataStore.SurfWC + 10 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH10ActionPerformed

    @Override
    protected void JTF_SLWCH9FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH9FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH9, dummyDouble,
                DataStore.SurfWC + 9 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH9FocusLost

    @Override
    protected void JTF_SLWCH9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH9ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH9, dummyDouble,
                DataStore.SurfWC + 9 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH9ActionPerformed

    @Override
    protected void JTF_SLWCH8FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH8FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH8, dummyDouble,
                DataStore.SurfWC + 8 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH8FocusLost

    @Override
    protected void JTF_SLWCH8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH8ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH8, dummyDouble,
                DataStore.SurfWC + 8 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH8ActionPerformed

    @Override
    protected void JTF_SLWCH7FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH7FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH7, dummyDouble,
                DataStore.SurfWC + 7 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH7FocusLost

    @Override
    protected void JTF_SLWCH7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH7ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH7, dummyDouble,
                DataStore.SurfWC + 7 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH7ActionPerformed

    @Override
    protected void JTF_SLWCH6FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH6FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH6, dummyDouble,
                DataStore.SurfWC + 6 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH6FocusLost

    @Override
    protected void JTF_SLWCH6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH6ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH6, dummyDouble,
                DataStore.SurfWC + 6 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH6ActionPerformed

    @Override
    protected void JTF_SLWCH5FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH5FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH5, dummyDouble,
                DataStore.SurfWC + 5 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH5FocusLost

    @Override
    protected void JTF_SLWCH5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH5ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH5, dummyDouble,
                DataStore.SurfWC + 5 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH5ActionPerformed

    @Override
    protected void JTF_SLWCH4FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH4FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH4, dummyDouble,
                DataStore.SurfWC + 4 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH4FocusLost

    @Override
    protected void JTF_SLWCH4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH4ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH4, dummyDouble,
                DataStore.SurfWC + 4 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH4ActionPerformed

    @Override
    protected void JTF_SLWCH3FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH3FocusLost
//		if (evt.isTemporary()) return;
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH3, dummyDouble,
                DataStore.SurfWC + 3 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH3FocusLost

    @Override
    protected void JTF_SLWCH3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH3ActionPerformed
        String valStr = HT_prop.get(evt.getSource());
        try {
            dummyDouble = Double.parseDouble(valStr);
        } catch (NumberFormatException k) {
        }
        Util.checkNumericJTF(JP_surface, JTF_SLWCH3, dummyDouble,
                DataStore.SurfWC + 3 + "+" + curSubr,
                changes, measurementUnits);
    }//GEN-LAST:event_JTF_SLWCH3ActionPerformed

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

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

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

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

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

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

    /****** 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.equals(DataStore.SetFocus)) {
            String field = (String) e.getNewValue();
            java.awt.EventQueue.invokeLater(new SelectTab(JTF_crustThickness, 3));
            if (field.equals(DataStore.SurfCrustThk)) {
                java.awt.EventQueue.invokeLater(new SetFocus(JTF_crustThickness));
            } else if (field.equals(DataStore.SurfCrustDen)) {
                java.awt.EventQueue.invokeLater(new SetFocus(JTF_crustDensity));
            } else if (field.equals(DataStore.SurfCrustSta)) {
                java.awt.EventQueue.invokeLater(new SetFocus(JTF_crustStability));
            } else if (field.equals(DataStore.SurfLMMass)) {
                java.awt.EventQueue.invokeLater(new SetFocus(JTF_looseMaterialMass));
//				System.out.println(field);
            }
            return;
        }

        if (property.indexOf("+") > 0) {
            property = property.substring(0, property.indexOf("+"));
        }
        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 static class SetFocus implements Runnable {

        javax.swing.JTextField jtf;

        SetFocus(javax.swing.JTextField jtf) {
            System.out.println("2 new setfocus");
            this.jtf = jtf;
        }

        @Override
        public void run() {
            System.out.println("4 set focus");
//			System.out.println(jtf.getParent().getParent().getParent());
//			((javax.swing.JTabbedPane) jtf.getParent().getParent().getParent()).setSelectedIndex(3);
//			Thread.yield();
            ((javax.swing.JPanel) jtf.getParent().getParent()).requestFocusInWindow();
            while (!jtf.requestFocusInWindow());
            jtf.selectAll();
        }
    }

    private static class SelectTab implements Runnable {

        javax.swing.JTextField jtf;
        int idx;

        SelectTab(javax.swing.JTextField jtf, int idx) {
            System.out.println("1 new SelectTab");
            this.jtf = jtf;
            this.idx = idx;
        }

        @Override
        public void run() {
            System.out.println("3 select tab");
            ((javax.swing.JTabbedPane) jtf.getParent().getParent().getParent()).setSelectedIndex(idx);
//				System.out.println("request made");
        }
    }

}
