docs: public boolean doAction(String strAction, int iOptions)
      {
          Container parent = null;
          FieldList record = null;
          if (m_topPane != null)
              parent = m_topPane.getParent();
          if (Constants.BACK.equalsIgnoreCase(strAction))
          {
              strAction = this.popHistory();  // Pop this screen
              strAction = this.popHistory();  // Last screen
          }
          if (Constants.FORM.equalsIgnoreCase(strAction))
          {
              JTable table = (JTable)JBasePanel.getSubScreen(this, JTable.class);
              AbstractThinTableModel model = this.getModel(table);
              if (model != null)
              {
                  int iSelectedRow = model.getSelectedRow();
                  if (iSelectedRow != -1)
                      record = model.makeRowCurrent(iSelectedRow, false);
                  if (record == null)
                      record = model.getFieldTable().getRecord();
                  JBasePanel subScreen = null;
                  if (table != null)
                      subScreen = (JBasePanel)this.getTargetScreen(table, JBasePanel.class);
                  else
                      subScreen = (JBasePanel)JBasePanel.getSubScreen(this, JBasePanel.class);
                  if (subScreen != null)
                      subScreen.free();
              
                  parent.remove(m_topPane);
              }
  
              m_topPane = this.createNewScreen(strAction, record);
              m_topPane = this.setupNewScreen((JBaseScreen)m_topPane);
              m_topPane.setAlignmentX(Component.LEFT_ALIGNMENT);
              m_topPane.setAlignmentY(Component.TOP_ALIGNMENT);
              parent.add(m_topPane, 0);
              this.pushHistory(strAction);
  
              parent.validate();
              return true;
          }
          else if (Constants.GRID.equalsIgnoreCase(strAction))
          {
  //x            JScreen screen = (JScreen)JBasePanel.getSubScreen(this, JScreen.class);
              if (m_topPane != null)
              {
                  if (m_topPane instanceof JBaseScreen)
                  {
                      record = ((JBaseScreen)m_topPane).getFieldList();
                      ((JBaseScreen)m_topPane).free();              
                  }
                  parent.remove(m_topPane);
              }
  
              m_topPane = this.createNewScreen(strAction, record);
              m_topPane = this.setupNewScreen((JBaseScreen)m_topPane);
              if (parent == null)
                  parent = this;
              m_topPane.setAlignmentX(Component.LEFT_ALIGNMENT);
              m_topPane.setAlignmentY(Component.TOP_ALIGNMENT);
              parent.add(m_topPane, 0);
              this.pushHistory(strAction);
  
              parent.validate();
              return true;
          }
          return super.doAction(strAction, iOptions);
      }