package usda.weru.erosion;


import de.schlichtherle.io.File;
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 String measurementUnits = Util.SIUnits;
    private 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 File("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;
    
    protected void JB_roughnessPicsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_roughnessPicsActionPerformed
        PictureChooser pc = new PictureChooser(new File("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
    
    
	protected void JTF_snowDepthFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_snowDepthFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_snowDepthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_snowDepthActionPerformed
            String valStr = (String) 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
        
	protected void JTF_dikeSpacingFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_dikeSpacingFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_dikeSpacingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_dikeSpacingActionPerformed
            String valStr = (String) 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
        
	protected void JTF_ridgeOrientationFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_ridgeOrientationFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_ridgeOrientationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeOrientationActionPerformed
            String valStr = (String) 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
        
	protected void JTF_ridgeWidthFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_ridgeWidthFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_ridgeWidthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeWidthActionPerformed
            String valStr = (String) 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
        
	protected void JTF_ridgeSpacingFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_ridgeSpacingFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_ridgeSpacingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeSpacingActionPerformed
            String valStr = (String) 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
        
	protected void JTF_ridgeHeightFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_ridgeHeightFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_ridgeHeightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_ridgeHeightActionPerformed
            String valStr = (String) 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
        
	protected void JTF_randomRoughnessFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_randomRoughnessFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_randomRoughnessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_randomRoughnessActionPerformed
            String valStr = (String) 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
        
	protected void JTF_crustStabilityFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_crustStabilityFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_crustStabilityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustStabilityActionPerformed
            String valStr = (String) 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
        
	protected void JTF_crustDensityFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_crustDensityFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_crustDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustDensityActionPerformed
            String valStr = (String) 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
        
	protected void JTF_looseMaterialMassFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_looseMaterialMassFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_looseMaterialMassActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_looseMaterialMassActionPerformed
            String valStr = (String) 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
        
	protected void JTF_looseMaterialFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_looseMaterialFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_looseMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_looseMaterialActionPerformed
            String valStr = (String) 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
        
	protected void JTF_crustThicknessFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_crustThicknessFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_crustThicknessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustThicknessActionPerformed
            String valStr = (String) 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
        
	protected void JTF_crustFractionFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_crustFractionFocusLost
//		if (evt.isTemporary()) return;
            String valStr = (String) 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
        
	protected void JTF_crustFractionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_crustFractionActionPerformed
            String valStr = (String) 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
        
    protected void JTF_SLWCH23FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH23FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH23ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH23ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH22FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH22FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH22ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH22ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH21ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH21ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH21FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH21FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH20FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH20FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH20ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH20ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH19FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH19FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH19ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH19ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH18FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH18FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH18ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH18ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH17FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH17FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH17ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH17ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH16FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH16FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH16ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH16ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH15FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH15FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH15ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH14FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH14FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH14ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH13FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH13FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH13ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH12FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH12FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH12ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH11FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH11FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH11ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH10FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH10FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH10ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH9FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH9FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH9ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH8FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH8FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH8ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH7FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH7FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH7ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH6FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH6FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH6ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH5FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH5FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH5ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH4FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH4FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH4ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH3FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH3FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH3ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH2FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH2ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH1FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH1ActionPerformed
        String valStr = (String) 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
    
    protected void JTF_SLWCH0FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_JTF_SLWCH0FocusLost
//		if (evt.isTemporary()) return;
        String valStr = (String) 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
    
    protected void JTF_SLWCH0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JTF_SLWCH0ActionPerformed
        String valStr = (String) 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 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.
     */
    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.
     */
    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 HT_prop = new Hashtable();
    
    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 = new Double(value).doubleValue();
                    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;
		}

		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;
			}

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

    
}