blob: afcddf2a596416c383a96e7b5fc0d70d2be4b34a [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
grammar org.eclipse.osbp.ecview.dsl.UIGrammar with org.eclipse.xtext.xbase.Xbase
import "http://osbp.eclipse.org/ecview/dsl/uimodel/semantics" as cfg
import "http://osbp.eclipse.org/ecview/dsl/uimodel/core"
import "http://www.eclipse.org/xtext/common/JavaVMTypes"
import "http://www.eclipse.org/xtext/xbase/Xbase"
import "http://www.eclipse.org/xtext/xbase/Xtype"
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
UiModel returns UiModel:
'package' packageName=QualifiedName
imports+=UiImports*
roots+=UiRootElements*;
UiImports returns UiImports:
'import' importedNamespace=QualifiedNameWithWildcard (';')?;
UiRootElements returns UiRootElements:
UiView | UiViewSet | UiValidatorAlias | UiMobileView;
UiValidatorAlias returns UiValidatorAlias:
'validatorAlias' validator=UiValidator 'as' alias=ID (';')?;
UiValidatorAssignment returns UiValidatorAssignment:
'fieldValidation' field=[UiField] '+=' (validatorDef=UiValidatorDef | validatorAlias=[UiValidatorAlias|QualifiedName]
(';')?);
UiValidatorDef returns UiValidatorDef:
validator=UiValidator;
UiViewSet returns UiViewSet:
'viewset' name=ID '{'
(beanSlots+=UiBeanSlot)*
(bindingEndpointAlias+=UiBindingEndpointAlias)*
'}';
UiBindingEndpointAlias returns UiBindingEndpointAlias:
'dataAlias' endpoint=UiBindingEndpointAssignment 'as' alias=ID (';')?;
UiBeanSlot returns UiBeanSlot:
'datasource' name=ID ':' jvmType=JvmTypeReference ('eventTopic' eventTopic=STRING)? (';')?;
UiBinding returns UiBinding:
'bind' (listBinding?='list')? source=UiBindingEndpointAssignment ((targetToSource?='<')? '--'
(sourceToTarget?='>')?) target=UiBindingEndpointAssignment (';')?;
UiBindingEndpointAssignment returns UiBindingExpression:
((UiTypedBindableDef {UiBindingEndpointAssignment.typedBindableDef=current} path=(UiPathSegment)?)
| (UiCommandBindableDef {UiBindingEndpointAssignment.typedBindableDef=current})
| ({UiBindingEndpointAssignment} typedBindableAlias=[UiTypedBindable] path=(UiPathSegment)?));
UiPathSegment returns UiPathSegment:
{UiPathSegment}
'.' getter=[JvmOperation] path=(UiPathSegment)?;
UiNestedProperty:
{UiNestedProperty}
getter=[JvmOperation] path=(UiPathSegment)?;
UiTypedBindableDef returns UiBindingExpression:
{UiTypedBindableDef}
('[' rawBindable=[UiRawBindable] (rawBindablePath=UiRawBindablePathSegment)? ']' '.' method=[cfg::UxEndpointDef]);
UiTypedBindableRawType returns UiBindingExpression:
{UiTypedBindableRawType}
'[' rawBindable=[UiRawBindable] (rawBindablePath=UiRawBindablePathSegment)? ']';
UiTypedBindableRawTypeAlias:
'ui' type=UiTypedBindableRawType 'as' alias=ID (';')?;
UiRawBindablePathSegment:
{UiRawBindablePathSegment}
('.' | toParent?='..') rawBindable=[UiRawBindable] (path=UiRawBindablePathSegment)?;
UiCommandBindableDef returns UiCommandBindableDef:
{UiCommandBindableDef}
command=UiCommand;
UiCommand returns UiCommand:
UiMobileNavigationCommand | UiOpenDialogCommand | UiSearchWithDialogCommand | UiAddToTableCommand |
UiRemoveFromTableCommand | UiSendEventCommand | UiSetNewInstanceCommand;
UiMobileNavigationCommand:
{UiMobileNavigationCommand}
'navigateTo' targetPage=UiMobileNavigationPage;
UiOpenDialogCommand:
{UiOpenDialogCommand}
'openDialog' dialog=UiDialog;
UiSearchWithDialogCommand:
{UiSearchWithDialogCommand}
'searchWith' dialog=UiSearchDialog;
UiAddToTableCommand:
{UiAddToTableCommand}
'addToTable' table=[UiTable];
UiRemoveFromTableCommand:
{UiRemoveFromTableCommand}
'removeFromTable' table=[UiTable];
UiSetNewInstanceCommand:
{UiSetNewInstanceCommand}
'newInstance' ('for' jvmType=JvmTypeReference)? ('at' target=UiBindingEndpointAssignment);
UiSendEventCommand:
{UiSendEventCommand}
'sendEvent' '(' (noAutoTrigger?='noAutoTrigger')? eventTopic=STRING ')';
UiView returns UiView:
UiIDEView;
UiIDEView returns UiIDEView:
'ideview' name=ID
'{'
(('sharedStateGroup' sharedStateGroup=STRING (';')?)?
& ('category' viewCategory=[cfg::UxViewCategory|QualifiedName] (';')?)?
& ('rootType' jvmType=JvmTypeReference (';')?)?
& ('exposedActions' '{'
exposedActions+=UiExposedAction*
'}')?)
((beanSlots+=UiBeanSlot)
|
(bindingEndpointAlias+=UiBindingEndpointAlias)
|
(bindings+=UiBinding))*
content=UiEmbeddable ('align' contentAlignment=UiAlignment)?
((bindingEndpointAlias+=UiBindingEndpointAlias)
|
(bindings+=UiBinding)
|
(validatorAssignments+=UiValidatorAssignment)
|
(processorAssignments+=UiVisibilityProcessorAssignment))*
'}';
UiExposedAction:
name=ID ('icon' iconName=STRING)? 'id' (=> actionReference=[cfg::UxAction|QualifiedName] | actionID=STRING)
(checkDirty?='checkDirty')? ('externalCommand' externalCommandId=STRING)? (';')?;
UiMobileNavBarAction:
name=ID ('icon' iconName=STRING)? 'id' (=> actionReference=[cfg::UxAction|QualifiedName] | actionID=STRING) (';')?;
UiMobileView returns UiMobileView:
'mobile' name=ID
'{'
(('sharedStateGroup' sharedStateGroup=STRING (';')?)?
& ('rootType' jvmType=JvmTypeReference (';')?)?)
((beanSlots+=UiBeanSlot)
|
(bindingEndpointAlias+=UiBindingEndpointAlias))*
content=UiMobileEmbeddable ('align' contentAlignment=UiAlignment)?
((bindingEndpointAlias+=UiBindingEndpointAlias)
|
(bindings+=UiBinding)
|
(validatorAssignments+=UiValidatorAssignment)
|
(processorAssignments+=UiVisibilityProcessorAssignment))*
'}';
UiI18nInfo:
'i18n' key=STRING;
UiGridLayout returns UiGridLayout:
{UiGridLayout}
'gridlayout'
('('
(('columns=' columns=INT)?
& (i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?)
')')?
name=ID?
'{'
(contents+=UiGridLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiVisibilityProcessorAssignment:
{UiVisibilityProcessorAssignment}
processor=UiVisibilityProcessor;
UiGridLayoutAssigment returns UiGridLayoutAssigment:
element=UiEmbeddable ('align' alignment=UiAlignment)?;
UiFormLayout:
{UiFormLayout}
'form'
('('
(i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?
')')?
name=ID?
'{'
(contents+=UiFormLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiFormLayoutAssigment:
element=UiEmbeddable;
UiVerticalLayout:
{UiVerticalLayout}
'verticalLayout'
('('
(i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?
')')?
name=ID?
'{'
(contents+=UiVerticalLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiVerticalLayoutAssigment:
element=UiEmbeddable ('align' alignment=UiAlignment)?;
UiMobileVerticalLayout returns UiVerticalLayout:
{UiVerticalLayout}
'mobileVerticalLayout'
('('
(i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?
')')?
name=ID?
'{'
(contents+=UiMobileVerticalLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileVerticalLayoutAssigment returns UiVerticalLayoutAssigment:
element=UiMobileEmbeddable ('align' alignment=UiAlignment)?;
UiMobileNavigationRoot returns UiMobileNavigationRoot:
{UiMobileNavigationRoot}
'navRoot'
name=ID?
'{'
(contents+=UiMobileNavigationRootAssigment)
'}';
UiMobileNavigationRootAssigment returns UiMobileNavigationRootAssigment:
element=UiMobileNavigationPage;
UiHorizontalLayout:
{UiHorizontalLayout}
'horizontalLayout'
('('
(i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?
')')?
name=ID?
'{'
// (autowire?="autowire" 'source' autoWireSource=UiBindingEndpointAssignment)?
(contents+=UiHorizontalLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiHorizontalLayoutAssigment returns UiHorizontalLayoutAssigment:
element=UiEmbeddable ('align' alignment=UiAlignment)?;
UiMobileHorizontalLayout returns UiHorizontalLayout:
{UiHorizontalLayout}
'mobileHorizontalLayout'
('('
(i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?
')')?
name=ID?
'{'
// (autowire?="autowire" 'source' autoWireSource=UiBindingEndpointAssignment)?
(contents+=UiMobileHorizontalLayoutAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileHorizontalLayoutAssigment returns UiHorizontalLayoutAssigment:
element=UiMobileEmbeddable ('align' alignment=UiAlignment)?;
UiMobileHorizontalButtonGroup returns UiHorizontalButtonGroup:
{UiHorizontalButtonGroup}
'horizontalButtonGroup'
('('
((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?
& (readonly?="readonly")?) ')')?
name=ID?
'{'
(contents+=UiMobileHorizontalButtonGroupAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileHorizontalButtonGroupAssigment returns UiHorizontalButtonGroupAssigment:
element=UiMobileEmbeddable;
UiMobileVerticalComponentGroup returns UiVerticalComponentGroup:
{UiVerticalComponentGroup}
'verticalGroup'
('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')?
name=ID?
'{'
(contents+=UiMobileVerticalComponentGroupAssigment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileVerticalComponentGroupAssigment returns UiVerticalComponentGroupAssigment:
element=UiMobileEmbeddable;
UiSearchPanel:
{UiSearchPanel}
'searchPanel'
('('
((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?)
')')?
name=ID?
'{'
'type' jvmType=JvmTypeReference (';')?
(contents+=UiSearchField)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileSearchPanel:
{UiMobileSearchPanel}
'mobileSearchPanel'
('('
((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?)
')')?
name=ID?
'{'
'type' jvmType=JvmTypeReference (';')?
(contents+=UiSearchField)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileTabSheet:
{UiMobileTabSheet}
'mobileTab'
('('
((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?)
')')?
name=ID?
'{'
(tabs+=UiMobileTabAssignment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileTabAssignment:
'tab' (name=ID)? element=UiMobileEmbeddable;
UiTabSheet:
{UiTabSheet}
'tabsheet'
('(' ((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?)
')')?
name=ID?
'{'
(tabs+=UiTabAssignment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiTabAssignment:
'tab' (name=ID)? element=UiEmbeddable;
UiSplitpanel:
'splitter' ('(' (i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)? ')')? name=ID
'{'
(('first' firstContent=UiSplitpanelAssigment)
& ('second' secondContent=UiSplitpanelAssigment)
& ('splitPos' splitPosition=INT)?
& (readonly?="readonly")?)
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiSplitpanelAssigment:
element=UiEmbeddable;
UiPanel:
'panel' ('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')?
name=ID
'{'
'content' content=UiEmbeddable
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiDialog:
{UiDialog}
'dialog' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID? '{'
('type' jvmType=JvmTypeReference (';')?)?
(content=UiDialogAssignment (';')?)?
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiDialogAssignment:
element=UiEmbeddable;
UiSearchDialog:
{UiSearchDialog}
'searchdialog' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID? '{'
('type' jvmType=JvmTypeReference)?
('search' '{'
searchFields+=UiDialogSearchFieldAssignment*
'}')?
('content' '{'
content=UiDialogAssignment
'}')?
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiDialogSearchFieldAssignment:
element=UiSearchField;
UiMobileNavigationPage:
{UiMobileNavigationPage}
'navPage' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID? '{'
('type' jvmType=JvmTypeReference (';')?)?
('navbarActions' '{'
barActions+=UiMobileNavBarAction*
'}')?
(contents+=UiMobileNavigationPageAssignment)*
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}';
UiMobileNavigationPageAssignment:
element=UiMobileEmbeddable ('align' alignment=UiAlignment)?;
UiPoint returns UiPoint:
x=INT '/' y=INT;
UiTextField returns UiTextField:
{UiTextField}
'textfield'
('('
(('maxLength=' maxLength=INT)?
& ('minLength=' minLength=INT)?
& ('regex=' regex=STRING)?
& ('styles' styles=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiPasswordField returns UiPasswordField:
{UiPasswordField}
'passwordField'
('('
(('styles' styles=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiMaskedTextField returns UiMaskedTextField:
{UiMaskedTextField}
'maskedText'
('('
(('styles' styles=STRING)?
& ('mask=' mask=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiMaskedNumericField returns UiMaskedNumericField:
{UiMaskedNumericField}
'maskedNumeric'
('('
(('styles' styles=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiMaskedDecimalField returns UiMaskedDecimalField:
{UiMaskedDecimalField}
'maskedDecimal'
('('
(('styles' styles=STRING)?
& ('mask=' mask=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiPrefixedMaskedTextField returns UiPrefixedMaskedTextField:
{UiPrefixedMaskedTextField}
'maskedTextWithPrefix'
('('
(('styles' styles=STRING)?
& ('mask=' mask=STRING)?
& ('prefixes=' '(' prefixMasks+=UiPrefixToMaskMapEntry (',' prefixMasks+=UiPrefixToMaskMapEntry)* ')')?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiPrefixToMaskMapEntry returns UiPrefixToMaskMapEntry:
{UiPrefixToMaskMapEntry}
'prefix' key=STRING 'mask' value=STRING;
UiRichTextArea returns UiRichTextArea:
{UiRichTextArea}
'richtextArea'
('('
(('styles' styles=STRING)?
& (i18nInfo=UiI18nInfo)?
& (asBlob?="asBlob")?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiSuggestTextField returns UiSuggestTextField:
{UiSuggestTextField}
'suggestText' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID?
('{'
(('type' jvmType=JvmTypeReference (';')?)?
& ('captionField' itemCaptionProperty=[JvmOperation] (';')?)?
& ('filterField' itemFilterProperty=[JvmOperation] (';')?)?
& ('uuidField' itemUUIDProperty=[JvmOperation] (';')?)?
& (autoHidePopup?='autoHidePopup')?
& (readonly?='readonly')?)
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiBeanReferenceField returns UiBeanReferenceField:
{UiBeanReferenceField}
'referenceField'
('('
((i18nInfo=UiI18nInfo)?
& ('styles' styles=STRING)?)
')')?
name=ID?
('{'
(('type' jvmType=JvmTypeReference (';')?)?
& ('refSource' referenceSourceJvmType=JvmTypeReference ':' referenceSourceField=[JvmField] (';')?)?
& ('captionField' captionProperty=UiNestedProperty (';')?)?
& ('descriptionField' descriptionProperty=UiNestedProperty (';')?)?
& ('imageField' imageProperty=UiNestedProperty (';')?)?
& ('inMemoryService' inMemoryBeanProvider=JvmTypeReference (';')?)?)
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiSearchField:
{UiSearchField}
'searchfield' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? property=UiNestedProperty;
UiTextArea returns UiTextArea:
{UiTextArea}
'textarea'
('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiDateField returns UiDateField:
{UiDateField}
'datefield'
('('
((dateFormat=UiDateFormat)?
& (resolution=UiDateTimeResolution)?
& ('styles' styles=STRING)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
enum UiDateFormat:
DATE="date" | DATE_TIME="datetime" | TIME="time";
enum UiDateTimeResolution:
UNDEFINED="undefined" | SECOND="second" | MINUTE="minute" | HOUR="hour" | DAY="day" | MONTH="month" | YEAR="year";
UiBrowser returns UiBrowser:
{UiBrowser}
'browser'
('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')? name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiProgressBar returns UiProgressBar:
{UiProgressBar}
'progressbar' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiImage returns UiImage:
{UiImage}
'image' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID?
('{'
('iconPath' value=STRING (';')?)?
(bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiTable returns UiTable:
{UiTable}
'table' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID?
('{'
(('type' jvmType=JvmTypeReference (';')?)?
& ('selectionType' selectionType=UiSelectionType (';')?)?
& ('imageField' itemImageProperty=[JvmOperation] (';')?)?
& (consumeBeanService?='useBeanService' (';')?)?
& (readonly?="readonly")?)
columnAssignment=UiColumnsAssignment?
sortOrderAssignment=UiSortOrderAssignment?
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiComboBox returns UiComboBox:
{UiComboBox}
'combo' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID?
('{'
(('type' jvmType=JvmTypeReference (';')?)?
& ('captionField' itemCaptionProperty=[JvmOperation] (';')?)?
& ('descriptionField' descriptionProperty=UiNestedProperty (';')?)?
& ('imageField' itemImageProperty=[JvmOperation] (';')?)?
& (consumeBeanService?='useBeanService' (';')?)?
& (readonly?='readonly')?)
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiButton:
{UiButton}
'button'
('('
((i18nInfo=UiI18nInfo)?
& (readonly?='readonly')?
& ('styles' styles=STRING)?)
')')? name=ID?;
UiMobileNavigationButton:
{UiMobileNavigationButton}
'navButton' ('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')?
name=ID? (targetPage=UiMobileNavigationPage | 'alias'
targetPageAlias=[UiMobileNavigationPage]);
UiMobileSwitch returns UiSwitch:
{UiSwitch}
'switchIt' ('(' ((i18nInfo=UiI18nInfo)? & (readonly?="readonly")? & ('styles' styles=STRING)?) ')')? name=ID? ('{'
(processorAssignments+=UiVisibilityProcessorAssignment)*
(validators+=UiValidator
|
bindings+=UiBinding)*
'}')?;
UiLabel:
{UiLabel}
'label' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')? name=ID? ('{'
(processorAssignments+=UiVisibilityProcessorAssignment)*
(bindings+=UiBinding)*
'}')?;
UiDecimalField returns UiDecimalField:
{UiDecimalField}
'decimalField'
('('
((noGrouping?='noGrouping')?
& (noMarkNegative?='noMarkNegative')?
& ('styles' styles=STRING)?
& ('precision=' precision=INT)?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiOptionsGroup:
{UiOptionsGroup}
'optionsgroup' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')?
name=ID?
('{'
(('type' jvmType=JvmTypeReference)?
& ('selectionType' selectionType=UiSelectionType)?
& ('captionField' itemCaptionProperty=[JvmOperation])?
& ('descriptionField' descriptionProperty=UiNestedProperty (';')?)?
& ('imageField' itemImageProperty=[JvmOperation])?
& (consumeBeanService?='useBeanService' (';')?)?
& (readonly?="readonly")?)
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiList:
{UiList}
'listSelect' ('(' ((i18nInfo=UiI18nInfo)? & ('styles' styles=STRING)?) ')')?
name=ID?
('{'
(('type' jvmType=JvmTypeReference)?
& ('selectionType' selectionType=UiSelectionType)?
& ('captionField' itemCaptionProperty=[JvmOperation])?
& ('descriptionField' descriptionProperty=UiNestedProperty (';')?)?
& ('imageField' itemImageProperty=[JvmOperation])?
& (consumeBeanService?='useBeanService' (';')?)?
& (readonly?="readonly")?)
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
enum UiSelectionType returns UiSelectionType:
SINGLE='single' | MULTI='multi' | NONE='none';
enum UiAlignment:
UNDEFINED="undefined"
| BOTTOM_CENTER="bottom-center" | BOTTOM_LEFT="bottom-left" | BOTTOM_RIGHT="bottom-right" | BOTTOM_FILL="bottom-fill"
| MIDDLE_CENTER="middle-center" | MIDDLE_LEFT="middle-left" | MIDDLE_RIGHT="middle-right" | MIDDLE_FILL="middle-fill"
| TOP_CENTER="top-center" | TOP_LEFT="top-left" | TOP_RIGHT="top-right" | TOP_FILL="top-fill"
| FILL_CENTER="fill-center" | FILL_LEFT="fill-left" | FILL_RIGHT="fill-right" | FILL_FILL="fill-fill";
UiColumnsAssignment:
{UiColumnsAssignment}
'columns' '{'
columns+=UiColumn*
'}';
UiSortOrderAssignment returns UiSortOrderAssignment:
{UiSortOrderAssignment}
'sort' '{'
columns+=UiSortOrder*
'}';
UiSortOrder:
'column' property=UiNestedProperty ('desc' | asc?="asc")? (';')?;
UiColumn returns UiColumn:
{UiColumn}
'column' property=UiNestedProperty ('icon' iconName=STRING)? (';')?;
UiEmbeddable:
UiLayout | UiField | UiAction | UiTabSheet;
UiMobileEmbeddable:
UiMobileLayout | UiMobileField | UiMobileTabSheet | UiMobileAction;
UiMobileLayout:
UiMobileHorizontalButtonGroup | UiMobileVerticalComponentGroup | UiMobileNavigationPage | UiMobileHorizontalLayout |
UiMobileVerticalLayout | UiMobileSearchPanel | UiMobileNavigationRoot;
UiMobileField:
UiMobileSwitch | UiTextField | UiMaskedTextField | UiMaskedNumericField | UiMaskedDecimalField |
UiPrefixedMaskedTextField | UiRichTextArea | UiPasswordField | UiSuggestTextField | UiNumericField | UiTable |
UiComboBox | UiImage
| UiSearchField | UiLabel |
UiDecimalField | UiTextArea | UiDateField | UiBrowser | UiProgressBar | UiOptionsGroup;
UiLayout:
UiGridLayout | UiFormLayout | UiHorizontalLayout | UiVerticalLayout | UiSplitpanel | UiPanel | UiSearchPanel;
UiField:
UiTextField | UiMaskedTextField | UiMaskedNumericField | UiMaskedDecimalField | UiPrefixedMaskedTextField |
UiRichTextArea | UiPasswordField | UiSuggestTextField | UiList | UiNumericField | UiCheckBox | UiTable | UiComboBox |
UiImage | UiSearchField | UiLabel |
UiDecimalField |
UiTextArea | UiDateField | UiBrowser | UiProgressBar | UiOptionsGroup | UiBeanReferenceField;
UiAction:
UiButton;
UiMobileAction:
UiMobileNavigationButton | UiButton;
UiNumericField:
{UiNumericField}
'numericField'
('('
((noGrouping?='noGrouping')?
& ('styles' styles=STRING)?
& (noMarkNegative?='noMarkNegative')?
& (i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?)
')')?
name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiCheckBox:
{UiCheckBox}
'checkbox' ('('
((i18nInfo=UiI18nInfo)?
& (readonly?="readonly")?
& ('styles' styles=STRING)?)
')')? name=ID?
('{'
(validators+=UiValidator
|
bindings+=UiBinding)*
(processorAssignments+=UiVisibilityProcessorAssignment)*
'}')?;
UiValidator:
UiMaxLengthValidator | UiMinLengthValidator | UiRegexpValidator | UiXbaseValidator | UiBeanValidationValidator;
UiMaxLengthValidator returns UiMaxLengthValidator:
{UiMaxLengthValidator}
'MaxLengthValidator' (name=ID)? '(' maxLength=INT ')' (errorCode=UiErrorCode)?;
UiMinLengthValidator returns UiMinLengthValidator:
{UiMinLengthValidator}
'MinLengthValidator' (name=ID)? '(' minLength=INT ')' (errorCode=UiErrorCode)?;
UiRegexpValidator returns UiRegexpValidator:
{UiRegexpValidator}
'RegexValidator' (name=ID)? '(' regExpression=STRING ')' (errorCode=UiErrorCode)?;
UiXbaseValidator returns UiXbaseValidator:
{UiXbaseValidator}
'Expression' name=ID '(' jvmType=JvmTypeReference ')'
(errorCodes+=UiErrorCode*)
expression=XBlockExpression?;
UiBeanValidationValidator returns UiBeanValidationValidator:
{UiBeanValidationValidator}
'BeanValidationValidator' (name=ID)?;
UiErrorCode:
'code' name=ID (defaultMessage=STRING)?;
UiVisibilityProcessor:
{UiVisibilityProcessor}
'visibility' name=ID '{'
(dataUsed+=UiBindingEndpointAlias
|
changeTriggers+=UiChangeTrigger
|
importedElements+=UiTypedBindableRawTypeAlias)*
(rule=UiXbaseVisibilityRule)?
'}';
UiXbaseVisibilityRule:
expression=XBlockExpression;
UiChangeTrigger:
'fireOn' endpoint=UiBindingEndpointAssignment 'as' alias=ID (';')?;