Example usage for org.eclipse.jface.databinding.swt SWTObservables observeSelection

List of usage examples for org.eclipse.jface.databinding.swt SWTObservables observeSelection

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.swt SWTObservables observeSelection.

Prototype

@Deprecated
public static ISWTObservableValue observeSelection(Control control) 

Source Link

Document

Returns an observable observing the selection attribute of the provided control.

Usage

From source file:org.bonitasoft.studio.designer.ui.property.section.control.FormMappingRadioGroup.java

License:Open Source License

public FormMappingRadioGroup(final Composite parent, final TabbedPropertySheetWidgetFactory widgetFactory,
        final IEclipsePreferences preferenceStore, final RepositoryAccessor repositoryAccessor,
        final FormReferenceExpressionValidator formReferenceExpressionValidator,
        final CreateOrEditFormProposalListener createOrEditFormListener) {
    super(parent, SWT.NONE);
    setLayout(GridLayoutFactory.swtDefaults().numColumns(4).extendedMargins(10, 10, 10, 10).create());
    setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());

    final Button uiDesignerRadio = widgetFactory.createButton(this, Messages.uiDesignerLabel, SWT.RADIO);
    uiDesignerRadio.setLayoutData(GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.CENTER).create());

    final Button externalRadio = widgetFactory.createButton(this, Messages.externalURL, SWT.RADIO);
    externalRadio.setLayoutData(GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.CENTER).create());

    final Button noneRadio = widgetFactory.createButton(this, Messages.noForm, SWT.RADIO);
    noneRadio.setLayoutData(GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.CENTER).create());

    final Button legacyRadio = widgetFactory.createButton(this, Messages.legacyForm, SWT.RADIO);
    legacyRadio.setLayoutData(GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.CENTER).create());

    mappingTypeObservable = new SelectObservableValue(FormMappingType.class);
    mappingTypeObservable.addOption(FormMappingType.NONE, SWTObservables.observeSelection(noneRadio));
    mappingTypeObservable.addOption(FormMappingType.INTERNAL, SWTObservables.observeSelection(uiDesignerRadio));
    mappingTypeObservable.addOption(FormMappingType.URL, SWTObservables.observeSelection(externalRadio));
    mappingTypeObservable.addOption(FormMappingType.LEGACY, SWTObservables.observeSelection(legacyRadio));

    final Composite stackedComposite = widgetFactory.createComposite(this);
    stackedComposite.setLayoutData(GridDataFactory.swtDefaults().grab(true, false).span(4, 1).create());

    stackLayout = new CustomStackLayout(stackedComposite);
    stackedComposite.setLayout(stackLayout);

    legacyComposite = new InfoMessageComposite(stackedComposite, widgetFactory);
    noneComposite = new InfoMessageComposite(stackedComposite, widgetFactory);
    pageDesignerMappingComposite = new InternalMappingComposite(stackedComposite, widgetFactory,
            preferenceStore, repositoryAccessor, formReferenceExpressionValidator, createOrEditFormListener);
    urlMappingComposite = new URLMappingComposite(stackedComposite, widgetFactory);
    widgetFactory.adapt(this);
}

From source file:org.bonitasoft.studio.expression.editor.viewer.CheckBoxExpressionViewer.java

License:Open Source License

@Override
protected void bindExpression() {
    if (control.isVisible()) {
        super.bindExpression();
    } else {/*from   w ww . ja va 2s.co  m*/
        if (expressionBinding != null && externalDataBindingContext != null) {
            externalDataBindingContext.removeBinding(expressionBinding);
            expressionBinding.dispose();
        }
        if (internalDataBindingContext != null) {
            internalDataBindingContext.dispose();
        }
        internalDataBindingContext = new EMFDataBindingContext();
        IObservableValue nameObservable = null;
        if (editingDomain != null) {
            nameObservable = EMFEditObservables.observeValue(editingDomain, selectedExpression,
                    ExpressionPackage.Literals.EXPRESSION__NAME);
        } else {
            nameObservable = EMFObservables.observeValue(selectedExpression,
                    ExpressionPackage.Literals.EXPRESSION__NAME);
        }

        UpdateValueStrategy targetToModelNameStrategy = new UpdateValueStrategy();
        targetToModelNameStrategy.setConverter(new Converter(Boolean.class, String.class) {

            @Override
            public Object convert(Object fromObject) {
                String input = ((Boolean) fromObject).toString();
                updateContentType(ExpressionConstants.CONSTANT_TYPE);
                updateContent(getContentFromInput(input));
                refresh();
                return input;
            }
        });

        UpdateValueStrategy modelToTargetNameStrategy = new UpdateValueStrategy();
        modelToTargetNameStrategy.setConverter(new Converter(String.class, Boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                if (fromObject != null) {
                    String input = fromObject.toString();
                    if (input.equalsIgnoreCase(Boolean.TRUE.toString())) {
                        return true;
                    }
                }
                return false;
            }
        });

        internalDataBindingContext.bindValue(SWTObservables.observeSelection(checkBoxControl), nameObservable,
                targetToModelNameStrategy, modelToTargetNameStrategy);
    }
}

