docs: public boolean doAction(String strAction, int iOptions)
      {
          FieldList fieldList = this.getFieldList();
          FieldTable fieldTable = null;
          if (fieldList != null)
              fieldTable = fieldList.getTable();
          boolean bFlag = false;
          try   {
              if (Constants.RESET.equalsIgnoreCase(strAction))
              {
                  if (fieldTable != null)
                  {
                      fieldTable.addNew();
                  }
                  this.resetFocus();
                  bFlag = true;
              }
              bFlag = super.doAction(strAction, iOptions);
              if (bFlag == false)
                  if (Constants.GRID.equalsIgnoreCase(strAction))
              {
                  try   {
                      JBaseScreen screen = this.createGridScreen(this.getFieldList());
                      if (screen != null)
                      {
                          Container parent = null;
                          this.getFieldList().setOwner(screen);    // The record belongs to the new screen
                          if (screen.getParentObject() instanceof Container)
                              parent = (Container)screen.getParentObject();
                          this.getBaseApplet().changeSubScreen(parent, screen, null, iOptions);
                          bFlag = true;
                      }
                  } catch (Exception ex)  {
                      ex.printStackTrace();
                  }
              }
              if (Constants.SUBMIT.equalsIgnoreCase(strAction))
              {
                  if (fieldTable != null)
                  {
                      if (fieldList.isModified())
                      {
                          if ((fieldList.getEditMode() == Constants.EDIT_IN_PROGRESS) ||
                              (fieldList.getEditMode() == Constants.EDIT_CURRENT))
                          {
                              fieldTable.set(fieldList);
                          }
                          else
                          {
                              fieldTable.add(fieldList);
                          }
                      }
                      fieldTable.addNew();
                      this.resetFocus();
                      bFlag = true;
                  }
              }
              else if (Constants.DELETE.equalsIgnoreCase(strAction))
              {
                  if (fieldTable != null)
                  {
                      if ((fieldList.getEditMode() == Constants.EDIT_IN_PROGRESS) ||
                          (fieldList.getEditMode() == Constants.EDIT_CURRENT))
                      {
                          fieldTable.remove();
                      }
                      fieldTable.addNew();
                      this.resetFocus();
                      bFlag = true;
                  }
              }
              else if (Constants.RESET.equalsIgnoreCase(strAction))
              {
                  bFlag = true;   // Handled by this screen
              }
          } catch (Exception ex)  {
              this.getBaseApplet().setStatusText(ex.getMessage(), JOptionPane.ERROR_MESSAGE);
              bFlag = true;   // Handled (with an error).
          }
          return bFlag;
      }