Search in sources :

Example 1 with BaseSingleFieldConstraint

use of org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint in project drools-wb by kiegroup.

the class ConstraintValueEditor method showTypeChoice.

/**
 * Show a list of possibilities for the value type.
 */
private void showTypeChoice(final BaseSingleFieldConstraint con) {
    CustomFormConfiguration customFormConfiguration = getWorkingSetManager().getCustomFormConfiguration(modeller.getPath(), factType, fieldName);
    if (customFormConfiguration != null) {
        if (!(con instanceof SingleFieldConstraint)) {
            Window.alert("Unexpected constraint type!");
            return;
        }
        final CustomFormPopUp customFormPopUp = new CustomFormPopUp(GuidedRuleEditorImages508.INSTANCE.Wizard(), GuidedRuleEditorResources.CONSTANTS.FieldValue(), customFormConfiguration);
        final SingleFieldConstraint sfc = (SingleFieldConstraint) con;
        customFormPopUp.addOkButtonHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                sfc.setConstraintValueType(SingleFieldConstraint.TYPE_LITERAL);
                sfc.setId(customFormPopUp.getFormId());
                sfc.setValue(customFormPopUp.getFormValue());
                doTypeChosen(customFormPopUp);
            }
        });
        customFormPopUp.show(sfc.getId(), sfc.getValue());
        return;
    }
    final FormStylePopup form = new FormStylePopup(GuidedRuleEditorImages508.INSTANCE.Wizard(), GuidedRuleEditorResources.CONSTANTS.FieldValue());
    Button lit = new Button(GuidedRuleEditorResources.CONSTANTS.LiteralValue());
    int litValueType = isDropDownDataEnum && dropDownData != null ? SingleFieldConstraint.TYPE_ENUM : SingleFieldConstraint.TYPE_LITERAL;
    lit.addClickHandler(getValueTypeFormOnClickHandler(con, form, litValueType));
    boolean showLiteralSelector = true;
    boolean showFormulaSelector = !OperatorsOracle.operatorRequiresList(con.getOperator());
    boolean showVariableSelector = !OperatorsOracle.operatorRequiresList(con.getOperator());
    boolean showExpressionSelector = !OperatorsOracle.operatorRequiresList(con.getOperator());
    if (con instanceof SingleFieldConstraint) {
        SingleFieldConstraint sfc = (SingleFieldConstraint) con;
        String fieldName = sfc.getFieldName();
        if (fieldName.equals(DataType.TYPE_THIS)) {
            showLiteralSelector = CEPOracle.isCEPOperator(sfc.getOperator());
            showFormulaSelector = showFormulaSelector && showLiteralSelector;
        }
    } else if (con instanceof ConnectiveConstraint) {
        ConnectiveConstraint cc = (ConnectiveConstraint) con;
        String fieldName = cc.getFieldName();
        if (fieldName.equals(DataType.TYPE_THIS)) {
            showLiteralSelector = CEPOracle.isCEPOperator(cc.getOperator());
            showFormulaSelector = showFormulaSelector && showLiteralSelector;
        }
    }
    // Literal value selector
    if (showLiteralSelector) {
        form.addAttributeWithHelp(GuidedRuleEditorResources.CONSTANTS.LiteralValue(), GuidedRuleEditorResources.CONSTANTS.LiteralValue(), GuidedRuleEditorResources.CONSTANTS.LiteralValTip(), lit);
    }
    // Template key selector
    if (modeller.isTemplate()) {
        String templateKeyLabel = GuidedRuleEditorResources.CONSTANTS.TemplateKey();
        Button templateKeyButton = new Button(templateKeyLabel);
        templateKeyButton.addClickHandler(getValueTypeFormOnClickHandler(con, form, SingleFieldConstraint.TYPE_TEMPLATE));
        form.addAttributeWithHelp(templateKeyLabel, templateKeyLabel, GuidedRuleEditorResources.CONSTANTS.TemplateKeyTip(), templateKeyButton);
    }
    // Divider, if we have any advanced options
    if (showVariableSelector || showFormulaSelector || showExpressionSelector) {
        form.addRow(new HTML("<hr/>"));
        form.addRow(new SmallLabel(GuidedRuleEditorResources.CONSTANTS.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(GuidedRuleEditorResources.CONSTANTS.BoundVariable());
            // This Set is used as a 1flag to know whether the button has been added; due to use of callbacks
            final Set<Button> bindingButtonContainer = new HashSet<Button>();
            for (String var : bindingsInScope) {
                helper.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(getValueTypeFormOnClickHandler(con, form, SingleFieldConstraint.TYPE_VARIABLE));
                                form.addAttributeWithHelp(GuidedRuleEditorResources.CONSTANTS.AVariable(), GuidedRuleEditorResources.CONSTANTS.ABoundVariable(), GuidedRuleEditorResources.CONSTANTS.BoundVariableTip(), bindingButton);
                            }
                        }
                    }
                });
            }
        }
    }
    // Formula selector
    if (showFormulaSelector) {
        Button formula = new Button(GuidedRuleEditorResources.CONSTANTS.NewFormula());
        formula.addClickHandler(getValueTypeFormOnClickHandler(con, form, SingleFieldConstraint.TYPE_RET_VALUE));
        form.addAttributeWithHelp(GuidedRuleEditorResources.CONSTANTS.AFormula(), GuidedRuleEditorResources.CONSTANTS.AFormula(), GuidedRuleEditorResources.CONSTANTS.FormulaExpressionTip(), formula);
    }
    // Expression selector
    if (showExpressionSelector) {
        Button expression = new Button(GuidedRuleEditorResources.CONSTANTS.ExpressionEditor());
        expression.addClickHandler(getValueTypeFormOnClickHandler(con, form, SingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE));
        form.addAttributeWithHelp(GuidedRuleEditorResources.CONSTANTS.ExpressionEditor(), GuidedRuleEditorResources.CONSTANTS.ExpressionEditor(), GuidedRuleEditorResources.CONSTANTS.ExpressionEditorTip(), expression);
    }
    form.show();
}
Also used : SmallLabel(org.uberfire.ext.widgets.common.client.common.SmallLabel) ClickEvent(com.google.gwt.event.dom.client.ClickEvent) CustomFormConfiguration(org.guvnor.common.services.workingset.client.factconstraints.customform.CustomFormConfiguration) ConnectiveConstraint(org.drools.workbench.models.datamodel.rule.ConnectiveConstraint) HTML(com.google.gwt.user.client.ui.HTML) ConnectiveConstraint(org.drools.workbench.models.datamodel.rule.ConnectiveConstraint) CompositeFieldConstraint(org.drools.workbench.models.datamodel.rule.CompositeFieldConstraint) FieldConstraint(org.drools.workbench.models.datamodel.rule.FieldConstraint) SingleFieldConstraint(org.drools.workbench.models.datamodel.rule.SingleFieldConstraint) BaseSingleFieldConstraint(org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint) SingleFieldConstraint(org.drools.workbench.models.datamodel.rule.SingleFieldConstraint) BaseSingleFieldConstraint(org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint) ClickHandler(com.google.gwt.event.dom.client.ClickHandler) Button(org.gwtbootstrap3.client.ui.Button) FormStylePopup(org.uberfire.ext.widgets.common.client.common.popups.FormStylePopup) HashSet(java.util.HashSet)

Aggregations

ClickEvent (com.google.gwt.event.dom.client.ClickEvent)1 ClickHandler (com.google.gwt.event.dom.client.ClickHandler)1 HTML (com.google.gwt.user.client.ui.HTML)1 HashSet (java.util.HashSet)1 BaseSingleFieldConstraint (org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint)1 CompositeFieldConstraint (org.drools.workbench.models.datamodel.rule.CompositeFieldConstraint)1 ConnectiveConstraint (org.drools.workbench.models.datamodel.rule.ConnectiveConstraint)1 FieldConstraint (org.drools.workbench.models.datamodel.rule.FieldConstraint)1 SingleFieldConstraint (org.drools.workbench.models.datamodel.rule.SingleFieldConstraint)1 CustomFormConfiguration (org.guvnor.common.services.workingset.client.factconstraints.customform.CustomFormConfiguration)1 Button (org.gwtbootstrap3.client.ui.Button)1 SmallLabel (org.uberfire.ext.widgets.common.client.common.SmallLabel)1 FormStylePopup (org.uberfire.ext.widgets.common.client.common.popups.FormStylePopup)1