From source file:org.bonitasoft.studio.groovy.ui.dialog.control.BooleanRadioGroup.java

License:Open Source License

public void bindControl(final DataBindingContext dbc, final IObservableValue modelObservable) {
    final SelectObservableValue selectObservableValue = new SelectObservableValue(Boolean.class);
    selectObservableValue.addOption(Boolean.TRUE, SWTObservables.observeSelection(trueButton));
    selectObservableValue.addOption(Boolean.FALSE, SWTObservables.observeSelection(falseButton));
    selectObservableValue.setValue(Boolean.TRUE);
    dbc.bindValue(selectObservableValue, modelObservable);
}

From source file:org.bonitasoft.studio.groovy.ui.providers.GroovyScriptExpressionEditor.java

License:Open Source License

@Override
public void bindExpression(EMFDataBindingContext dataBindingContext, final EObject context,
        Expression inputExpression, ViewerFilter[] filters, final ExpressionViewer viewer) {
    this.inputExpression = inputExpression;
    this.context = context;

    IObservableValue dependenciesModelObservable = EMFObservables.observeValue(inputExpression,
            ExpressionPackage.Literals.EXPRESSION__REFERENCED_ELEMENTS);
    IObservableValue autoDepsModelObservable = EMFObservables.observeValue(inputExpression,
            ExpressionPackage.Literals.EXPRESSION__AUTOMATIC_DEPENDENCIES);

    inputExpression.setType(ExpressionConstants.SCRIPT_TYPE);
    inputExpression.setInterpreter(ExpressionConstants.GROOVY);

    groovyViewer.setContext(context, filters, viewer.getExpressionNatureProvider());
    nodes = groovyViewer.getFieldNodes();

    if (context == null && nodes == null) {
        dataCombo.add(Messages.noProcessVariableAvailable);
        dataCombo.getTableCombo().setText(Messages.noProcessVariableAvailable);
        dataCombo.getTableCombo().setEnabled(false);
    } else if (nodes != null) {
        dataCombo.setInput(nodes);/*from  w  w  w  .  jav  a  2 s.  c  o  m*/
        dataCombo.setSelection(new StructuredSelection(ProcessVariableContentProvider.SELECT_ENTRY));
        if (nodes.isEmpty()) {
            dataCombo.getTableCombo().setEnabled(false);
        }
    } else {
        dataCombo.setInput(groovyViewer.getFieldNodes());
        dataCombo.setSelection(new StructuredSelection(ProcessVariableContentProvider.SELECT_ENTRY));
        if (groovyViewer.getFieldNodes().isEmpty()) {
            dataCombo.getTableCombo().setEnabled(false);
        }
    }

    bonitaDataCombo.setInput(GroovyUtil.getBonitaVariables(context, filters, isPageFlowContext));
    bonitaDataCombo.setSelection(new StructuredSelection(ProcessVariableContentProvider.SELECT_ENTRY));

    dataBindingContext.bindValue(ViewersObservables.observeInput(dependenciesViewer),
            dependenciesModelObservable);

    UpdateValueStrategy opposite = new UpdateValueStrategy();
    opposite.setConverter(new Converter(Boolean.class, Boolean.class) {

        @Override
        public Object convert(Object fromObject) {
            return !((Boolean) fromObject);
        }
    });

    dataBindingContext.bindValue(SWTObservables.observeSelection(automaticResolutionButton),
            autoDepsModelObservable);
    dataBindingContext.bindValue(SWTObservables.observeSelection(automaticResolutionButton),
            SWTObservables.observeEnabled(addDependencyButton), opposite,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER));
    depndencySection.setExpanded(!automaticResolutionButton.getSelection());

    addDependencyButton.setEnabled(!inputExpression.isAutomaticDependencies());

    dependencyJob = new ComputeScriptDependenciesJob(sourceViewer.getDocument());
    dependencyJob.setContext(context);
    this.nodes.addAll(GroovyUtil.getBonitaVariables(context, filters, isPageFlowContext));
    dependencyJob.setNodes(nodes);

    final InputLengthValidator lenghtValidator = new InputLengthValidator("", GroovyViewer.MAX_SCRIPT_LENGTH);
    String content = inputExpression.getContent();
    if (content == null) {
        content = "";
    }
    sourceViewer.getTextWidget().setText(content);
    sourceViewer.getDocument().addDocumentListener(new IDocumentListener() {

        @Override
        public void documentChanged(DocumentEvent event) {
            final String text = event.getDocument().get();
            if (lenghtValidator.validate(text).isOK()) {
                GroovyScriptExpressionEditor.this.inputExpression.setContent(text);
            }
            if (automaticResolutionButton.getSelection()) {
                dependencyJob.schedule();
            }

        }

        @Override
        public void documentAboutToBeChanged(DocumentEvent event) {
        }
    });

    dependencyJob.addJobChangeListener(new IJobChangeListener() {

        @Override
        public void sleeping(IJobChangeEvent event) {
        }

        @Override
        public void scheduled(IJobChangeEvent event) {
        }

        @Override
        public void running(IJobChangeEvent event) {
        }

        @Override
        public void done(IJobChangeEvent event) {
            if (dependencyJob != null
                    && GroovyScriptExpressionEditor.this.inputExpression.isAutomaticDependencies()) {
                List<EObject> deps = dependencyJob.getDependencies(document.get());
                GroovyScriptExpressionEditor.this.inputExpression.getReferencedElements().clear();
                if (deps != null && !deps.isEmpty()) {
                    GroovyScriptExpressionEditor.this.inputExpression.getReferencedElements().addAll(deps);
                }
            }
        }

        @Override
        public void awake(IJobChangeEvent event) {
        }

        @Override
        public void aboutToRun(IJobChangeEvent event) {
        }

    });

    final ExpressionContentProvider provider = new ExpressionContentProvider();
    provider.setContext(context);

    final Set<Expression> filteredExpressions = new HashSet<Expression>();
    Expression[] expressions = provider.getExpressions();
    EObject input = provider.getContext();
    if (expressions != null) {
        filteredExpressions.addAll(Arrays.asList(expressions));
        if (input != null && filters != null) {
            for (Expression exp : expressions) {
                for (ViewerFilter filter : filters) {
                    if (filter != null && !filter.select(groovyViewer.getSourceViewer(), input, exp)) {
                        filteredExpressions.remove(exp);
                    }
                }
            }
        }
    }

    addDependencyButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            SelectDependencyDialog dialog = new SelectDependencyDialog(Display.getDefault().getActiveShell(),
                    filteredExpressions,
                    GroovyScriptExpressionEditor.this.inputExpression.getReferencedElements());
            dialog.open();
        }
    });

    final UpdateValueStrategy evaluateStrategy = new UpdateValueStrategy();
    evaluateStrategy.setConverter(new Converter(String.class, Boolean.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject == null || fromObject.toString().isEmpty()) {
                return false;
            }
            return true;
        }
    });
    dataBindingContext.bindValue(SWTObservables.observeEnabled(testButton),
            SWTObservables.observeText(groovyViewer.getSourceViewer().getTextWidget(), SWT.Modify), null,
            evaluateStrategy);
}

