//Literal value selector
if ( showLiteralSelector ) {
form.addAttribute( Constants.INSTANCE.LiteralValue() + ":",
widgets( lit,
new InfoPopup( Constants.INSTANCE.LiteralValue(),
Constants.INSTANCE.LiteralValTip() ) ) );
}
//Template key selector
if ( modeller.isTemplate() ) {
String templateKeyLabel = Constants.INSTANCE.TemplateKey();
Button templateKeyButton = new Button( templateKeyLabel );
templateKeyButton.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
con.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
doTypeChosen( form );
}
} );
form.addAttribute( templateKeyLabel + ":",
widgets( templateKeyButton,
new InfoPopup( templateKeyLabel,
Constants.INSTANCE.LiteralValTip() ) ) );
}
//Divider, if we have any advanced options
if ( showVariableSelector || showFormulaSelector || showExpressionSelector ) {
form.addRow( new HTML( "<hr/>" ) );
form.addRow( new SmallLabel( Constants.INSTANCE.AdvancedOptions() ) );
}
//Show variables selector, if there are any variables in scope
if ( showVariableSelector ) {
List<String> bindingsInScope = this.model.getBoundVariablesInScope( this.constraint );
if ( bindingsInScope.size() > 0 || DataType.TYPE_COLLECTION.equals( this.fieldType ) ) {
final Button bindingButton = new Button( Constants.INSTANCE.BoundVariable() );
//This Set is used as a flag to know whether the button has been added; due to use of callbacks
final Set<Button> bindingButtonContainer = new HashSet<Button>();
for ( String var : bindingsInScope ) {
isApplicableBindingsInScope( var,
new Callback<Boolean>() {
@Override
public void callback( final Boolean result ) {
if ( Boolean.TRUE.equals( result ) ) {
if ( !bindingButtonContainer.contains( bindingButton ) ) {
bindingButtonContainer.add( bindingButton );
bindingButton.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
con.setConstraintValueType( SingleFieldConstraint.TYPE_VARIABLE );
doTypeChosen( form );
}
} );
form.addAttribute( Constants.INSTANCE.AVariable(),
widgets( bindingButton,
new InfoPopup( Constants.INSTANCE.ABoundVariable(),
Constants.INSTANCE.BoundVariableTip() ) ) );
}
}
}
} );
}
}
}
//Formula selector
if ( showFormulaSelector ) {
Button formula = new Button( Constants.INSTANCE.NewFormula() );
formula.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
con.setConstraintValueType( SingleFieldConstraint.TYPE_RET_VALUE );
doTypeChosen( form );
}
} );
form.addAttribute( Constants.INSTANCE.AFormula() + ":",
widgets( formula,
new InfoPopup( Constants.INSTANCE.AFormula(),
Constants.INSTANCE.FormulaExpressionTip() ) ) );
}
//Expression selector
if ( showExpressionSelector ) {
Button expression = new Button( Constants.INSTANCE.ExpressionEditor() );
expression.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
con.setConstraintValueType( SingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE );
doTypeChosen( form );
}
} );
form.addAttribute( Constants.INSTANCE.ExpressionEditor() + ":",
widgets( expression,
new InfoPopup( Constants.INSTANCE.ExpressionEditor(),
Constants.INSTANCE.ExpressionEditor() ) ) );
}
form.show();
}