Modifying the AUI tree with user interface specific
built-in classes
The objects of the abstract
user interface tree can be queried and modified at runtime
with specific built-in classes like ui.Form,
provided to manipulate form elements.
The next
code example gets the current window object, then gets
the current form in that window, and hides a group-box form element
identified by the name "
gb1":
DEFINE w ui.Window
DEFINE f ui.Form
LET w = ui.Window.getCurrent()
LET f = w.getForm()
CALL f.setElementHidden("gb1",1)
Using
the user interface specific built-in classes is the recommended way
to modify the AUI tree in your programs.
Using low-level APIs to modify the AUI tree
In very special cases, you can also directly access
the nodes of the AUI tree by using DOM built-in classes
like om.DomDocument and om.DomNode.
Important: As we continue
to add new features to the product we encounter
situations that may force us to modify the AUI Tree in order to add
new elements types and attributes. If you are
using the low level API's to directly modify the
tree, your code may be slightly impacted when we release a
change in the AUI Tree structure. In order to minimize
the impact of any such AUI tree definition changes,
we would like to suggest the following course of
action with regards to use of the DOM/SAX API's:
- Place all custom calls to the DOM/SAX API within centralized Library
functions that are accessible to all modules,
as opposed to scattering function calls throughout
your code base.
- Do not create nodes or change attributes that are not explicitly
documented as modifiable. For example, TopMenu or ToolBar
nodes can be created and configured dynamically,
but you should not add FormField nodes
to existing forms, or modify yourself the active attribute
of fields or actions.
To get the user interface nodes at runtime, the
language provides different kinds of API functions
or methods, according to the context. For example, to get the root
of the AUI tree, call the ui.Interface.getRootNode() method.
You can also get the current form node with ui.Form.getNode() or
search for an element by name with the ui.Form.findNode() method.