From source file:org.bonitasoft.studio.properties.form.sections.actions.contributions.AsynchronousSuggestBoxContribution.java

License:Open Source License

protected void bindWidgets() {
    if (dataBindingContext != null) {
        dataBindingContext.dispose();/* w w  w  .ja va  2 s  . c  om*/
    }
    dataBindingContext = new EMFDataBindingContext();

    IObservableValue value = EMFEditObservables.observeValue(editingDomain, suggestBox,
            FormPackage.Literals.SUGGEST_BOX__ASYNCHRONOUS);
    value.addChangeListener(new IChangeListener() {

        public void handleChange(ChangeEvent event) {
            ISection extensibleGridPropertySection = section.getTabbedPropertySheetPage().getCurrentTab()
                    .getSections()[0];
            if (extensibleGridPropertySection instanceof DataPropertySection) {
                for (IExtensibleGridPropertySectionContribution contib : ((DataPropertySection) extensibleGridPropertySection)
                        .getContributions()) {
                    if (contib instanceof AvailableValueContribution) {
                        //((MultipleValuatedFieldContribution)contib).resetCombo() ;
                    }
                }
            }
        }
    });
    ;
    dataBindingContext.bindValue(SWTObservables.observeSelection(isAsynchronousCheckbox), EMFEditObservables
            .observeValue(editingDomain, suggestBox, FormPackage.Literals.SUGGEST_BOX__ASYNCHRONOUS));
    dataBindingContext.bindValue(
            EMFEditObservables.observeValue(editingDomain, suggestBox,
                    FormPackage.Literals.SUGGEST_BOX__ASYNCHRONOUS),
            SWTObservables.observeEnabled(delayText), null,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER));
    dataBindingContext.bindValue(SWTObservables.observeText(delayText, SWT.Modify), EMFEditObservables
            .observeValue(editingDomain, suggestBox, FormPackage.Literals.SUGGEST_BOX__DELAY));

}

