org.sandev.tools.HTTP
Class XHTMLScreenAdaptor

java.lang.Object
  extended by org.sandev.tools.HTTP.XHTMLScreenAdaptor
All Implemented Interfaces:
org.sandev.basics.util.UIFormAdaptor, org.sandev.ui.util.UIScreenAdaptor

public class XHTMLScreenAdaptor
extends java.lang.Object
implements org.sandev.ui.util.UIScreenAdaptor

Converts a Screen into XHTML, and reconstructs it from the posted form data. For overview information, refer to the UIScreenAdaptor interface definition. The XHTMLScreenAdaptor uses an AbstractXHTMLFormAdaptor derived class in processing, which must be set by the caller.


Field Summary
protected  AbstractXHTMLFormAdaptor formAdaptor
          We need an AbstractXHTMLFormAdaptor derived class to do our work.
static java.lang.String LINKACTIONPREFIX
          A prefix used to identiy all interactive actions defined for a link.
protected  org.sandev.ui.util.SandTransformer sandTrans
          We need a SandTransformer to do our work.
static java.lang.String SCREENPARAM
          The parameter holding the name of the screen we are on.
 
Fields inherited from interface org.sandev.basics.util.UIFormAdaptor
SANDUILINK_REGEXP
 
Constructor Summary
XHTMLScreenAdaptor()
          Default ctor does nothing
 
Method Summary
protected  boolean actionActive(org.sandev.ui.sandmessages.Action action, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user)
          Return true if this action is active, false otherwise.
 boolean allowEditReadOnly()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
protected  void debug(org.sandev.basics.util.UIFormOwner owner, java.lang.String text)
          Log the given informational message using the UIFormOwner.
protected  void doRenderActions(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl)
          Walk the actions for this link and do what is needed.
protected  void doRenderTabs(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl)
          Like doRenderActions but for tabs, which are always requests.
protected  void dumpDefaultButton(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user)
          If a default button is defined, then dump a hidden copy of it so the browser finds it first and uses it as the default.
protected  void dumpEntryPoints(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.SandUI ui, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIRenderOutput uiro, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale)
          Dump out a block of links to the top level entry points, for use in a nav bar or similar mechanism.
protected  void dumpFocusScript(java.io.PrintWriter out, java.lang.String focusID, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, java.lang.String formName, org.sandev.ui.sandmessages.Link link)
          If a focusID is given, write the script to set the focus there.
