g_HolderContentsGroup_GroupLayout
GroupLayout
A grouping of layouts where only one is visible at a time.
Description
A collection of zero or more sub-layouts (group, splitter or table) where only one sub-layout is visible at a time. A tab is displayed for each sub-layout that has its caption property set. Tabs are configured to display at the top, bottom, left or right of the group. Alternatively, with tabs set to shortcutBottom a series of vertically stacked buttons are displayed underneath the sub-layout stretched across the entire width.
NexJ Studio uses the shortcutBottom style for grouping its layers (Presentation, Business, Security, ...).
Switching to a different sub-layout is done either by the user clicking its tab, programmatically in script, or automatically using a polymorphic binding. With a polymorphic binding, the group layout's value property is set and each sub-layout sets its case property such that the first sub-layout that matches the value is made visible.
Properties
caption : CaptionTypeString indentifier for caption display in the UI.
Valid values based on“string”. 80 (maxLength) Caption can be a maximum of 80 characters long.
case : stringA space separated list of metaclass names, primitive values or 'null' used to drive polymorphic display.
The case part of a polymorphic form switch. This is conceptually similar to a JAVA switch, but for UI. The value property of a parent GroupLayout contains the expression that the cases are evaluated against. If this resolves to a non-primitive, the cases are compared against the non-primitive's class type. Note: The class, all subclasses, and the 'null' case should be handled. If it resolves to a primitive, the cases are compared directly with the value. Note: All possible values and the 'null' case should be handled. That being said Enumerated values and booleans are most appropriate. All possible values must be covered by the cases - there is no 'else' case. Within the GroupLayout the cases are checked from left to right. The first Layout to match will be the one to display.- Example
Non-primitive case: The parent Grouplayout value property is set to EntityList. This is
a View Path to the the EntityList form. There are three child Layouts with cases of
1. null 2. Person UserPerson 3. Company. The currently selected instance in the model of
the EntityList form will determine which Layout will display. If an instance of Company
is selected in the EntityList then Layout 3 displays.
Primitive case: The parent GroupLayout value property is set to EntityList isPerson.
This is a View Path to the EntityList form and an Association Path to the isPerson attribute.
There again are three child Layouts with cases of 1. null 2. #t 3. #f. As
we move through the EntityList the Layouts will dynamically display based on the values in case.
- See
- GroupLayout'value and the Person.screen detail GroupLayout
closeIcon : stringClose icon provides a means of visual recognition to close a group layout tab.
collection : stringIf blank, the GroupLayout displays chidren layouts configured in the metadata. Otherwise, the GroupLayout will be displaying layouts from the collection.
An expression that specifies that a collection model must be set on the control.- Example
(@) - all instances of the associated class for Forms and form controls.
(@@ ClassName) - all instances of the class specified by ClassName
(ControlName1 assoc1 ... assocN) ... (ControlNameM assoc1 ... assocX) - all instances filtered by the parent instances.
(@ assoc1 ... assocN) - variant of above example. All instances relative to the Form model.
collectionCaption : identifierListCaption bind for group tab caption. Must be an attribute of the GroupLayout's collection.
Valid values based on“token”. (:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*\s+)*(:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*)? Each element in the list must begin with a letter or underscore. Elements are space delimited.
collectionIcon : identifierListBind for group tab icon. Must be an attribute of the GroupLayout's collection.
Valid values based on“token”. (:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*\s+)*(:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*)? Each element in the list must begin with a letter or underscore. Elements are space delimited.
collectionLazy : booleanValid when child collection. Specifies whether a separate read request will be generated.
If true a separate read request will be generated. Otherwise, a subcollection request will be appended to the parent read query.collectionName : identifierListCaption bind for group tab view name. Must be an attribute of the GroupLayout's collection.
Valid values based on“token”. (:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*\s+)*(:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*)? Each element in the list must begin with a letter or underscore. Elements are space delimited.
collectionOrderBy : stringOptional order by clause to be added to the GroupLayout collection read query: ((attr1 . asc1) ... (attrN . ascN)).
List of attributes or attribute and boolean pairs to indicate ascending (true) or descending (false).- Example
((name . #t) (company . #f))
collectionQuery : stringList of additional attributes to include in collection read query.
collectionWhere : stringOptional clause to be added to collection read query.
commitOnTabChange : booleanFire a sysSave UIEvent for every tab change.
control : identifierThe control type this should be rendered with.
Valid values based on“string”. :?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)* Value must begin with a letter or an underscore. Case and length are not restricted. Letters, numbers and underscores are allowed. Colon is used as a scope separator. Spaces and other punctuation characters are not allowed.
delete : stringCustom delete event name.
deletePrompt : stringDelete prompt string indentifier. Valid if promptOnDelete is true.
The string indentifier may accept the Class name, and instance name args.dynamicSize : booleanTrue to make layout resize to visible layout size. False to apply maximum layout size.
enabled : stringThe attribute, association path, or a constant returning boolean to set enablement.
factory : stringCustom factory event name.
horizontalMargin : intHorizontal space from exterior elements. Must be an integer.
horizontalSpacing : intHorizontal space from interior elements. Must be an integer.
icon : stringIcon provides a means of visual recognition for the layout.
locale : stringThe locale for the GroupLayout. Must be a two letter abbreviation.
- Example
en, fr, de for English, French, and Dutch respectively
menu : identifierMenu object contributing to the Application menu bar. Must refer to an existing menu defined in the parent.
Valid values based on“string”. :?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)* Value must begin with a letter or an underscore. Case and length are not restricted. Letters, numbers and underscores are allowed. Colon is used as a scope separator. Spaces and other punctuation characters are not allowed.
name : uiIdentifierUniquely indentifies the GroupLayout.
Valid values based on“string”. :?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)* Value must begin with a letter. Case and length are not restricted. Letters and numbers are allowed. Colon is used as a scope separator. Spaces and other punctuation characters are not allowed.
overflow : booleanSets content overflow behavior for Rich web client.
promptOnDelete : booleanPrompt the user before deleting an item.
read : stringCustom read event. [<class>]'<event> <arg1> ... <argN>
Specification: [<class>]'<event> <arg1> ... <argN>
<class> is an optional class symbol. When omitted ActiveNode's class is used. <event> is a read event symbol. <arg#> is an event argument value which can be either a constant or a scheme expression evaluating to a constant at run-time on the client, using special local variables provided by the framework: this (=controller), :node (=active node), :attributes, :where, :orderBy, :count, :offset, :xlock, or a UI initializer variable.
If arguments are not specified, a default list is supplied by the framework: :attributes :where :orderBy :count :offset :xlock
Examples:
a) Generate a request to 'readList event with default arguments: readList
b) Generate request to readList event with attributes, and orderBy argument values supplied by the framework. readList :attributes :orderBy
c) Generate request to Contact'readDetail with attributes supplied by the framework, and the contact argument calculated using (current-contact) client library function. Contact'readDetail :attributes (current-contact this :node)
In a library: (define (current-contact controller node) ... )
d) Generate request to 'read event with a constant attribute list: read '(lastName firstName) :where :orderBy :count :offset :xlocksimple : booleanDeprecated. Do not use.
style : stringSpecifies the style for the layout.
tabIndex : longThe index number of the tabbable control. Must be a long integer.
tabLeftMargin : intThe amount of space added to the left of group layout tabs.
toolbar : identifierMenu object contributing to the Application toolbar. Must refer to an existing menu defined in the parent.
Valid values based on“string”. :?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)* Value must begin with a letter or an underscore. Case and length are not restricted. Letters, numbers and underscores are allowed. Colon is used as a scope separator. Spaces and other punctuation characters are not allowed.
tooltip : stringString indentifier to represent the tooltip associated with the layout.
tree : identifierListTODO: comment attribute tree
Valid values based on“token”. (:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*\s+)*(:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*)? Each element in the list must begin with a letter or underscore. Elements are space delimited.
treeNodes : identifierListTODO: comment attribute treeNodes
Valid values based on“token”. (:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*\s+)*(:?[\p{L}_][\p{L}\p{N}_]*(:[\p{L}_][\p{L}\p{N}_]*)*)? Each element in the list must begin with a letter or underscore. Elements are space delimited.
type : GroupLayoutKindSpecifies display location of tabs.
Valid values based on“string”. top Tabs will appear at the top of the layout.
bottom Tabs will appear at the bottom of the layout.
left Tabs will appear on the left side of the layout. Verticle text may be specified when using this value.
right Tabs will appear on the right side of the layout. Verticle text may be specified when using this value.
shortcutBottom Tabs will appear on the bottom side of the layout. Text will be rendered horizontally
shortcutLeft Tabs will appear on the left side of the layout. Text will be rendered horizontally
update : stringCustom update event name.
value : stringA View Path followed by an optional Association Path used to drive polymorphic display.
The expression part of a polymorphic form switch. This is conceptually similar to a JAVA switch, but for UI. The value property contains the expression that the cases are evaluated against. If this resolves to a non-primitive, the cases are compared against the non-primitive's class type. Note: The class, all subclasses, and the 'null' case should be handled. If this resolves to a primitive, the cases are compared directly with the value. Note: All possible values and the 'null' case should be handled. That being said Enumerated values and booleans are most appropriate. Within the GroupLayout the cases are checked from left to right. The first Layout to match will be the one to display. If the GroupLayout is on a Form and the value is (@), the association is defaulted to the current instance of the form's underlying model.- Example
See the GroupLayout's case property for an example.
- See
- GroupLayout'case and the Person.screen detail GroupLayout
verticalMargin : intVertical space from exterior elements. Must be an integer.
verticalSpacing : intVertical space from interior elements. Must be an integer.
verticalText : booleanSpecifies if text is vertical. Applies only if 'type' attribute is LEFT or RIGHT.
visible : stringThe attribute, association path, or a constant returning boolean to set visibility.
Content
Sequence of:
Choice of:
Parents
Parent topic: t_TableLayoutType_Rows_Row_Holder
Parent topic: t_SplitterLayoutType_Holder
Parent topic: t_ActionTileType_Icon
Parent topic: t_ActionTileType_Summary
Parent topic: t_ActionTileType_ActionIcon
Parent topic: t_ExpandableTileType_Icon
Parent topic: t_ExpandableTileType_Summary
Parent topic: t_ExpandableTileType_ActionIcon
Parent topic: t_ExpandableTileType_Detail
Parent topic: t_ExpandableTileType_Attachment
Parent topic: t_ExpandableTileType_Toolbar