001package jmri.jmrit.ctc.editor.gui; 002 003import jmri.jmrit.ctc.editor.code.AwtWindowProperties; 004import jmri.jmrit.ctc.editor.code.CheckJMRIObject; 005import jmri.jmrit.ctc.editor.code.CodeButtonHandlerDataRoutines; 006import jmri.jmrit.ctc.editor.code.CommonSubs; 007import jmri.jmrit.ctc.editor.code.ProgramProperties; 008import java.util.ArrayList; 009import jmri.jmrit.ctc.NBHTurnout; 010import jmri.jmrit.ctc.ctcserialdata.CodeButtonHandlerData; 011import jmri.jmrit.ctc.ctcserialdata.ProjectsCommonSubs; 012 013/** 014 * 015 * @author Gregory J. Bedlek Copyright (C) 2018, 2019 016 */ 017public class FrmSWDI extends javax.swing.JFrame { 018 019 private static final String FORM_PROPERTIES = "DlgSWDI"; // NOI18N 020 private static final String PREFIX = "_mSWDI_"; // NOI18N 021 private final AwtWindowProperties _mAwtWindowProperties; 022 private boolean _mClosedNormally = false; 023 public boolean closedNormally() { return _mClosedNormally; } 024 private final CodeButtonHandlerData _mCodeButtonHandlerData; 025 private final ProgramProperties _mProgramProperties; 026 private final CheckJMRIObject _mCheckJMRIObject; 027 028 private String _mSWDI_ExternalTurnoutOrig; 029 private int _mSWDI_CodingTimeInMillisecondsOrig; 030 private boolean _mSWDI_FeedbackDifferentOrig; 031 private CodeButtonHandlerData.TURNOUT_TYPE _mSWDI_GUITurnoutTypeOrig; 032 private boolean _mSWDI_GUITurnoutLeftHandOrig; 033 private boolean _mSWDI_GUICrossoverLeftHandOrig; 034 035 private void initOrig() { 036 _mSWDI_ExternalTurnoutOrig = _mCodeButtonHandlerData._mSWDI_ExternalTurnout.getHandleName(); 037 _mSWDI_CodingTimeInMillisecondsOrig = _mCodeButtonHandlerData._mSWDI_CodingTimeInMilliseconds; 038 _mSWDI_FeedbackDifferentOrig = _mCodeButtonHandlerData._mSWDI_FeedbackDifferent; 039 _mSWDI_GUITurnoutTypeOrig = _mCodeButtonHandlerData._mSWDI_GUITurnoutType; 040 _mSWDI_GUITurnoutLeftHandOrig = _mCodeButtonHandlerData._mSWDI_GUITurnoutLeftHand; 041 _mSWDI_GUICrossoverLeftHandOrig = _mCodeButtonHandlerData._mSWDI_GUICrossoverLeftHand; 042 } 043 private boolean dataChanged() { 044 if (!_mSWDI_ExternalTurnoutOrig.equals(_mSWDI_ExternalTurnout.getSelectedItem())) return true; 045 if (CommonSubs.getIntFromJTextFieldNoThrow(_mSWDI_CodingTimeInMilliseconds) != _mSWDI_CodingTimeInMillisecondsOrig) return true; 046 if (_mSWDI_FeedbackDifferentOrig != _mSWDI_FeedbackDifferent.isSelected()) return true; 047 if (_mSWDI_GUITurnoutTypeOrig != CodeButtonHandlerData.TURNOUT_TYPE.getTurnoutType(_mSWDI_GUITurnoutType)) return true; 048 if (_mSWDI_GUITurnoutLeftHandOrig != _mSWDI_GUITurnoutLeftHand.isSelected()) return true; 049 if (_mSWDI_GUICrossoverLeftHandOrig != _mSWDI_GUICrossoverLeftHand.isSelected()) return true; 050 return false; 051 } 052 053 public FrmSWDI( AwtWindowProperties awtWindowProperties, CodeButtonHandlerData codeButtonHandlerData, 054 ProgramProperties programProperties, CheckJMRIObject checkJMRIObject) { 055 super(); 056 initComponents(); 057 CommonSubs.addHelpMenu(this, "package.jmri.jmrit.ctc.CTC_frmSWDI", true); // NOI18N 058 _mAwtWindowProperties = awtWindowProperties; 059 _mCodeButtonHandlerData = codeButtonHandlerData; 060 _mProgramProperties = programProperties; 061 _mCheckJMRIObject = checkJMRIObject; 062 CommonSubs.numberButtonGroup(_mSWDI_GUITurnoutType); 063 CommonSubs.setButtonSelected(_mSWDI_GUITurnoutType, _mCodeButtonHandlerData._mSWDI_GUITurnoutType.getInt()); 064 CommonSubs.setMillisecondsEdit(_mSWDI_CodingTimeInMilliseconds); 065 CommonSubs.populateJComboBoxWithBeans(_mSWDI_NormalInternalSensor, "Sensor", _mCodeButtonHandlerData._mSWDI_NormalInternalSensor.getHandleName(), false); // NOI18N 066 CommonSubs.populateJComboBoxWithBeans(_mSWDI_ReversedInternalSensor, "Sensor", _mCodeButtonHandlerData._mSWDI_ReversedInternalSensor.getHandleName(), false); // NOI18N 067 CommonSubs.populateJComboBoxWithBeans(_mSWDI_ExternalTurnout, "Turnout", _mCodeButtonHandlerData._mSWDI_ExternalTurnout.getHandleName(), true); 068 _mSWDI_CodingTimeInMilliseconds.setText(Integer.toString(_mCodeButtonHandlerData._mSWDI_CodingTimeInMilliseconds)); 069 _mSWDI_FeedbackDifferent.setSelected(_mCodeButtonHandlerData._mSWDI_FeedbackDifferent); 070 _mSWDI_GUITurnoutLeftHand.setSelected(_mCodeButtonHandlerData._mSWDI_GUITurnoutLeftHand); 071 _mSWDI_GUICrossoverLeftHand.setSelected(_mCodeButtonHandlerData._mSWDI_GUICrossoverLeftHand); 072 initOrig(); 073 _mAwtWindowProperties.setWindowState(this, FORM_PROPERTIES); 074 this.getRootPane().setDefaultButton(_mSaveAndClose); 075 } 076 077 public static boolean dialogCodeButtonHandlerDataValid(CheckJMRIObject checkJMRIObject, CodeButtonHandlerData codeButtonHandlerData) { 078 if (!codeButtonHandlerData._mSWDI_Enabled) return true; // Not enabled, can be no error! 079// Checks: 080 if (ProjectsCommonSubs.isNullOrEmptyString(codeButtonHandlerData._mSWDI_NormalInternalSensor.getHandleName())) return false; 081 if (ProjectsCommonSubs.isNullOrEmptyString(codeButtonHandlerData._mSWDI_ReversedInternalSensor.getHandleName())) return false; 082 if (ProjectsCommonSubs.isNullOrEmptyString(codeButtonHandlerData._mSWDI_ExternalTurnout.getHandleName())) return false; 083 return checkJMRIObject.validClassWithPrefix(PREFIX, codeButtonHandlerData); 084 } 085 086// Validate all internal fields as much as possible: 087 private ArrayList<String> formFieldsValid() { 088 ArrayList<String> errors = new ArrayList<>(); 089// Checks: 090 CommonSubs.checkJComboBoxNotEmpty(_mSWDI_ExternalTurnout, _mSWDI_ActualTurnoutPrompt, errors); 091 _mCheckJMRIObject.analyzeForm(PREFIX, this, errors); 092 return errors; 093 } 094 095 /** 096 * This method is called from within the constructor to initialize the form. 097 * WARNING: Do NOT modify this code. The content of this method is always 098 * regenerated by the Form Editor. 099 */ 100 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents 101 private void initComponents() { 102 103 _mSWDI_GUITurnoutType = new javax.swing.ButtonGroup(); 104 _mSaveAndClose = new javax.swing.JButton(); 105 _mSWDI_NormalInternalSensorPrompt = new javax.swing.JLabel(); 106 _mSWDI_NormalInternalSensor = new javax.swing.JComboBox<>(); 107 _mSWDI_ReversedInternalSensorPrompt = new javax.swing.JLabel(); 108 _mSWDI_ReversedInternalSensor = new javax.swing.JComboBox<>(); 109 _mSWDI_ActualTurnoutPrompt = new javax.swing.JLabel(); 110 _mSWDI_ExternalTurnout = new javax.swing.JComboBox<>(); 111 jLabel19 = new javax.swing.JLabel(); 112 _mSWDI_CodingTimeInMilliseconds = new javax.swing.JFormattedTextField(); 113 _mSWDI_FeedbackDifferent = new javax.swing.JCheckBox(); 114 jLabel2 = new javax.swing.JLabel(); 115 jButton2 = new javax.swing.JButton(); 116 jLabel3 = new javax.swing.JLabel(); 117 _mSWDI_GUITurnoutLeftHand = new javax.swing.JCheckBox(); 118 _mSWDI_GUICrossoverLeftHand = new javax.swing.JCheckBox(); 119 _mTurnout = new javax.swing.JRadioButton(); 120 _mCrossover = new javax.swing.JRadioButton(); 121 _mDoubleCrossover = new javax.swing.JRadioButton(); 122 123 setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); 124 setTitle(Bundle.getMessage("TitleSWDI")); 125 addWindowListener(new java.awt.event.WindowAdapter() { 126 @Override 127 public void windowClosing(java.awt.event.WindowEvent evt) { 128 formWindowClosing(evt); 129 } 130 }); 131 132 _mSaveAndClose.setText(Bundle.getMessage("ButtonSaveClose")); 133 _mSaveAndClose.addActionListener(new java.awt.event.ActionListener() { 134 @Override 135 public void actionPerformed(java.awt.event.ActionEvent evt) { 136 _mSaveAndCloseActionPerformed(evt); 137 } 138 }); 139 140 _mSWDI_NormalInternalSensorPrompt.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 141 _mSWDI_NormalInternalSensorPrompt.setText(Bundle.getMessage("LabelSWDINormal")); 142 143 _mSWDI_NormalInternalSensor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); 144 145 _mSWDI_ReversedInternalSensorPrompt.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 146 _mSWDI_ReversedInternalSensorPrompt.setText(Bundle.getMessage("LabelSWDIReverse")); 147 148 _mSWDI_ReversedInternalSensor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); 149 150 _mSWDI_ActualTurnoutPrompt.setText(Bundle.getMessage("LabelSWDIToName")); 151 152 _mSWDI_ExternalTurnout.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); 153 154 jLabel19.setText(Bundle.getMessage("LabelSWDITime")); 155 156 _mSWDI_CodingTimeInMilliseconds.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); 157 158 _mSWDI_FeedbackDifferent.setText(" "); 159 160 jLabel2.setText(Bundle.getMessage("LabelSWDIFeedback")); 161 162 jButton2.setText(Bundle.getMessage("ButtonReapply")); 163 jButton2.addActionListener(new java.awt.event.ActionListener() { 164 @Override 165 public void actionPerformed(java.awt.event.ActionEvent evt) { 166 jButton2ActionPerformed(evt); 167 } 168 }); 169 170 jLabel3.setText(Bundle.getMessage("InfoSWDIGUI")); 171 172 _mSWDI_GUITurnoutLeftHand.setText(Bundle.getMessage("LabelSWDILeft")); 173 174 _mSWDI_GUICrossoverLeftHand.setText(Bundle.getMessage("LabelSWDIAlso")); 175 176 _mSWDI_GUITurnoutType.add(_mTurnout); 177 _mTurnout.setText(Bundle.getMessage("LabelSWDITurnout")); 178 _mTurnout.addActionListener(new java.awt.event.ActionListener() { 179 @Override 180 public void actionPerformed(java.awt.event.ActionEvent evt) { 181 _mTurnoutActionPerformed(evt); 182 } 183 }); 184 185 _mSWDI_GUITurnoutType.add(_mCrossover); 186 _mCrossover.setText(Bundle.getMessage("LabelSWDIXOver")); 187 _mCrossover.addActionListener(new java.awt.event.ActionListener() { 188 @Override 189 public void actionPerformed(java.awt.event.ActionEvent evt) { 190 _mCrossoverActionPerformed(evt); 191 } 192 }); 193 194 _mSWDI_GUITurnoutType.add(_mDoubleCrossover); 195 _mDoubleCrossover.setText(Bundle.getMessage("LabelSWDIDouble")); 196 _mDoubleCrossover.addActionListener(new java.awt.event.ActionListener() { 197 @Override 198 public void actionPerformed(java.awt.event.ActionEvent evt) { 199 _mDoubleCrossoverActionPerformed(evt); 200 } 201 }); 202 203 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 204 getContentPane().setLayout(layout); 205 layout.setHorizontalGroup( 206 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 207 .addGroup(layout.createSequentialGroup() 208 .addContainerGap() 209 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 210 .addGroup(layout.createSequentialGroup() 211 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 212 .addComponent(_mSWDI_ActualTurnoutPrompt) 213 .addComponent(jLabel19) 214 .addComponent(_mSWDI_ReversedInternalSensorPrompt, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE) 215 .addComponent(_mSWDI_NormalInternalSensorPrompt, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE) 216 .addComponent(jLabel2)) 217 .addGap(12, 12, 12) 218 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 219 .addComponent(_mSWDI_ReversedInternalSensor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 220 .addComponent(_mSWDI_NormalInternalSensor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 221 .addComponent(_mSWDI_CodingTimeInMilliseconds, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE) 222 .addComponent(_mSWDI_FeedbackDifferent) 223 .addComponent(_mSWDI_ExternalTurnout, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) 224 .addGroup(layout.createSequentialGroup() 225 .addComponent(jLabel3) 226 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 227 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 228 .addComponent(jButton2) 229 .addGroup(layout.createSequentialGroup() 230 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 231 .addComponent(_mCrossover) 232 .addComponent(_mTurnout)) 233 .addGap(41, 41, 41) 234 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 235 .addComponent(_mSWDI_GUITurnoutLeftHand) 236 .addComponent(_mSWDI_GUICrossoverLeftHand))) 237 .addComponent(_mDoubleCrossover) 238 .addGroup(layout.createSequentialGroup() 239 .addGap(43, 43, 43) 240 .addComponent(_mSaveAndClose))))) 241 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 242 ); 243 layout.setVerticalGroup( 244 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 245 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 246 .addContainerGap() 247 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 248 .addComponent(_mSWDI_NormalInternalSensorPrompt, javax.swing.GroupLayout.PREFERRED_SIZE, 12, javax.swing.GroupLayout.PREFERRED_SIZE) 249 .addComponent(_mSWDI_NormalInternalSensor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 250 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 251 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 252 .addComponent(_mSWDI_ReversedInternalSensorPrompt) 253 .addComponent(_mSWDI_ReversedInternalSensor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 254 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 255 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 256 .addComponent(_mSWDI_ActualTurnoutPrompt) 257 .addComponent(_mSWDI_ExternalTurnout, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 258 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 259 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 260 .addComponent(_mSWDI_CodingTimeInMilliseconds, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 261 .addComponent(jLabel19)) 262 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 263 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 264 .addComponent(jLabel2) 265 .addComponent(_mSWDI_FeedbackDifferent)) 266 .addGap(22, 22, 22) 267 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 268 .addComponent(jLabel3) 269 .addComponent(_mSWDI_GUITurnoutLeftHand) 270 .addComponent(_mTurnout)) 271 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 272 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 273 .addComponent(_mCrossover) 274 .addComponent(_mSWDI_GUICrossoverLeftHand)) 275 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 276 .addComponent(_mDoubleCrossover) 277 .addGap(18, 18, 18) 278 .addComponent(_mSaveAndClose) 279 .addGap(38, 38, 38) 280 .addComponent(jButton2) 281 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 282 ); 283 284 pack(); 285 }// </editor-fold>//GEN-END:initComponents 286 287 private void _mSaveAndCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__mSaveAndCloseActionPerformed 288 if (CommonSubs.missingFieldsErrorDialogDisplayed(this, formFieldsValid(), false)) { 289 return; // Do not allow exit or transfer of data. 290 } 291 292 _mCodeButtonHandlerData._mSWDI_NormalInternalSensor = CommonSubs.getNBHSensor((String) _mSWDI_NormalInternalSensor.getSelectedItem(), false); 293 _mCodeButtonHandlerData._mSWDI_ReversedInternalSensor = CommonSubs.getNBHSensor((String) _mSWDI_ReversedInternalSensor.getSelectedItem(), false); 294 295 NBHTurnout newTurnout = CommonSubs.getNBHTurnout((String) _mSWDI_ExternalTurnout.getSelectedItem(), _mSWDI_FeedbackDifferent.isSelected()); 296 _mCodeButtonHandlerData._mSWDI_ExternalTurnout = newTurnout; 297 298 _mCodeButtonHandlerData._mSWDI_CodingTimeInMilliseconds = CommonSubs.getIntFromJTextFieldNoThrow(_mSWDI_CodingTimeInMilliseconds); 299 _mCodeButtonHandlerData._mSWDI_FeedbackDifferent = _mSWDI_FeedbackDifferent.isSelected(); 300 _mCodeButtonHandlerData._mSWDI_GUITurnoutType = CodeButtonHandlerData.TURNOUT_TYPE.getTurnoutType(_mSWDI_GUITurnoutType); 301 _mCodeButtonHandlerData._mSWDI_GUITurnoutLeftHand = _mSWDI_GUITurnoutLeftHand.isSelected(); 302 _mCodeButtonHandlerData._mSWDI_GUICrossoverLeftHand = _mSWDI_GUICrossoverLeftHand.isSelected(); 303 _mClosedNormally = true; 304 _mAwtWindowProperties.saveWindowState(this, FORM_PROPERTIES); 305 dispose(); 306 }//GEN-LAST:event__mSaveAndCloseActionPerformed 307 308 private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing 309 _mAwtWindowProperties.saveWindowState(this, FORM_PROPERTIES); 310 if (CommonSubs.allowClose(this, dataChanged())) dispose(); 311 }//GEN-LAST:event_formWindowClosing 312 313 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed 314 CodeButtonHandlerData temp = _mCodeButtonHandlerData; 315 temp = CodeButtonHandlerDataRoutines.uECBHDWSD_SWDI(_mProgramProperties, temp); 316 CommonSubs.populateJComboBoxWithBeans(_mSWDI_NormalInternalSensor, "Sensor", temp._mSWDI_NormalInternalSensor.getHandleName(), false); // NOI18N 317 CommonSubs.populateJComboBoxWithBeans(_mSWDI_ReversedInternalSensor, "Sensor", temp._mSWDI_ReversedInternalSensor.getHandleName(), false); // NOI18N 318 }//GEN-LAST:event_jButton2ActionPerformed 319 320 private void _mTurnoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__mTurnoutActionPerformed 321 _mSWDI_GUITurnoutLeftHand.setEnabled(true); 322 _mSWDI_GUICrossoverLeftHand.setEnabled(false); 323 }//GEN-LAST:event__mTurnoutActionPerformed 324 325 private void _mCrossoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__mCrossoverActionPerformed 326 _mSWDI_GUITurnoutLeftHand.setEnabled(true); 327 _mSWDI_GUICrossoverLeftHand.setEnabled(true); 328 }//GEN-LAST:event__mCrossoverActionPerformed 329 330 private void _mDoubleCrossoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__mDoubleCrossoverActionPerformed 331 _mSWDI_GUITurnoutLeftHand.setEnabled(false); 332 _mSWDI_GUICrossoverLeftHand.setEnabled(false); 333 }//GEN-LAST:event__mDoubleCrossoverActionPerformed 334 335 // Variables declaration - do not modify//GEN-BEGIN:variables 336 private javax.swing.JRadioButton _mCrossover; 337 private javax.swing.JRadioButton _mDoubleCrossover; 338 private javax.swing.JLabel _mSWDI_ActualTurnoutPrompt; 339 private javax.swing.JFormattedTextField _mSWDI_CodingTimeInMilliseconds; 340 private javax.swing.JComboBox<String> _mSWDI_ExternalTurnout; 341 private javax.swing.JCheckBox _mSWDI_FeedbackDifferent; 342 private javax.swing.JCheckBox _mSWDI_GUICrossoverLeftHand; 343 private javax.swing.JCheckBox _mSWDI_GUITurnoutLeftHand; 344 private javax.swing.ButtonGroup _mSWDI_GUITurnoutType; 345 private javax.swing.JComboBox<String> _mSWDI_NormalInternalSensor; 346 private javax.swing.JLabel _mSWDI_NormalInternalSensorPrompt; 347 private javax.swing.JComboBox<String> _mSWDI_ReversedInternalSensor; 348 private javax.swing.JLabel _mSWDI_ReversedInternalSensorPrompt; 349 private javax.swing.JButton _mSaveAndClose; 350 private javax.swing.JRadioButton _mTurnout; 351 private javax.swing.JButton jButton2; 352 private javax.swing.JLabel jLabel19; 353 private javax.swing.JLabel jLabel2; 354 private javax.swing.JLabel jLabel3; 355 // End of variables declaration//GEN-END:variables 356}