This documentation provides information on the Natural for Ajax control concept. It is recommended that you first become familiar with the "normal development" of screens inside Natural for Ajax.
When do you need custom controls? In general there are two cases:
You want to combine existing controls to form complex controls with a certain dedicated task. Maybe you want to define an "address area" control which consists of a certain arrangement of fields and labels that form an address. These kinds of controls are called "macro controls" in this documentation - you take what is available and group it into certain units.
You want to create new controls - maybe you need some special kind of icon with a certain behavior.
While macro controls do not require to deal with JavaScript and HTML, creating completely new controls requires knowledge of JavaScript and HTML and the use of the JavaScript library functions that are available via the Natural for Ajax framework.
Natural for Ajax supports a flexible and open control framework. The basic concepts of this control framework are XML as the layout definition format and interfaces for integrating control definitions into the page generation process of Natural for Ajax. This framework is not specific to custom controls. All Natural for Ajax controls are using this control framework themselves.
The first concept is the definition of controls, that is, control tags with certain attributes which you can integrate via a tag library concept into layout definitions. The second concept is the binding of the control to server-side Natural adapter fields and events. Following the strict Natural for Ajax architecture, dynamic controls have to transfer their data at runtime to/from Natural adapter fields. This binding concept is important for new controls and for macro controls:
When creating new controls, you want to bind the control to corresponding Natural adapter fields and events.
When creating macro controls (for example, an address area), you sometimes want your control to provide some additional server-side logic. For advanced controls, this logic may go beyond the logic of the single controls which make up the macro control.