ULC is designed to support a variety of client environments. Since the resolution and capabilities of the client machine cannot be known at development time, ULC uses a declarative layout mechanism to specify the user interface without having to specify actual widget sizes and positions.
Figure 1: ULC Layout
The ULC layout mechanism is based on a simplified version of the Swing GridBag layout. The developer positions widgets within a virtual grid, specifying whether the widget can span across one or more cells of the grid, alignment within the cell is specified as well as the semantics of what should happen to the widget when its enclosing cell is expanded. This layout mechanism allows the UI Engine to optimally handle different screen resolutions and available fonts while offering sensible resize semantics.
The UI Engine supports a comprehensive list of widgets that are well suited to building commercial quality applications. For those organizations that require additional functionality the UI Engine can be extended using custom widgets and third party Java beans that are then immediately available to all ULC applications.