From source file:org.bonitasoft.studio.properties.form.sections.actions.contributions.FileGridPropertySectionContribution.java

License:Open Source License

protected void bindFields() {
    if (dataBindingContext != null) {
        dataBindingContext.dispose();//from ww w .j a v a2 s .co m
    }
    dataBindingContext = new EMFDataBindingContext();
    if (downloadOnly != null) {
        if (ModelHelper.getForm(element) instanceof ViewForm) {
            downloadOnly.setSelection(true);
            downloadOnly.setEnabled(false);
        } else {
            dataBindingContext.bindValue(SWTObservables.observeSelection(downloadOnly), EMFEditObservables
                    .observeValue(editingDomain, element, FormPackage.Literals.FILE_WIDGET__DOWNLOAD_ONLY));
        }
    }

    dataBindingContext.bindValue(SWTObservables.observeSelection(imagePreview), EMFEditObservables
            .observeValue(editingDomain, element, FormPackage.Literals.FILE_WIDGET__USE_PREVIEW));

    IObservableValue value = EMFObservables.observeValue(element, FormPackage.Literals.DUPLICABLE__DUPLICATE);

    value.addValueChangeListener(new IValueChangeListener() {

        public void handleValueChange(ValueChangeEvent arg0) {
            if (useDocumentButton != null && !useDocumentButton.isDisposed()
                    && element.getInputType() == FileWidgetInputType.DOCUMENT) {
                useDocumentButton.notifyListeners(SWT.Selection, new Event());
                /*}else if(!useResourceButton.isDisposed() && element.getInputType() == FileWidgetInputType.URL){
                   useURLButton.notifyListeners(SWT.Selection,new Event());*/
            } else if (!useResourceButton.isDisposed()
                    && element.getInputType() == FileWidgetInputType.RESOURCE) {
                useResourceButton.notifyListeners(SWT.Selection, new Event());
            }
            if (inputExpressionViewer != null
                    && !getInputExpressionHint().equals(inputExpressionViewer.getMessage(IStatus.INFO))) {
                inputExpressionViewer.setMessage(getInputExpressionHint(), IStatus.INFO);
            }

        }
    });

    bindInputExpressionViewer();
    bindResourceText();
}

From source file:org.bonitasoft.studio.properties.form.sections.actions.contributions.FileWidgetDocumentPickerContribution.java

License:Open Source License

private void bindDownloadType() {
    final SelectObservableValue downLoadTypeObservable = new SelectObservableValue(
            FileWidgetDownloadType.class);
    downLoadTypeObservable.addOption(FileWidgetDownloadType.URL, SWTObservables.observeSelection(url));
    downLoadTypeObservable.addOption(FileWidgetDownloadType.BROWSE, SWTObservables.observeSelection(browse));
    downLoadTypeObservable.addOption(FileWidgetDownloadType.BOTH, SWTObservables.observeSelection(both));
    dataBindingContext.bindValue(downLoadTypeObservable,
            EMFObservables.observeValue(fileWidget, FormPackage.Literals.FILE_WIDGET__DOWNLOAD_TYPE));
}

From source file:org.bonitasoft.studio.properties.form.sections.actions.contributions.InitialValueContribution.java