protected  void dumpFormLink(org.sandev.basics.util.UIRenderOutputString uiros, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl)
          Write out the form with any action buttons required.
 void dumpFormOutput(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 void dumpGeneralInfo(java.io.PrintWriter out, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.structs.SandAttrVal[] generalInfo)
          Dump out other general information useful for display.
protected  void dumpHiddenButton(java.io.PrintWriter out, java.lang.String buttonClass, java.lang.String buttonID, java.lang.String buttonName, java.lang.String buttonValue, java.lang.String confirm)
          Dump out a hidden button.
protected  boolean dumpLink(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.ui.sandmessages.SandUI ui, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIRenderOutput uiro, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale)
          Dump out a link.
protected  void dumpLinks(java.io.PrintWriter out, java.lang.String prefix, org.sandev.ui.sandmessages.SandUI ui, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIRenderOutput uiro, org.sandev.ui.sandmessages.Screen screen, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale)
          Dump the links for this screen.
 void dumpLocale(java.io.PrintWriter out, java.util.Locale locale)
          Dump out the Locale information so it will be available for transform processing.
protected  void dumpMessageAsValue(java.io.PrintWriter out, java.lang.String prefix, org.sandev.basics.structs.SandInstanceMessage msg)
          Dump out the given instance message as a single value.
 void dumpPageFooter(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String closure)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 void dumpPageHeader(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String title, org.sandev.basics.util.UIFormOwner owner, java.lang.Object context)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
protected  void dumpPlainLink(org.sandev.basics.util.UIRenderOutputString uiros, java.lang.String prefix, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl)
          Write out the text or empty link with any action buttons required.
 void dumpScreen(org.sandev.basics.util.UIRenderOutput uiro, org.sandev.ui.sandmessages.Screen screen, org.sandev.ui.sandmessages.SandUI ui, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale, org.sandev.basics.structs.SandAttrVal[] generalInfo)
          Given a output rendering context, render the given Screen for display.
protected  void dumpUserWorkLog(java.io.PrintWriter out, org.sandev.basics.util.UserWorkLog uwl)
          Dump out the UserWorkLog, if available and anything was written to it.
protected  void dumpWireframeLink(org.sandev.basics.util.UIRenderOutputString uiros, org.sandev.ui.sandmessages.Link link)
          Dump out the wireframeText directly.
 boolean[] getActionSupportMap()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 boolean[] getDefaultActionSupportMap()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 AbstractXHTMLFormAdaptor getFormAdaptor()
          accessor for formAdaptor
 org.sandev.basics.util.UIFormContext getFormContext(org.sandev.basics.util.UIRenderInput uiri, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
protected  java.lang.String getFormModeString(org.sandev.basics.util.UIFormContext uifc)
          Returns collection, listing or editing depending on the display mode indicated by the uifc.
protected  java.lang.String getFormTitle(org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormContext uifc)
          Return the title for this form.
 java.lang.String getHiddenFieldValue()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 org.sandev.basics.util.InstanceClassEnumerator getInstanceClassEnumerator()
          CALLTHROUGH to AbstractXHTMLFormAdaptor.getInstanceClassEnumerator.
protected static java.lang.String getParam(java.util.Map params, java.lang.String key)
          CALLTHROUGH to AbstractXHTMLFormAdaptor.getParam.
 org.sandev.ui.util.SandTransformer getSandTrans()
          accessor for sandTrans
 org.sandev.ui.sandmessages.Screen getScreen(org.sandev.basics.util.UIRenderInput uiri, org.sandev.ui.sandmessages.SandUI ui, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale)
          Given a map of our current parameter names and values, reconstruct the Screen object and return it.
protected  org.sandev.ui.sandmessages.Screen getScreenByName(java.lang.String name, org.sandev.ui.sandmessages.SandUI ui)
          Return the screen for the given name, or null if not found.
 org.sandev.basics.util.UIRenderInput getUIRenderInput()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 org.sandev.basics.util.UIRenderOutputDirect getUIRenderOutputDirect()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 org.sandev.basics.util.UIRenderOutputStream getUIRenderOutputStream()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 org.sandev.basics.util.UIRenderOutputString getUIRenderOutputString()
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
protected  void loadSpecifiedInstance(org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user)
          If a particular instance was specified in the URL parameters, then initialize the current form with it.
protected  void loadUIAction(org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIRenderInput uiri, org.sandev.ui.sandmessages.Link link, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl)
          Figure out which custom user action has been chosen.
protected  org.sandev.ui.sandmessages.Action loadUIActionWork(org.sandev.basics.util.UIFormContext uifc, java.util.Map params, org.sandev.ui.sandmessages.Action[] actions, java.lang.String buttonKey, org.sandev.basics.util.UIFormOwner owner)
          Workhorse method for loadUIAction.
 org.sandev.basics.structs.SandInstanceMessage newInstanceMessage(java.lang.String classtype)
          CALLTHROUGH to AbstractXHTMLFormAdaptor.newInstanceMessage.
protected  org.sandev.ui.sandmessages.Screen reconstructScreen(org.sandev.basics.util.UIRenderInput uiri, org.sandev.ui.sandmessages.SandUI ui, org.sandev.ui.sandmessages.Screen workscreen, org.sandev.basics.util.UIFormOwner owner, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UserWorkLog uwl, java.util.Locale locale)
          Reconstruct the specified screen from SandUI and the input parameters.
protected  void selectTab(org.sandev.basics.util.UIFormContext uifc, java.lang.String tabName)
          Given the name of a tab, look it up in the given display context and set it if found.
 void setActionSupportMap(boolean[] actionFlags)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 void setAllowEditReadOnly(boolean val)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 void setFormAdaptor(AbstractXHTMLFormAdaptor val)
          mutator for formAdaptor
 void setHiddenFieldValue(java.lang.String val)
          CALLTHROUGH to our AbstractXHTMLFormAdaptor
 void setSandTrans(org.sandev.ui.util.SandTransformer st)
          mutator for sandTrans
protected  void verifyScreenAccess(org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.AuthUser user, org.sandev.ui.sandmessages.SandUI ui, java.lang.String screenName, org.sandev.basics.util.UIFormOwner owner)
          Verify that they user has access to the specified screen within the given SandUI, throw if not.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SCREENPARAM

public static final java.lang.String SCREENPARAM
The parameter holding the name of the screen we are on.

See Also:
Constant Field Values

LINKACTIONPREFIX

public static final java.lang.String LINKACTIONPREFIX
A prefix used to identiy all interactive actions defined for a link.

See Also:
Constant Field Values

formAdaptor

protected AbstractXHTMLFormAdaptor formAdaptor
We need an AbstractXHTMLFormAdaptor derived class to do our work. This must be set by the caller before doing any work.

All use of the formAdaptor within this class is via the accessor method.


sandTrans

protected org.sandev.ui.util.SandTransformer sandTrans
We need a SandTransformer to do our work. This must be set before any calls for processing.

Constructor Detail

XHTMLScreenAdaptor

public XHTMLScreenAdaptor()
Default ctor does nothing

Method Detail

getFormAdaptor

public AbstractXHTMLFormAdaptor getFormAdaptor()
accessor for formAdaptor


setFormAdaptor

public void setFormAdaptor(AbstractXHTMLFormAdaptor val)
mutator for formAdaptor


getUIRenderInput

public org.sandev.basics.util.UIRenderInput getUIRenderInput()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getUIRenderInput in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputDirect

public org.sandev.basics.util.UIRenderOutputDirect getUIRenderOutputDirect()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getUIRenderOutputDirect in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputStream

public org.sandev.basics.util.UIRenderOutputStream getUIRenderOutputStream()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getUIRenderOutputStream in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputString

public org.sandev.basics.util.UIRenderOutputString getUIRenderOutputString()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getUIRenderOutputString in interface org.sandev.basics.util.UIFormAdaptor

getFormContext

public org.sandev.basics.util.UIFormContext getFormContext(org.sandev.basics.util.UIRenderInput uiri,
                                                           java.lang.String formName,
                                                           org.sandev.basics.util.UIFormContext uifc,
                                                           org.sandev.basics.util.UIFormAdaptorCallback callback)
                                                    throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getFormContext in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

dumpFormOutput

public void dumpFormOutput(org.sandev.basics.util.UIRenderOutput uiro,
                           java.lang.String formName,
                           org.sandev.basics.util.UIFormContext uifc,
                           org.sandev.basics.util.UIFormAdaptorCallback callback,
                           org.sandev.basics.util.AuthUser user,
                           org.sandev.basics.util.AuthFilter filter)
                    throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
dumpFormOutput in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

dumpPageHeader

public void dumpPageHeader(org.sandev.basics.util.UIRenderOutput uiro,
                           java.lang.String title,
                           org.sandev.basics.util.UIFormOwner owner,
                           java.lang.Object context)
                    throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
dumpPageHeader in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

dumpPageFooter

public void dumpPageFooter(org.sandev.basics.util.UIRenderOutput uiro,
                           java.lang.String closure)
                    throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
dumpPageFooter in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

setActionSupportMap

public void setActionSupportMap(boolean[] actionFlags)
                         throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
setActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

getActionSupportMap

public boolean[] getActionSupportMap()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor

getDefaultActionSupportMap

public boolean[] getDefaultActionSupportMap()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getDefaultActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor

getHiddenFieldValue

public java.lang.String getHiddenFieldValue()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
getHiddenFieldValue in interface org.sandev.basics.util.UIFormAdaptor

setHiddenFieldValue

public void setHiddenFieldValue(java.lang.String val)
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
setHiddenFieldValue in interface org.sandev.basics.util.UIFormAdaptor

allowEditReadOnly

public boolean allowEditReadOnly()
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
allowEditReadOnly in interface org.sandev.basics.util.UIFormAdaptor

setAllowEditReadOnly

public void setAllowEditReadOnly(boolean val)
CALLTHROUGH to our AbstractXHTMLFormAdaptor

Specified by:
setAllowEditReadOnly in interface org.sandev.basics.util.UIFormAdaptor

getParam

protected static java.lang.String getParam(java.util.Map params,
                                           java.lang.String key)
CALLTHROUGH to AbstractXHTMLFormAdaptor.getParam.


newInstanceMessage

public org.sandev.basics.structs.SandInstanceMessage newInstanceMessage(java.lang.String classtype)
                                                                 throws org.sandev.basics.util.UIFormAdaptorException
CALLTHROUGH to AbstractXHTMLFormAdaptor.newInstanceMessage.

Specified by:
newInstanceMessage in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

getInstanceClassEnumerator

public org.sandev.basics.util.InstanceClassEnumerator getInstanceClassEnumerator()
CALLTHROUGH to AbstractXHTMLFormAdaptor.getInstanceClassEnumerator.

Specified by:
getInstanceClassEnumerator in interface org.sandev.basics.util.UIFormAdaptor

getSandTrans

public org.sandev.ui.util.SandTransformer getSandTrans()
accessor for sandTrans


setSandTrans

public void setSandTrans(org.sandev.ui.util.SandTransformer st)
mutator for sandTrans


getScreen

public org.sandev.ui.sandmessages.Screen getScreen(org.sandev.basics.util.UIRenderInput uiri,
                                                   org.sandev.ui.sandmessages.SandUI ui,
                                                   org.sandev.basics.util.UIFormOwner owner,
                                                   org.sandev.basics.util.AuthUser user,
                                                   org.sandev.basics.util.UserWorkLog uwl,
                                                   java.util.Locale locale)
                                            throws org.sandev.ui.util.UIScreenAdaptorException
Given a map of our current parameter names and values, reconstruct the Screen object and return it. See the UIScreenAdaptor interface for a general description.

This method will:

  1. Check if a specific screen name has been specified as a SCREENPARAM and otherwise use the first defined entry point. Throw an exception if the screen can't be found (the template can transform the error into something friendly if desired, and the user can then go to the main page if that's what was intended).
  2. make a copy of the defined screen to use as a workspace
  3. call reconstructScreen to get the screen instance to return.

Specified by:
getScreen in interface org.sandev.ui.util.UIScreenAdaptor
Throws:
org.sandev.ui.util.UIScreenAdaptorException

dumpScreen

public void dumpScreen(org.sandev.basics.util.UIRenderOutput uiro,
                       org.sandev.ui.sandmessages.Screen screen,
                       org.sandev.ui.sandmessages.SandUI ui,
                       org.sandev.basics.util.UIFormOwner owner,
                       org.sandev.basics.util.AuthUser user,
                       org.sandev.basics.util.AuthFilter filter,
                       org.sandev.basics.util.UserWorkLog uwl,
                       java.util.Locale locale,
                       org.sandev.basics.structs.SandAttrVal[] generalInfo)
                throws org.sandev.ui.util.UIScreenAdaptorException
Given a output rendering context, render the given Screen for display. See the UIScreenAdaptor interface for details.

It is up to the caller to dump the pageHeader and pageFooter, since they may wish to insert additional information (such as login/logout links).

Since we will be reconstructing the screen by merging parameters with the SandUI definition, we don't need to write hidden parameters for invariant information.

Specified by:
dumpScreen in interface org.sandev.ui.util.UIScreenAdaptor
Throws:
org.sandev.ui.util.UIScreenAdaptorException

verifyScreenAccess

protected void verifyScreenAccess(org.sandev.basics.util.AuthFilter filter,
                                  org.sandev.basics.util.AuthUser user,
                                  org.sandev.ui.sandmessages.SandUI ui,
                                  java.lang.String screenName,
                                  org.sandev.basics.util.UIFormOwner owner)
                           throws org.sandev.ui.util.UIScreenAdaptorException
Verify that they user has access to the specified screen within the given SandUI, throw if not.

If there is no access to the screen, the exception says so. The other alternative would be to throw the same exception as if the screen didn't exist, but in practice this makes it harder to track what is going on, and the screen name is not normally that big a secret.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

reconstructScreen

protected org.sandev.ui.sandmessages.Screen reconstructScreen(org.sandev.basics.util.UIRenderInput uiri,
                                                              org.sandev.ui.sandmessages.SandUI ui,
                                                              org.sandev.ui.sandmessages.Screen workscreen,
                                                              org.sandev.basics.util.UIFormOwner owner,
                                                              org.sandev.basics.util.AuthUser user,
                                                              org.sandev.basics.util.UserWorkLog uwl,
                                                              java.util.Locale locale)
                                                       throws org.sandev.ui.util.UIScreenAdaptorException
Reconstruct the specified screen from SandUI and the input parameters. If loadParams is false, then the input parameters are ignored and a copy of the original Screen is returned.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

loadSpecifiedInstance

protected void loadSpecifiedInstance(org.sandev.basics.util.UIFormContext uifc,
                                     org.sandev.basics.util.UIFormOwner owner,
                                     org.sandev.basics.util.AuthUser user)
                              throws org.sandev.ui.util.UIScreenAdaptorException
If a particular instance was specified in the URL parameters, then initialize the current form with it. This method also handles partial specifications and buttons.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

selectTab

protected void selectTab(org.sandev.basics.util.UIFormContext uifc,
                         java.lang.String tabName)
Given the name of a tab, look it up in the given display context and set it if found. The tabName is the name, not the displayName.


loadUIAction

protected void loadUIAction(org.sandev.basics.util.UIFormContext uifc,
                            org.sandev.basics.util.UIRenderInput uiri,
                            org.sandev.ui.sandmessages.Link link,
                            org.sandev.basics.util.UIFormOwner owner,
                            org.sandev.basics.util.AuthUser user,
                            org.sandev.basics.util.UserWorkLog uwl)
                     throws org.sandev.ui.util.UIScreenAdaptorException
Figure out which custom user action has been chosen. This method sets the action to CUSTOM and the outputText to the name of the action. If no custom action, then this method does nothing.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

loadUIActionWork

protected org.sandev.ui.sandmessages.Action loadUIActionWork(org.sandev.basics.util.UIFormContext uifc,
                                                             java.util.Map params,
                                                             org.sandev.ui.sandmessages.Action[] actions,
                                                             java.lang.String buttonKey,
                                                             org.sandev.basics.util.UIFormOwner owner)
                                                      throws org.sandev.ui.util.UIScreenAdaptorException
Workhorse method for loadUIAction. Returns the action if found, null otherwise.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

actionActive

protected boolean actionActive(org.sandev.ui.sandmessages.Action action,
                               org.sandev.basics.util.UIFormContext uifc,
                               org.sandev.basics.util.UIFormOwner owner,
                               org.sandev.basics.util.AuthUser user)
                        throws org.sandev.ui.util.UIScreenAdaptorException
Return true if this action is active, false otherwise. This method checks authorization and owner logic.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

dumpLocale

public void dumpLocale(java.io.PrintWriter out,
                       java.util.Locale locale)
                throws org.sandev.ui.util.UIScreenAdaptorException
Dump out the Locale information so it will be available for transform processing. This is a write-only operation. This method is also called directly by XHTMLSandUIServlet during login and error processing.

Throws:
org.sandev.ui.util.UIScreenAdaptorException

dumpGeneralInfo

public void dumpGeneralInfo(java.io.PrintWriter out,
                            org.sandev.basics.util.UIFormOwner owner,
                            org.sandev.basics.structs.SandAttrVal[] generalInfo)
Dump out other general information useful for display. This method is also called directly by XHTMLSandUIServlet during login and error processing.


dumpEntryPoints

protected void dumpEntryPoints(java.io.PrintWriter out,
                               java.lang.String prefix,
                               org.sandev.ui.sandmessages.SandUI ui,
                               org.sandev.basics.util.UIFormOwner owner,
                               org.sandev.basics.util.AuthUser user,
                               org.sandev.basics.util.AuthFilter filter,
                               org.sandev.basics.util.UIRenderOutput uiro,
                               org.sandev.basics.util.UserWorkLog uwl,
                               java.util.Locale locale)
                        throws org.sandev.ui.util.UIScreenAdaptorException,
                               org.sandev.basics.structs.SandException
Dump out a block of links to the top level entry points, for use in a nav bar or similar mechanism.

Throws:
org.sandev.ui.util.UIScreenAdaptorException
org.sandev.basics.structs.SandException

getScreenByName

protected org.sandev.ui.sandmessages.Screen getScreenByName(java.lang.String name,
                                                            org.sandev.ui.sandmessages.SandUI ui)
Return the screen for the given name, or null if not found.


dumpLinks

protected void dumpLinks(java.io.PrintWriter out,
                         java.lang.String prefix,
                         org.sandev.ui.sandmessages.SandUI ui,
                         org.sandev.basics.util.UIFormOwner owner,
                         org.sandev.basics.util.AuthUser user,
                         org.sandev.basics.util.AuthFilter filter,
                         org.sandev.basics.util.UIRenderOutput uiro,
                         org.sandev.ui.sandmessages.Screen screen,
                         org.sandev.basics.util.UserWorkLog uwl,
                         java.util.Locale locale)
                  throws org.sandev.ui.util.UIScreenAdaptorException,
                         org.sandev.basics.structs.SandException
Dump the links for this screen.

Throws:
org.sandev.ui.util.UIScreenAdaptorException
org.sandev.basics.structs.SandException

dumpLink

protected boolean dumpLink(java.io.PrintWriter out,
                           java.lang.String prefix,
                           org.sandev.ui.sandmessages.Link link,
                           org.sandev.ui.sandmessages.SandUI ui,
                           org.sandev.basics.util.UIFormOwner owner,
                           org.sandev.basics.util.AuthUser user,
                           org.sandev.basics.util.AuthFilter filter,
                           org.sandev.basics.util.UIRenderOutput uiro,
                           org.sandev.basics.util.UserWorkLog uwl,
                           java.util.Locale locale)
                    throws org.sandev.ui.util.UIScreenAdaptorException,
                           org.sandev.basics.structs.SandException
Dump out a link. Since we will be reconstructing this using the same SandUI definition, we don't need to write out any constant information as hidden parameters.

Throws:
org.sandev.ui.util.UIScreenAdaptorException
org.sandev.basics.structs.SandException

dumpWireframeLink

protected void dumpWireframeLink(org.sandev.basics.util.UIRenderOutputString uiros,
                                 org.sandev.ui.sandmessages.Link link)
                          throws org.sandev.basics.util.UIFormAdaptorException
Dump out the wireframeText directly.

Throws:
org.sandev.basics.util.UIFormAdaptorException

dumpFormLink

protected void dumpFormLink(org.sandev.basics.util.UIRenderOutputString uiros,
                            java.lang.String prefix,
                            org.sandev.ui.sandmessages.Link link,
                            org.sandev.basics.util.UIFormContext uifc,
                            org.sandev.basics.util.UIFormOwner owner,
                            org.sandev.basics.util.AuthUser user,
                            org.sandev.basics.util.UserWorkLog uwl)
                     throws org.sandev.basics.structs.SandException
Write out the form with any action buttons required.

Throws:
org.sandev.basics.structs.SandException

dumpFocusScript

protected void dumpFocusScript(java.io.PrintWriter out,
                               java.lang.String focusID,
                               org.sandev.basics.util.UIFormContext uifc,
                               org.sandev.basics.util.UIFormOwner owner,
                               java.lang.String formName,
                               org.sandev.ui.sandmessages.Link link)
                        throws org.sandev.basics.structs.SandException
If a focusID is given, write the script to set the focus there.

Throws:
org.sandev.basics.structs.SandException

getFormTitle

protected java.lang.String getFormTitle(org.sandev.ui.sandmessages.Link link,
                                        org.sandev.basics.util.UIFormContext uifc)
Return the title for this form.


getFormModeString

protected java.lang.String getFormModeString(org.sandev.basics.util.UIFormContext uifc)
Returns collection, listing or editing depending on the display mode indicated by the uifc.


dumpPlainLink

protected void dumpPlainLink(org.sandev.basics.util.UIRenderOutputString uiros,
                             java.lang.String prefix,
                             org.sandev.ui.sandmessages.Link link,
                             org.sandev.basics.util.UIFormContext uifc,
                             org.sandev.basics.util.UIFormOwner owner,
                             org.sandev.basics.util.AuthUser user,
                             org.sandev.basics.util.UserWorkLog uwl)
                      throws org.sandev.basics.structs.SandException
Write out the text or empty link with any action buttons required. The form construct is potentially unnecessary if there are no associated actions, but it's not worth a special case.

Throws:
org.sandev.basics.structs.SandException

doRenderActions

protected void doRenderActions(java.io.PrintWriter out,
                               java.lang.String prefix,
                               org.sandev.ui.sandmessages.Link link,
                               org.sandev.basics.util.UIFormContext uifc,
                               org.sandev.basics.util.UIFormOwner owner,
                               org.sandev.basics.util.AuthUser user,
                               org.sandev.basics.util.UserWorkLog uwl)
                        throws org.sandev.basics.structs.SandException
Walk the actions for this link and do what is needed.

Throws:
org.sandev.basics.structs.SandException

dumpMessageAsValue

protected void dumpMessageAsValue(java.io.PrintWriter out,
                                  java.lang.String prefix,
                                  org.sandev.basics.structs.SandInstanceMessage msg)
Dump out the given instance message as a single value.


dumpUserWorkLog

protected void dumpUserWorkLog(java.io.PrintWriter out,
                               org.sandev.basics.util.UserWorkLog uwl)
Dump out the UserWorkLog, if available and anything was written to it.


dumpDefaultButton

protected void dumpDefaultButton(java.io.PrintWriter out,
                                 java.lang.String prefix,
                                 org.sandev.ui.sandmessages.Link link,
                                 org.sandev.basics.util.UIFormContext uifc,
                                 org.sandev.basics.util.UIFormOwner owner,
                                 org.sandev.basics.util.AuthUser user)
                          throws org.sandev.basics.structs.SandException
If a default button is defined, then dump a hidden copy of it so the browser finds it first and uses it as the default.

Throws:
org.sandev.basics.structs.SandException

dumpHiddenButton

protected void dumpHiddenButton(java.io.PrintWriter out,
                                java.lang.String buttonClass,
                                java.lang.String buttonID,
                                java.lang.String buttonName,
                                java.lang.String buttonValue,
                                java.lang.String confirm)
                         throws org.sandev.basics.util.UIFormAdaptorException
Dump out a hidden button. The hidden button is not displayed, but will be selected by the browser if the user just hits return on the form while they are not positioned on a button. That's the hope anyway. The absolute positioning takes the resulting button out of the document flow so it doesn't actually take up space in the form. Thanks to http://www.webdeveloper.com/forum/archive/index.php/t-112245.html for the tips.

Throws:
org.sandev.basics.util.UIFormAdaptorException

doRenderTabs

protected void doRenderTabs(java.io.PrintWriter out,
                            java.lang.String prefix,
                            org.sandev.ui.sandmessages.Link link,
                            org.sandev.basics.util.UIFormContext uifc,
                            org.sandev.basics.util.UIFormOwner owner,
                            org.sandev.basics.util.AuthUser user,
                            org.sandev.basics.util.UserWorkLog uwl)
                     throws org.sandev.basics.structs.SandException
Like doRenderActions but for tabs, which are always requests. We need to print out a separator break after the so that whatever gets rendered next starts on a fresh line.

Throws:
org.sandev.basics.structs.SandException

debug

protected void debug(org.sandev.basics.util.UIFormOwner owner,
                     java.lang.String text)
Log the given informational message using the UIFormOwner.