Manipulating the abstract user interface tree

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:
  1. 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.
  2. 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.