License:Open Source License

protected void bindWidgets() {
    if (allowHtmlButton != null && !allowHtmlButton.isDisposed()) {
        Expression inputExpression = widget.getInputExpression();
        if (inputExpression == null) {
            inputExpression = ExpressionFactory.eINSTANCE.createExpression();
            editingDomain.getCommandStack().execute(SetCommand.create(editingDomain, widget,
                    FormPackage.Literals.WIDGET__INPUT_EXPRESSION, inputExpression));
        }/*from  w  w w  .j  a  v a 2  s .c  o m*/
        dataBindingContext.bindValue(SWTObservables.observeSelection(allowHtmlButton),
                EMFEditObservables.observeValue(editingDomain, inputExpression,
                        ExpressionPackage.Literals.EXPRESSION__HTML_ALLOWED));
    }
    updateViewerInput();
}

From source file:org.bonitasoft.studio.properties.form.sections.actions.table.AbstractTableDataPropertySection.java

License:Open Source License

protected void refreshDataBinding() {
    disposeDataBinding();// w w w. java  2 s  .  c  o m
    if (tableViewer != null) {
        final AbstractTable table = getEObject();
        if (initialValueExpressionFilter != null) {
            initialValueExpressionFilter.setWidget(table);
        }

        if (expressionModeListener != null) {
            tableViewer.removeExpressionModeListener(expressionModeListener);
        }

        expressionModeListener = new IExpressionModeListener() {

            public void useTable() {
                getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(), table,
                        FormPackage.Literals.ABSTRACT_TABLE__INITIALIZED_USING_CELLS, true));
                tableViewer.setSelection(table.getTableExpression());
                tableViewer.setEditingDomain(getEditingDomain());
                magicComposite.show(headersComposite);
                magicComposite.hide(headersValueComposite);
            }

            public void useSimpleExpression() {
                getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(), table,
                        FormPackage.Literals.ABSTRACT_TABLE__INITIALIZED_USING_CELLS, false));
                tableViewer.setSelection(table.getInputExpression());
                tableViewer.setEditingDomain(getEditingDomain());
                magicComposite.hide(headersComposite);
                magicComposite.show(headersValueComposite);
            }
        };

        tableViewer.addExpressionModeListener(expressionModeListener);

        dataBindingContext = new EMFDataBindingContext();

        dataBindingContext.bindValue(SWTObservables.observeSelection(allowHtmlButton),
                EMFEditObservables.observeValue(getEditingDomain(), table.getInputExpression(),
                        ExpressionPackage.Literals.EXPRESSION__HTML_ALLOWED));

        dataBindingContext.bindValue(SWTObservables.observeSelection(useHorizontalHeader),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__USE_HORIZONTAL_HEADER));
        dataBindingContext.bindValue(SWTObservables.observeSelection(useVerticalHeader),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__USE_VERTICAL_HEADER));

        dataBindingContext.bindValue(SWTObservables.observeSelection(topHeaderButton),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__FIRST_ROW_IS_HEADER));
        dataBindingContext.bindValue(SWTObservables.observeSelection(leftHeaderButton),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__LEFT_COLUMN_IS_HEADER));
        dataBindingContext.bindValue(SWTObservables.observeSelection(rightHeaderButton),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__RIGHT_COLUMN_IS_HEADER));
        dataBindingContext.bindValue(SWTObservables.observeSelection(bottomHeaderButton),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__LAST_ROW_IS_HEADER));

        dataBindingContext.bindValue(ViewersObservables.observeSingleSelection(tableVerticalHeaders),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__VERTICAL_HEADER_EXPRESSION));
        dataBindingContext.bindValue(ViewersObservables.observeSingleSelection(tableHorizontalHeaders),
                EMFEditObservables.observeValue(getEditingDomain(), getEObject(),
                        FormPackage.Literals.ABSTRACT_TABLE__HORIZONTAL_HEADER_EXPRESSION));
        if (table.isInitializedUsingCells()) {
            tableViewer.setSelection(table.getTableExpression());
        } else {
            tableViewer.setSelection(table.getInputExpression());
        }
    }
}

From source file:org.bonitasoft.studio.properties.form.sections.actions.table.DynamicTableDataPropertySection.java

License:Open Source License

