public synchronized ActionRendering action(ActionParams ap) throws OmException { arCurrent = new ActionRendering(); // Pass to document qd.action(ap); // Render current state if (!arCurrent.isSessionEnd()) { qd.render(arCurrent, false); } fixPlaceholders(arCurrent); ActionRendering ar = arCurrent; arCurrent = null; return ar; }
/** * Sets the progress information text, which is displayed outside the question to give the user an * idea of their progress through this question (e.g. 'You have 3 attempts left'.) * * <p>If you don't call this, the progress info remains the same as it was before (blank, if you * never set it). * * @param sProgressInfo Progress string */ protected void setProgressInfo(String sProgressInfo) throws OmDeveloperException { if (arCurrent == null) throw new OmDeveloperException("Cannot call setProgressInfo() when not within action()"); arCurrent.setProgressInfo(sProgressInfo); }
/** * Causes the information in the Results object to be sent to the test navigator and stored. You * should call this only once per question; it doesn't have to be right at the end of the question * (although it can be). * * @throws OmDeveloperException */ protected void sendResults() throws OmDeveloperException { if (arCurrent == null) throw new OmDeveloperException("Cannot call sendResults() when not within action()"); arCurrent.sendResults(rResults); }
/** * Causes the question to end. (Call from within action processing; you can't end a question in * the init() call.) Control returns from this method as usual, although you probably shouldn't do * anything else afterwards. */ protected void end() throws OmDeveloperException { if (arCurrent == null) throw new OmDeveloperException("Cannot call end() when not within action()"); arCurrent.setSessionEnd(); }