docs: public void selectScreenFields()
      {
          if (this.isOpen())
              return;   // Can't select after it's open
  //x        this.setSelected(false);
  //        for (Enumeration e = m_SFieldList.elements() ; e.hasMoreElements() ;)
          {   // This should only be called for Imaged GridScreens (Child windows would be deleted by now if Component)
  //            ScreenField sField = (ScreenField)e.nextElement();
  //            if (sField.getConverter() != null) if (sField.getConverter().getField() != null)
  //                ((BaseField)sField.getConverter().getField()).setSelected(true);
          }
          Record recordBase = this.getBaseRecord();     // Get an actual Record to add/edit/etc...
          if (recordBase != null)
          {   // Make sure the main key area's keys are selected
              for (int iIndex = DBConstants.MAIN_FIELD; iIndex < recordBase.getFieldCount(); iIndex++)
              {
                  boolean bSelect = false;    // By default
                  BaseField field = recordBase.getField(iIndex);
                  if (field.isVirtual())
                      continue;   // Who cares if a virtual field is selected or not? (actually, I sometimes need to auto-cache virtuals).
                  if (field.getComponent(0) != null)
                      bSelect = true;        // If you are linked to a screen field, you should be selected
                  else
                  {
                      FieldListener listener = field.getListener();
                      while (listener != null)
                      {
                          if (listener.respondsToMode(DBConstants.READ_MOVE))
                          {
                              if ((!field.isVirtual())
                                  || (listener instanceof ReadSecondaryHandler))
                                      bSelect = true;
                          }
                          listener = (FieldListener)listener.getNextListener(); // Next listener in chain
                      }
                  }
                  field.setSelected(bSelect); // Select/deselect field
              }
              KeyArea keyArea = recordBase.getKeyArea(DBConstants.MAIN_KEY_AREA);
              int iLastIndex = keyArea.getKeyFields() + DBConstants.MAIN_FIELD;
              for (int iIndexSeq = DBConstants.MAIN_FIELD; iIndexSeq < iLastIndex; iIndexSeq++)
              {   // Make sure the index key is selected!
                  keyArea.getField(iIndexSeq).setSelected(true);
              }
          }
          this.selectFields();      // This will do nothing, unless there is a specific selection method
      }