protected void bindColumn(DynamicTable dynamicTable) {
    dataBindingContext.bindValue(SWTObservables.observeSelection(allowAddRemoveColumnButton),
            EMFEditObservables.observeValue(getEditingDomain(), dynamicTable,
                    FormPackage.Literals.DYNAMIC_TABLE__ALLOW_ADD_REMOVE_COLUMN));

    if (dynamicTable != null) {
        Expression minNumberOfColumn = dynamicTable.getMinNumberOfColumn();
        if (minNumberOfColumn == null) {
            minNumberOfColumn = ExpressionFactory.eINSTANCE.createExpression();
            minNumberOfColumn.setReturnType(Integer.class.getName());
            minNumberOfColumn.setReturnTypeFixed(true);
            getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(), dynamicTable,
                    FormPackage.Literals.DYNAMIC_TABLE__MIN_NUMBER_OF_COLUMN, minNumberOfColumn));
        }// w w  w .  java 2s.  c o m
    }
    if (dynamicTable != null) {
        Expression maxNumberOfColumn = dynamicTable.getMaxNumberOfColumn();
        if (maxNumberOfColumn == null) {
            maxNumberOfColumn = ExpressionFactory.eINSTANCE.createExpression();
            maxNumberOfColumn.setReturnType(Integer.class.getName());
            maxNumberOfColumn.setReturnTypeFixed(true);
            getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(), dynamicTable,
                    FormPackage.Literals.DYNAMIC_TABLE__MAX_NUMBER_OF_COLUMN, maxNumberOfColumn));
        }
    }

    /*
     * Synchronize with the model.
     * */
    dataBindingContext.bindValue(ViewerProperties.singleSelection().observe(textOrDataMinColumn),
            EMFEditProperties
                    .value(getEditingDomain(), FormPackage.Literals.DYNAMIC_TABLE__MIN_NUMBER_OF_COLUMN)
                    .observe(dynamicTable));
    dataBindingContext.bindValue(ViewerProperties.singleSelection().observe(textOrDataMaxColumn),
            EMFEditProperties
                    .value(getEditingDomain(), FormPackage.Literals.DYNAMIC_TABLE__MAX_NUMBER_OF_COLUMN)
                    .observe(dynamicTable));

    dataBindingContext.bindValue(SWTObservables.observeSelection(limitMinColumnButton),
            EMFEditObservables.observeValue(getEditingDomain(), dynamicTable,
                    FormPackage.Literals.DYNAMIC_TABLE__LIMIT_MIN_NUMBER_OF_COLUMN));
    dataBindingContext.bindValue(SWTObservables.observeSelection(limitMaxColumnButton),
            EMFEditObservables.observeValue(getEditingDomain(), dynamicTable,
                    FormPackage.Literals.DYNAMIC_TABLE__LIMIT_MAX_NUMBER_OF_COLUMN));

    /*
     * Enable the combo only if we want to set a number limitation.
     * */
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMinColumn.getControl()),
            SWTObservables.observeSelection(limitMinColumnButton));
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMinColumn.getTextControl()),
            SWTObservables.observeSelection(limitMinColumnButton));
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMinColumn.getToolbar()),
            SWTObservables.observeSelection(limitMinColumnButton));
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMaxColumn.getControl()),
            SWTObservables.observeSelection(limitMaxColumnButton));
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMaxColumn.getTextControl()),
            SWTObservables.observeSelection(limitMaxColumnButton));
    dataBindingContext.bindValue(SWTObservables.observeEnabled(textOrDataMaxColumn.getToolbar()),
            SWTObservables.observeSelection(limitMaxColumnButton));

    dataBindingContext.bindValue(SWTObservables.observeVisible(limitMinColumnButton),
            SWTObservables.observeSelection(allowAddRemoveColumnButton),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);
    dataBindingContext.bindValue(SWTObservables.observeVisible(limitMaxColumnButton),
            SWTObservables.observeSelection(allowAddRemoveColumnButton),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);
    dataBindingContext.bindValue(SWTObservables.observeVisible(textOrDataMinColumn.getControl()),
            SWTObservables.observeSelection(allowAddRemoveColumnButton),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);
    dataBindingContext.bindValue(SWTObservables.observeVisible(textOrDataMaxColumn.getControl()),
            SWTObservables.observeSelection(allowAddRemoveColumnButton),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

    textOrDataMaxColumn.setInput(dynamicTable);
    textOrDataMinColumn.setInput(dynamicTable);
}