docs: public ScreenModel getScreen(ScreenModel screen, PropertyOwner propertyOwner)
      {
          if (propertyOwner == null)
              propertyOwner = this;
          // fetch the parameters
          String strAppletScreen = propertyOwner.getProperty(DBParams.APPLET);   // Applet page
          String strMenu = propertyOwner.getProperty(DBParams.MENU); // Menu page
          String strRecord = propertyOwner.getProperty(DBParams.RECORD); // Display record
          if (strRecord == null)
              strRecord = Constants.BLANK;
          String strScreen = propertyOwner.getProperty(DBParams.SCREEN); // Display screen
          if (strScreen == null)
              strScreen = Constants.BLANK;
          String strPreference = propertyOwner.getProperty(DBParams.PREFERENCES);  // Changing parameters
          String strHelp = propertyOwner.getProperty(DBParams.HELP);       // Menu page
          String strXml = propertyOwner.getProperty(DBParams.XML);             // Html page
          String strImage = propertyOwner.getProperty(DBParams.DATATYPE);              // Image from DB
  
          if (strPreference != null)
              this.changeParameters();
          if (strAppletScreen != null)
              if (strHelp == null)
          {
              String strJavaLaunch = propertyOwner.getProperty(DBParams.JAVA);
              String strBrowser = this.getProperty(DBParams.BROWSER);
              String strOS = this.getProperty(DBParams.OS);
              char chJavaLaunch = this.getDefaultJava(strBrowser, strOS);    // Web start = default
              if ((strJavaLaunch != null) && (strJavaLaunch.length() > 0))
                  chJavaLaunch = Character.toUpperCase(strJavaLaunch.charAt(0));
              if (chJavaLaunch == 'W')
              {
                  this.setProperty(DBParams.DATATYPE, "Jnlp");
                  strScreen = DataAccessScreen.class.getName();
              }
              else
                  strScreen = AppletHtmlScreen.class.getName();    // Applet HTML form
          }
          if (strMenu != null) if (strScreen.length() == 0)
              strScreen = MenuScreen.class.getName();
          if (strXml != null)
              strScreen = BaseParserScreen.class.getName();
          if (strHelp != null)
              if ((strMenu == null) && (strXml == null))
                  if (!strHelp.equalsIgnoreCase("add"))
          {
              if (strHelp.length() == 0)
                  strHelp = HelpScreen.class.getName();
              if (strHelp.indexOf('.') == -1)
                  strHelp = "." + SERVLET_BASE + strHelp;
              if (strHelp.indexOf('.') == 0)
                  strHelp = DBConstants.ROOT_PACKAGE + strHelp.substring(1);
              strScreen = strHelp;
          }
          if (strImage != null)
              strScreen = DataAccessScreen.class.getName();
  
          boolean bUseOldScreen = false;
          if (screen != null)
              if ((strScreen != null) && (strScreen.length() > 0))
          {
              if (strScreen.indexOf('.') == 0)
                  strScreen = Constants.ROOT_PACKAGE + strScreen.substring(1);
              if (strScreen.equals(screen.getClass().getName()))
                  bUseOldScreen = true;
          }
          if (screen != null)
          {
              if ((strRecord != null) && (strRecord.length() > 0))
                  if (screen.getMainRecord() != null)
                      if ((strRecord.equalsIgnoreCase(((BasePanel)screen).getMainRecord().getRecordName()))
                          || (strRecord.equalsIgnoreCase(screen.getMainRecord().getClass().getName())))
              {
                  int iOldMode = ScreenConstants.MAINT_MODE;
                  if (screen instanceof BaseGridScreen)
                      iOldMode = ScreenConstants.DISPLAY_MODE;
                  int HELP_MODE = ScreenConstants.LAST_MODE + 1;
                  if (screen instanceof HelpScreen)
                      iOldMode = HELP_MODE;
                  int iNewMode = ScreenConstants.MAINT_MODE;
                  if ((propertyOwner.getProperty(DBParams.COMMAND) == null)
                      || ((MenuConstants.LOOKUP.equalsIgnoreCase(this.getProperty(DBParams.COMMAND)))
                          || (MenuConstants.GRID.equalsIgnoreCase(this.getProperty(DBParams.COMMAND)))
                          || (HtmlConstants.DISPLAY.equalsIgnoreCase(this.getProperty(HtmlConstants.FORMS)))))
                              iNewMode = ScreenConstants.DISPLAY_MODE;
                  if (strHelp != null)
                      iNewMode = HELP_MODE;
                  if (iNewMode == iOldMode)
                      bUseOldScreen = true;
              }
          }
          if (screen != null)
  	        if ((((BasePanel)screen).getDisplayFieldDesc() & ScreenConstants.SECURITY_MODE) != 0)
      	        bUseOldScreen = false;
          if (bUseOldScreen)
              ((BaseScreen)screen).clearCachedData();
          if (screen != null)
          {
          	boolean bIsApplet = false;
          	if ((strAppletScreen != null) && (strHelp == null))
          		bIsApplet = true;
              if (this.getProperty(DBParams.MENU) != null)
                  if (!bIsApplet)
                      if (MenuScreen.class.getName().equals(screen.getClass().getName()))
              {
                  bUseOldScreen = true;
                  screen.setProperty(DBParams.MENU, this.getProperty(DBParams.MENU));
              }
          }
          if (!bUseOldScreen)
              if (screen != null)
          {
              Map<String,Object> properties = null;
              if (propertyOwner != null)
                  properties = propertyOwner.getProperties();    // This will get cleared when I free the screen.
              screen.free();
              screen = null;  // Don't use old screen.
              if (propertyOwner != null)
                  propertyOwner.setProperties(properties);
          }
  
                  // First, see if they want to see a screen
          BaseAppletReference applet = null;
          if (this.getTask() instanceof BaseAppletReference)
          	applet = (BaseAppletReference)this.getTask();
          Object oldCursor = null;
          if (applet != null)
          	oldCursor = applet.setStatus(Constant.WAIT, applet, null);
          if (screen == null)
              if (strScreen.length() > 0)
                  screen = (ScreenModel)Record.makeNewScreen(strScreen, null, this, 0, null, null, true);
                  // Now, see if they want to open a file and create the default screen
          if (screen == null) if (strRecord.length() > 0)
          {
              String strScreenType = propertyOwner.getProperty(DBParams.COMMAND);
              int iDocType = ScreenConstants.DISPLAY_MODE;
              if (this.getProperty(DBParams.COMMAND) != null)
                  iDocType = ScreenConstants.MAINT_MODE;
              RecordOwner recordOwner = Utility.getRecordOwner(this);
              Record record = Record.makeRecordFromClassName(strRecord, recordOwner);
              if (record != null)
                  if (recordOwner != null)
                      recordOwner.removeRecord(record);   // Will be added to screen
              if (strScreenType != null)
              {
                  iDocType = 0;
                  boolean bNumeric = true;
                  for (int i = 0; i < strScreenType.length(); i++)
                  {
                      if (!Character.isDigit(strScreenType.charAt(i)))
                          bNumeric = false;
                  }
                  if (bNumeric)
                  {
                      try   {
                          iDocType = Integer.parseInt(strScreenType);
                      } catch (NumberFormatException ex)  {
                          iDocType = 0;
                      }
                  }
                  if (iDocType == 0)
                      if (record != null)
                          iDocType = record.commandToDocType(strScreenType);
              }
              if (record != null)
                  screen = (ScreenModel)record.makeScreen(null, this, iDocType, null);
          }
          if (screen == null)
          {   // Default Display Form
              strScreen = MenuScreen.class.getName();
              screen = (ScreenModel)Record.makeNewScreen(strScreen, null, this, 0, null, null, true);
          }
          if (applet != null)
              applet.setStatus(0, applet, oldCursor);
          return screen;
      }