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.properties.sections.general.ActivateValidationPropertySectionContribution.java

License:Open Source License

protected void createBinding(EMFDataBindingContext context) {
    ISWTObservableValue observable = SWTObservables.observeSelection(checkbox);
    context.bindValue(observable, EMFEditObservables.observeValue(editingDomain, process,
            ProcessPackage.Literals.MAIN_PROCESS__ENABLE_VALIDATION));
}

From source file:org.bonitasoft.studio.properties.sections.general.TransitionCondition.java

License:Open Source License

private void refreshBindings() {
    if (conditionSection != null && !conditionSection.isDisposed()) {
        if (dataBindingContext != null) {
            dataBindingContext.dispose();
        }// w w  w.j ava 2  s  .  c  o m

        IConverter conditionConverter = new Converter(Boolean.class, Boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                if (transition != null && transition.getSource() instanceof CatchLinkEvent) {
                    return false;
                }

                return !(Boolean) fromObject;
            }
        };

        IConverter defaultConverter = new Converter(Boolean.class, Boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                if (transition != null && transition.getSource() instanceof CatchLinkEvent) {
                    return false;
                } else {
                    SourceElement elem = transition.getSource();
                    boolean alreadyExistDefault = false;
                    for (Connection c : elem.getOutgoing()) {
                        if (c instanceof SequenceFlow) {
                            if (((SequenceFlow) c).isIsDefault() && !c.equals(transition)) {
                                alreadyExistDefault = true;
                            }
                        }
                    }
                    if (alreadyExistDefault) {
                        return false;
                    } else {
                        return true;
                    }
                }

            }
        };

        final UpdateValueStrategy useExpressionTargetToModel = new UpdateValueStrategy();
        useExpressionTargetToModel.setConverter(new Converter(Boolean.class, SequenceFlowConditionType.class) {

            @Override
            public Object convert(Object fromObject) {
                if ((Boolean) fromObject) {
                    return SequenceFlowConditionType.EXPRESSION;
                } else {
                    return SequenceFlowConditionType.DECISION_TABLE;
                }
            }
        });

        final UpdateValueStrategy useDescisionTargetToModel = new UpdateValueStrategy();
        useDescisionTargetToModel.setConverter(new Converter(Boolean.class, SequenceFlowConditionType.class) {

            @Override
            public Object convert(Object fromObject) {
                if ((Boolean) fromObject) {
                    return SequenceFlowConditionType.DECISION_TABLE;
                } else {
                    return SequenceFlowConditionType.EXPRESSION;
                }
            }
        });

        final UpdateValueStrategy useExpressionModelToTarget = new UpdateValueStrategy();
        useExpressionModelToTarget.setConverter(new Converter(SequenceFlowConditionType.class, Boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                if (fromObject == SequenceFlowConditionType.EXPRESSION) {
                    return true;
                } else {
                    return false;
                }
            }
        });

        final UpdateValueStrategy useDecisionModelToTarget = new UpdateValueStrategy();
        useDecisionModelToTarget.setConverter(new Converter(SequenceFlowConditionType.class, Boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                if (fromObject == SequenceFlowConditionType.DECISION_TABLE) {
                    return true;
                } else {
                    return false;
                }
            }
        });

        dataBindingContext = new EMFDataBindingContext();

        IObservableValue typeValue = EMFEditObservables.observeValue(editingDomain, transition,
                ProcessPackage.Literals.SEQUENCE_FLOW__CONDITION_TYPE);
        typeValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                if (conditionSection != null && !conditionSection.isDisposed()) {
                    if (event.diff.getNewValue() == SequenceFlowConditionType.EXPRESSION
                            && (conditionViewer == null || conditionViewer.getControl().isDisposed())) {
                        if (conditionSection.getClient() != null) {
                            conditionSection.getClient().dispose();
                        }
                        conditionSection.setClient(createExpressionComposite(conditionSection, widgetFactory));
                        conditionSection.setExpanded(true);
                    } else if (event.diff.getNewValue() == SequenceFlowConditionType.DECISION_TABLE
                            && (conditionViewer != null && !conditionViewer.getControl().isDisposed())) {
                        if (conditionSection.getClient() != null) {
                            conditionSection.getClient().dispose();
                        }
                        conditionSection
                                .setClient(createDecisionTableComposite(conditionSection, widgetFactory));
                        conditionSection.setExpanded(true);
                    }
                    refreshBindings();
                }
            }
        });

        dataBindingContext.bindValue(SWTObservables.observeSelection(useExpressionCondition), typeValue,
                useExpressionTargetToModel, useExpressionModelToTarget);
        dataBindingContext.bindValue(SWTObservables.observeSelection(useDecisionTable), typeValue,
                useDescisionTargetToModel, useDecisionModelToTarget);

        dataBindingContext.bindValue(SWTObservables.observeSelection(defaultCheckBox), EMFEditObservables
                .observeValue(editingDomain, transition, ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT));

        dataBindingContext.bindValue(SWTObservables.observeEnabled(defaultCheckBox),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(defaultConverter),
                new UpdateValueStrategy().setConverter(defaultConverter));

        if (conditionViewer != null && !conditionViewer.getControl().isDisposed()) {
            dataBindingContext.bindValue(SWTObservables.observeEnabled(conditionViewer.getTextControl()),
                    EMFEditObservables.observeValue(editingDomain, transition,
                            ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                    new UpdateValueStrategy().setConverter(conditionConverter),
                    new UpdateValueStrategy().setConverter(conditionConverter));

            dataBindingContext.bindValue(SWTObservables.observeEnabled(conditionViewer.getToolbar()),
                    EMFEditObservables.observeValue(editingDomain, transition,
                            ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                    new UpdateValueStrategy().setConverter(conditionConverter),
                    new UpdateValueStrategy().setConverter(conditionConverter));

            conditionViewer.setEditingDomain(editingDomain);
            dataBindingContext.bindValue(ViewerProperties.singleSelection().observe(conditionViewer),
                    EMFEditProperties.value(editingDomain, ProcessPackage.Literals.SEQUENCE_FLOW__CONDITION)
                            .observe(transition));
            conditionViewer.setInput(transition);

            dataBindingContext.bindValue(SWTObservables.observeSelection(useExpressionCondition),
                    SWTObservables.observeEnabled(conditionViewer.getControl()));
        }

        dataBindingContext.bindValue(SWTObservables.observeEnabled(useExpressionCondition),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(conditionConverter),
                new UpdateValueStrategy().setConverter(conditionConverter));

        dataBindingContext.bindValue(SWTObservables.observeEnabled(useDecisionTable),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(conditionConverter),
                new UpdateValueStrategy().setConverter(conditionConverter));

        if (updateTableButton != null && !updateTableButton.isDisposed()) {
            dataBindingContext.bindValue(SWTObservables.observeEnabled(updateTableButton),
                    EMFEditObservables.observeValue(editingDomain, transition,
                            ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                    new UpdateValueStrategy().setConverter(conditionConverter),
                    new UpdateValueStrategy().setConverter(conditionConverter));

        }
    }
}

From source file:org.bonitasoft.studio.properties.sections.general.TransitionConditionContribution.java

License:Open Source License

private void refreshBindings() {
    if (conditionSection != null && !conditionSection.isDisposed()) {
        if (dataBindingContext != null) {
            dataBindingContext.dispose();
        }/*from w w  w  .j  a va2 s. c  o  m*/

        final IConverter conditionConverter = new Converter(Boolean.class, Boolean.class) {

            @Override
            public Object convert(final Object fromObject) {
                if (transition != null && transition.getSource() instanceof CatchLinkEvent) {
                    return false;
                }

                return !(Boolean) fromObject;
            }
        };

        final IConverter defaultConverter = new Converter(Boolean.class, Boolean.class) {

            @Override
            public Object convert(final Object fromObject) {
                if (transition != null && transition.getSource() instanceof CatchLinkEvent) {
                    return false;
                } else {
                    final SourceElement elem = transition.getSource();
                    boolean alreadyExistDefault = false;
                    for (final Connection c : elem.getOutgoing()) {
                        if (c instanceof SequenceFlow) {
                            if (((SequenceFlow) c).isIsDefault() && !c.equals(transition)) {
                                alreadyExistDefault = true;
                            }
                        }
                    }
                    if (alreadyExistDefault) {
                        return false;
                    } else {
                        return true;
                    }
                }

            }
        };

        final UpdateValueStrategy useExpressionTargetToModel = new UpdateValueStrategy();
        useExpressionTargetToModel.setConverter(new Converter(Boolean.class, SequenceFlowConditionType.class) {

            @Override
            public Object convert(final Object fromObject) {
                if ((Boolean) fromObject) {
                    return SequenceFlowConditionType.EXPRESSION;
                } else {
                    return SequenceFlowConditionType.DECISION_TABLE;
                }
            }
        });

        final UpdateValueStrategy useDescisionTargetToModel = new UpdateValueStrategy();
        useDescisionTargetToModel.setConverter(new Converter(Boolean.class, SequenceFlowConditionType.class) {

            @Override
            public Object convert(final Object fromObject) {
                if ((Boolean) fromObject) {
                    return SequenceFlowConditionType.DECISION_TABLE;
                } else {
                    return SequenceFlowConditionType.EXPRESSION;
                }
            }
        });

        final UpdateValueStrategy useExpressionModelToTarget = new UpdateValueStrategy();
        useExpressionModelToTarget.setConverter(new Converter(SequenceFlowConditionType.class, Boolean.class) {

            @Override
            public Object convert(final Object fromObject) {
                if (fromObject == SequenceFlowConditionType.EXPRESSION) {
                    return true;
                } else {
                    return false;
                }
            }
        });

        final UpdateValueStrategy useDecisionModelToTarget = new UpdateValueStrategy();
        useDecisionModelToTarget.setConverter(new Converter(SequenceFlowConditionType.class, Boolean.class) {

            @Override
            public Object convert(final Object fromObject) {
                return fromObject == SequenceFlowConditionType.DECISION_TABLE;
            }
        });

        dataBindingContext = new EMFDataBindingContext();

        final IObservableValue typeValue = EMFEditObservables.observeValue(editingDomain, transition,
                ProcessPackage.Literals.SEQUENCE_FLOW__CONDITION_TYPE);
        typeValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(final ValueChangeEvent event) {
                if (conditionSection != null && !conditionSection.isDisposed()) {
                    if (event.diff.getNewValue() == SequenceFlowConditionType.EXPRESSION
                            && (conditionViewer == null || conditionViewer.getControl().isDisposed())) {
                        if (conditionSection.getClient() != null) {
                            conditionSection.getClient().dispose();
                        }
                        conditionSection.setClient(createExpressionComposite(conditionSection, widgetFactory));
                        conditionSection.setExpanded(true);
                    } else if (event.diff.getNewValue() == SequenceFlowConditionType.DECISION_TABLE
                            && conditionViewer != null && !conditionViewer.getControl().isDisposed()) {
                        if (conditionSection.getClient() != null) {
                            conditionSection.getClient().dispose();
                        }
                        conditionSection
                                .setClient(createDecisionTableComposite(conditionSection, widgetFactory));
                        conditionSection.setExpanded(true);
                    }
                    refreshBindings();
                }
            }
        });

        dataBindingContext.bindValue(SWTObservables.observeSelection(useExpressionCondition), typeValue,
                useExpressionTargetToModel, useExpressionModelToTarget);
        dataBindingContext.bindValue(SWTObservables.observeSelection(useDecisionTable), typeValue,
                useDescisionTargetToModel, useDecisionModelToTarget);

        dataBindingContext.bindValue(SWTObservables.observeSelection(defaultCheckBox), EMFEditObservables
                .observeValue(editingDomain, transition, ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT));

        dataBindingContext.bindValue(SWTObservables.observeEnabled(defaultCheckBox),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(defaultConverter),
                new UpdateValueStrategy().setConverter(defaultConverter));

        if (conditionViewer != null && !conditionViewer.getControl().isDisposed()) {
            dataBindingContext.bindValue(SWTObservables.observeEnabled(conditionViewer.getControl()),
                    EMFEditObservables.observeValue(editingDomain, transition,
                            ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                    new UpdateValueStrategy().setConverter(conditionConverter),
                    new UpdateValueStrategy().setConverter(conditionConverter));

            //                dataBindingContext.bindValue(SWTObservables.observeEnabled(conditionViewer.getToolbar()),
            //                        EMFEditObservables.observeValue(editingDomain, transition, ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),new UpdateValueStrategy().setConverter(conditionConverter),new UpdateValueStrategy().setConverter(conditionConverter));

            conditionViewer.setEditingDomain(editingDomain);
            dataBindingContext.bindValue(ViewerProperties.singleSelection().observe(conditionViewer),
                    EMFEditProperties.value(editingDomain, ProcessPackage.Literals.SEQUENCE_FLOW__CONDITION)
                            .observe(transition));
            conditionViewer.setInput(transition);

            dataBindingContext.bindValue(SWTObservables.observeSelection(useExpressionCondition),
                    SWTObservables.observeEnabled(conditionViewer.getControl()));
        }

        dataBindingContext.bindValue(SWTObservables.observeEnabled(useExpressionCondition),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(conditionConverter),
                new UpdateValueStrategy().setConverter(conditionConverter));

        dataBindingContext.bindValue(SWTObservables.observeEnabled(useDecisionTable),
                EMFEditObservables.observeValue(editingDomain, transition,
                        ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                new UpdateValueStrategy().setConverter(conditionConverter),
                new UpdateValueStrategy().setConverter(conditionConverter));

        if (updateTableButton != null && !updateTableButton.isDisposed()) {
            dataBindingContext.bindValue(SWTObservables.observeEnabled(updateTableButton),
                    EMFEditObservables.observeValue(editingDomain, transition,
                            ProcessPackage.Literals.SEQUENCE_FLOW__IS_DEFAULT),
                    new UpdateValueStrategy().setConverter(conditionConverter),
                    new UpdateValueStrategy().setConverter(conditionConverter));

        }
    }
}

From source file:org.bonitasoft.studio.properties.sections.iteration.IterationPropertySection.java

License:Open Source License

private Composite createStandardLoopContent(final Composite stackedComposite,
        final TabbedPropertySheetWidgetFactory widgetFactory) {
    final Composite standardLoopComposite = widgetFactory.createPlainComposite(stackedComposite, SWT.NONE);
    standardLoopComposite/* w w w.  j ava 2  s.c om*/
            .setLayout(GridLayoutFactory.fillDefaults().numColumns(3).extendedMargins(0, 0, 20, 0).create());

    widgetFactory.createLabel(standardLoopComposite, "", SWT.NONE);//FIILER

    final Button testAfterButton = widgetFactory.createButton(standardLoopComposite, Messages.testAfterLabel,
            SWT.RADIO);
    testAfterButton.setLayoutData(GridDataFactory.swtDefaults().create());

    final Button testBefore = widgetFactory.createButton(standardLoopComposite, Messages.testBeforeLabel,
            SWT.RADIO);
    testBefore.setLayoutData(GridDataFactory.swtDefaults().create());

    final SelectObservableValue testEventObservable = new SelectObservableValue(Boolean.class);
    testEventObservable.addOption(Boolean.FALSE, SWTObservables.observeSelection(testAfterButton));
    testEventObservable.addOption(Boolean.TRUE, SWTObservables.observeSelection(testBefore));

    final IObservableValue selectionObservable = ViewersObservables.observeSingleSelection(selectionProvider);
    context.bindValue(testEventObservable, CustomEMFEditObservables.observeDetailValue(Realm.getDefault(),
            selectionObservable, ProcessPackage.Literals.MULTI_INSTANTIABLE__TEST_BEFORE));

    widgetFactory.createLabel(standardLoopComposite, Messages.loopConditionLabel)
            .setLayoutData(GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).create());

    final ExpressionViewer loopConditionExpressionViewer = new ExpressionViewer(standardLoopComposite,
            SWT.BORDER, widgetFactory);

    loopConditionExpressionViewer.getControl()
            .setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
    loopConditionExpressionViewer.addFilter(new AvailableExpressionTypeFilter(
            new String[] { ExpressionConstants.CONSTANT_TYPE, ExpressionConstants.VARIABLE_TYPE,
                    ExpressionConstants.PARAMETER_TYPE, ExpressionConstants.SCRIPT_TYPE }));
    loopConditionExpressionViewer.addFilter(new DisplayEngineExpressionWithName(new String[] {
            org.bonitasoft.engine.expression.ExpressionConstants.LOOP_COUNTER.getEngineConstantName() }));
    loopConditionExpressionViewer.addFilter(new OnlyProcessDataViewerFilter());

    context.bindValue(ViewersObservables.observeInput(loopConditionExpressionViewer), selectionObservable);
    context.bindValue(ViewersObservables.observeSingleSelection(loopConditionExpressionViewer),
            CustomEMFEditObservables.observeDetailValue(Realm.getDefault(), selectionObservable,
                    ProcessPackage.Literals.MULTI_INSTANTIABLE__LOOP_CONDITION));

    widgetFactory.createLabel(standardLoopComposite, Messages.maximumLoopLabel)
            .setLayoutData(GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).create());

    final ExpressionViewer maximumLoopExpressionViewer = new ExpressionViewer(standardLoopComposite, SWT.BORDER,
            widgetFactory);
    maximumLoopExpressionViewer.getControl()
            .setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
    maximumLoopExpressionViewer.addFilter(new AvailableExpressionTypeFilter(
            new String[] { ExpressionConstants.CONSTANT_TYPE, ExpressionConstants.VARIABLE_TYPE,
                    ExpressionConstants.PARAMETER_TYPE, ExpressionConstants.SCRIPT_TYPE }));
    maximumLoopExpressionViewer.setMessage(Messages.optionalLabel, IStatus.INFO);
    maximumLoopExpressionViewer.addFilter(new OnlyProcessDataViewerFilter());

    context.bindValue(ViewersObservables.observeInput(maximumLoopExpressionViewer), selectionObservable);
    context.bindValue(ViewersObservables.observeSingleSelection(maximumLoopExpressionViewer),
            CustomEMFEditObservables.observeDetailValue(Realm.getDefault(), selectionObservable,
                    ProcessPackage.Literals.MULTI_INSTANTIABLE__LOOP_MAXIMUM));

    return standardLoopComposite;
}

From source file:org.bonitasoft.studio.properties.sections.iteration.IterationPropertySection.java

License:Open Source License

private Composite createMultiInstanceContent(final Composite stackedComposite,
        final TabbedPropertySheetWidgetFactory widgetFactory) {
    final Composite multiInstanceComposite = widgetFactory.createPlainComposite(stackedComposite, SWT.NONE);
    multiInstanceComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    multiInstanceComposite//from   ww w  .ja  v a  2  s  .c o  m
            .setLayout(GridLayoutFactory.fillDefaults().numColumns(3).extendedMargins(30, 0, 15, 0).create());

    final Composite cardinalityRadioGroup = widgetFactory.createPlainComposite(multiInstanceComposite,
            SWT.NONE);
    cardinalityRadioGroup.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(3, 1).create());
    cardinalityRadioGroup.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());

    final Button dataBasedInstanceButton = widgetFactory.createButton(cardinalityRadioGroup,
            Messages.dataBasedInstanceLabel, SWT.RADIO);
    dataBasedInstanceButton.setLayoutData(GridDataFactory.swtDefaults().create());

    final Button definedNumberOfInstancesButton = widgetFactory.createButton(cardinalityRadioGroup,
            Messages.definedNumberOfInstanceLabel, SWT.RADIO);
    definedNumberOfInstancesButton.setLayoutData(GridDataFactory.swtDefaults().create());

    final SelectObservableValue cardinalityObservable = new SelectObservableValue(Boolean.class);
    cardinalityObservable.addOption(Boolean.FALSE, SWTObservables.observeSelection(dataBasedInstanceButton));
    cardinalityObservable.addOption(Boolean.TRUE,
            SWTObservables.observeSelection(definedNumberOfInstancesButton));

    context.bindValue(cardinalityObservable,
            CustomEMFEditObservables.observeDetailValue(Realm.getDefault(),
                    ViewersObservables.observeSingleSelection(selectionProvider),
                    ProcessPackage.Literals.MULTI_INSTANTIABLE__USE_CARDINALITY));

    final Composite dataContainerComposite = widgetFactory.createPlainComposite(multiInstanceComposite,
            SWT.NONE);
    dataContainerComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(3, 1).create());
    final StackLayout dataStackLayout = new StackLayout();
    dataContainerComposite.setLayout(dataStackLayout);

    final Composite cardinalityContent = createCardinalityContent(dataContainerComposite, widgetFactory);
    final Composite dataContent = createDataContent(dataContainerComposite, widgetFactory);

    cardinalityObservable.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(final ValueChangeEvent event) {
            final Boolean useCardinality = (Boolean) event.diff.getNewValue();
            if (useCardinality) {
                dataStackLayout.topControl = cardinalityContent;

            } else {
                dataStackLayout.topControl = dataContent;
            }
            dataContainerComposite.layout();

        }
    });

    return multiInstanceComposite;

}

From source file:org.bonitasoft.studio.properties.sections.iteration.IterationPropertySection.java

License:Open Source License

private void createOutputGroup(final TabbedPropertySheetWidgetFactory widgetFactory,
        final Composite dataContent) {
    final Composite outputComposite = widgetFactory.createPlainComposite(dataContent, SWT.NONE);
    outputComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).indent(0, 20).create());
    outputComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).create());

    final Button storeOutputButton = widgetFactory.createButton(outputComposite, Messages.storeOutputResult,
            SWT.CHECK);//w  ww.  j a  v  a2s  . c  o m
    storeOutputButton.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    final ISWTObservableValue observeStoreOutputSelection = SWTObservables.observeSelection(storeOutputButton);
    final IObservableValue selectionObservable = ViewersObservables.observeSingleSelection(selectionProvider);
    context.bindValue(observeStoreOutputSelection, CustomEMFEditObservables.observeDetailValue(
            Realm.getDefault(), selectionObservable, ProcessPackage.Literals.MULTI_INSTANTIABLE__STORE_OUTPUT));

    final Group outputGroup = widgetFactory.createGroup(outputComposite, Messages.output);
    outputGroup.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    outputGroup.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).spacing(5, 3).create());

    final Label outputDatalabel = widgetFactory.createLabel(outputGroup, Messages.outputData);
    outputDatalabel.setLayoutData(GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).create());
    final ComboViewer outputDataComboViewer = createComboViewer(widgetFactory, outputGroup,
            new ObservableListContentProviderWithProposalListenersForActivity());
    outputDataComboViewer.getControl().setLayoutData(
            GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).indent(5, 0).create());
    outputDataComboViewer.setSorter(new DataViewerSorter());

    final IViewerObservableValue observeSingleSelection = ViewersObservables
            .observeSingleSelection(outputDataComboViewer);

    final IObservableValue observeDataValue = CustomEMFEditObservables.observeDetailValue(Realm.getDefault(),
            selectionObservable, ProcessPackage.Literals.MULTI_INSTANTIABLE__OUTPUT_DATA);
    selectionObservable.addValueChangeListener(
            createInputValueChanged(outputDataComboViewer, observeSingleSelection, observeDataValue, true));
    context.bindValue(observeSingleSelection, observeDataValue);

    outputDataComboViewer
            .addSelectionChangedListener(createComboSelectionListener(outputDataComboViewer, true));

    final Label label = widgetFactory.createLabel(outputGroup, "");
    label.setImage(Pics.getImage("icon-arrow-down.png"));
    label.setLayoutData(GridDataFactory.fillDefaults().span(3, 1).align(SWT.CENTER, SWT.CENTER).create());

    final Label outputListlabel = widgetFactory.createLabel(outputGroup, Messages.outputList);
    outputListlabel.setLayoutData(GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).create());
    final ComboViewer outputListComboViewer = createComboViewer(widgetFactory, outputGroup,
            new ObservableListContentProviderWithProposalListenersForPool());
    outputListComboViewer.getControl().setLayoutData(
            GridDataFactory.fillDefaults().grab(true, false).hint(200, SWT.DEFAULT).indent(5, 0).create());
    outputListComboViewer.addFilter(new ListDataFilter());
    outputListComboViewer.setSorter(new DataViewerSorter());

    final IObservableValue observeDetailValue = CustomEMFEditObservables.observeDetailValue(Realm.getDefault(),
            selectionObservable,
            ProcessPackage.Literals.MULTI_INSTANTIABLE__LIST_DATA_CONTAINING_OUTPUT_RESULTS);
    final IViewerObservableValue observeSingleSelection2 = ViewersObservables
            .observeSingleSelection(outputListComboViewer);

    selectionObservable.addValueChangeListener(
            createInputValueChanged(outputListComboViewer, observeSingleSelection2, observeDetailValue, false));
    context.bindValue(observeSingleSelection2, observeDetailValue);

    context.bindValue(PojoObservables.observeValue(new RecursiveControlEnablement(outputGroup), "enabled"),
            observeStoreOutputSelection);

    outputListComboViewer
            .addSelectionChangedListener(createComboSelectionListener(outputListComboViewer, false));
}

From source file:org.bonitasoft.studio.properties.sections.iteration.IterationPropertySection.java

License:Open Source License

private SelectObservableValue createRecurrenceTypeRadioGroup(final Composite composite,
        final TabbedPropertySheetWidgetFactory widgetFactory) {
    final Composite recurrenceTypeComposite = widgetFactory.createPlainComposite(composite, SWT.NONE);
    recurrenceTypeComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(4).create());
    recurrenceTypeComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());

    final Button noneRadio = widgetFactory.createButton(recurrenceTypeComposite, Messages.noneLabel, SWT.RADIO);
    noneRadio.setLayoutData(GridDataFactory.fillDefaults().create());

    final Button standardRadio = widgetFactory.createButton(recurrenceTypeComposite, Messages.standardLoop,
            SWT.RADIO);//  w  w w  . ja  va 2  s  .  co m
    standardRadio.setLayoutData(GridDataFactory.fillDefaults().create());
    standardRadio.setImage(Pics.getImage("decoration/loop.png"));

    final Button parallelMultiRadio = widgetFactory.createButton(recurrenceTypeComposite,
            Messages.parallelMultinstantition, SWT.RADIO);
    parallelMultiRadio.setLayoutData(GridDataFactory.fillDefaults().create());
    parallelMultiRadio.setImage(Pics.getImage("decoration/parallel_multiInstance.png"));

    final Button sequentialMultiRadio = widgetFactory.createButton(recurrenceTypeComposite,
            Messages.sequentialMultinstantition, SWT.RADIO);
    sequentialMultiRadio.setLayoutData(GridDataFactory.fillDefaults().create());
    sequentialMultiRadio.setImage(Pics.getImage("decoration/sequential_multiInstance.png"));

    final SelectObservableValue recurrenceTypeObservable = new SelectObservableValue(MultiInstanceType.class);
    recurrenceTypeObservable.addOption(MultiInstanceType.NONE, SWTObservables.observeSelection(noneRadio));
    recurrenceTypeObservable.addOption(MultiInstanceType.STANDARD,
            SWTObservables.observeSelection(standardRadio));
    recurrenceTypeObservable.addOption(MultiInstanceType.PARALLEL,
            SWTObservables.observeSelection(parallelMultiRadio));
    recurrenceTypeObservable.addOption(MultiInstanceType.SEQUENTIAL,
            SWTObservables.observeSelection(sequentialMultiRadio));

    context.bindValue(recurrenceTypeObservable,
            CustomEMFEditObservables.observeDetailValue(Realm.getDefault(),
                    ViewersObservables.observeSingleSelection(selectionProvider),
                    ProcessPackage.Literals.MULTI_INSTANTIABLE__TYPE));

    return recurrenceTypeObservable;
}

From source file:org.bonitasoft.studio.properties.sections.message.wizards.AddMessageEventWizardPage.java

License:Open Source License

private void createcorrelationComposite(Composite composite) {
    composite.setLayout(GridLayoutFactory.fillDefaults().margins(5, 10).create());
    composite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    final Label correlationDescriptionLabel = new Label(composite, SWT.NONE | SWT.WRAP);
    correlationDescriptionLabel//  w ww  .  ja  v a 2 s  . c o  m
            .setLayoutData(GridDataFactory.fillDefaults().grab(true, false).indent(12, 0).create());
    correlationDescriptionLabel.setText(Messages.correlationDescription);
    final Button useCorrelationCheckbox = new Button(composite, SWT.CHECK);
    useCorrelationCheckbox
            .setLayoutData(GridDataFactory.fillDefaults().grab(false, false).indent(12, 0).create());

    final ControlDecoration correlationHelp = new ControlDecoration(useCorrelationCheckbox,
            SWT.LEFT | SWT.CENTER);
    correlationHelp
            .setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_INFO_TSK));
    correlationHelp.setDescriptionText(Messages.correlationKeyHelp);

    useCorrelationCheckbox.setText(Messages.useCorrelationkeys);
    useCorrelationCheckbox.setSelection(false);
    useCorrelationCheckbox.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            if (!useCorrelationCheckbox.getSelection()) {
                workingCopyMessage.getCorrelation().setCorrelationType(CorrelationTypeActive.INACTIVE);
            } else {
                workingCopyMessage.getCorrelation().setCorrelationType(CorrelationTypeActive.KEYS);
                updateValidationStatus(AddMessageEventWizardPage.this.hasAtLeastOneCorrelation(
                        workingCopyMessage.getCorrelation().getCorrelationAssociation()));
            }
        }
    });
    if (CorrelationTypeActive.KEYS.equals(workingCopyMessage.getCorrelation().getCorrelationType())) {
        useCorrelationCheckbox.setSelection(true);
        updateValidationStatus(AddMessageEventWizardPage.this
                .hasAtLeastOneCorrelation(workingCopyMessage.getCorrelation().getCorrelationAssociation()));
    } else {
        useCorrelationCheckbox.setSelection(false);
    }

    final Composite correlationComposite = new Composite(composite, SWT.NONE);
    correlationComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    correlationComposite.setLayout(GridLayoutFactory.fillDefaults().create());

    final List<String> captions = new ArrayList<String>(2);
    captions.add(Messages.correlationKey);
    captions.add(Messages.correlationValue);

    final ExpressionCollectionViewer ecv = new ExpressionCollectionViewer(correlationComposite, 5, false, 2,
            true, captions, false, true);
    ecv.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).hint(SWT.DEFAULT, 140).create());

    ecv.setAddRowLabel(Messages.AddCorrelation);
    ecv.setRemoveRowLabel(Messages.removeCorrelation);
    final List<ViewerFilter> filters = new ArrayList<ViewerFilter>(2);
    filters.add(new AvailableExpressionTypeFilter(new String[] { ExpressionConstants.CONSTANT_TYPE }));
    filters.add(new AvailableExpressionTypeFilter(
            new String[] { ExpressionConstants.CONSTANT_TYPE, ExpressionConstants.PARAMETER_TYPE,
                    ExpressionConstants.SCRIPT_TYPE, ExpressionConstants.VARIABLE_TYPE })); // Second column has
    // everything except
    // Form field and
    // simulation type
    ecv.setViewerFilters(filters);
    ecv.setInput(element);

    final TableExpression correlationAssociation = getCorrelationTable();
    ecv.setSelection(correlationAssociation);
    ecv.addModifyListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            IStatus status = AddMessageEventWizardPage.this.validateId(
                    workingCopyMessage.getCorrelation().getCorrelationAssociation(), Messages.correlation);
            updateValidationStatus(status);
        }
    });

    final ISWTObservableValue observeSelectionUseCorrelation = SWTObservables
            .observeSelection(useCorrelationCheckbox);
    databindingContext.bindValue(SWTObservables.observeEnabled(ecv.getViewer().getControl()),
            observeSelectionUseCorrelation);
    databindingContext.bindValue(SWTObservables.observeEnabled(ecv.getAddRowButton()),
            observeSelectionUseCorrelation);
    databindingContext.bindValue(SWTObservables.observeEnabled(ecv.getRemoveRowButton()),
            observeSelectionUseCorrelation);
}

From source file:org.bonitasoft.studio.properties.sections.timer.cron.CronEditor.java

License:Open Source License

protected void createYearyTab(TabFolder tablFolder) {
    final TabItem item = new TabItem(tablFolder, SWT.NONE);
    item.setText(Messages.yearly);/*  www .  j  av  a  2s .c  o m*/

    final Composite yearlyContent = new Composite(tablFolder, SWT.NONE);
    yearlyContent.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    yearlyContent.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).margins(15, 10).create());

    final Button everyRadio = new Button(yearlyContent, SWT.RADIO);
    everyRadio.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    everyRadio.setText(Messages.every);

    context.bindValue(SWTObservables.observeSelection(everyRadio),
            PojoProperties.value("everyYearForYearly").observe(cronExpression));

    final Composite everyComposite = new Composite(yearlyContent, SWT.NONE);
    everyComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    everyComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).margins(0, 0).create());

    final Combo monthCombo = new Combo(everyComposite, SWT.READ_ONLY | SWT.BORDER);
    monthCombo.setItems(MONTHS);

    UpdateValueStrategy monthComboStrategy = new UpdateValueStrategy();
    monthComboStrategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.january)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.february)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.march)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.april)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.may)) {
                return 5;
            } else if (fromObject.toString().equals(Messages.june)) {
                return 6;
            } else if (fromObject.toString().equals(Messages.july)) {
                return 7;
            } else if (fromObject.toString().equals(Messages.august)) {
                return 8;
            } else if (fromObject.toString().equals(Messages.september)) {
                return 9;
            } else if (fromObject.toString().equals(Messages.october)) {
                return 10;
            } else if (fromObject.toString().equals(Messages.november)) {
                return 11;
            } else if (fromObject.toString().equals(Messages.december)) {
                return 12;
            }
            return 1;
        }

    });
    UpdateValueStrategy monthComboStrategy2 = new UpdateValueStrategy();
    monthComboStrategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.january;
            case 2:
                return Messages.february;
            case 3:
                return Messages.march;
            case 4:
                return Messages.april;
            case 5:
                return Messages.may;
            case 6:
                return Messages.june;
            case 7:
                return Messages.july;
            case 8:
                return Messages.august;
            case 9:
                return Messages.september;
            case 10:
                return Messages.october;
            case 11:
                return Messages.november;
            case 12:
                return Messages.december;
            default:
                break;
            }

            return Messages.january;
        }

    });

    context.bindValue(SWTObservables.observeText(monthCombo),
            PojoProperties.value("monthForYearly").observe(cronExpression), monthComboStrategy,
            monthComboStrategy2);

    final Text dayText = new Text(everyComposite, SWT.BORDER | SWT.SINGLE);
    dayText.setLayoutData(GridDataFactory.swtDefaults().hint(70, SWT.DEFAULT).create());

    UpdateValueStrategy dayTextStrategy = new UpdateValueStrategy();
    dayTextStrategy.setAfterGetValidator(dotValidator);
    dayTextStrategy.setConverter(StringToNumberConverter.toInteger(true));
    dayTextStrategy.setBeforeSetValidator(new DayInMonthValidator());
    context.bindValue(SWTObservables.observeText(dayText, SWT.Modify),
            PojoProperties.value("dayOfMonthForYearly").observe(cronExpression), dayTextStrategy, null);

    final Button theRadio = new Button(yearlyContent, SWT.RADIO);
    theRadio.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    theRadio.setText(Messages.the);

    final Composite theComposite = new Composite(yearlyContent, SWT.NONE);
    theComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    theComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(4).margins(0, 0).create());

    final Combo rankCombo = new Combo(theComposite, SWT.READ_ONLY | SWT.BORDER);
    rankCombo.setItems(RANK);

    UpdateValueStrategy rankComboStrategy = new UpdateValueStrategy();
    rankComboStrategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.first)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.second)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.third)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.fourth)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.fifth)) {
                return 5;
            }
            return 1;
        }

    });
    UpdateValueStrategy rankComboStrategy2 = new UpdateValueStrategy();
    rankComboStrategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.first;
            case 2:
                return Messages.second;
            case 3:
                return Messages.third;
            case 4:
                return Messages.fourth;
            case 5:
                return Messages.fifth;
            default:
                break;
            }

            return Messages.first;
        }

    });

    context.bindValue(SWTObservables.observeText(rankCombo),
            PojoProperties.value("monthRankForYearly").observe(cronExpression), rankComboStrategy,
            rankComboStrategy2);

    final Combo dayCombo = new Combo(theComposite, SWT.READ_ONLY | SWT.BORDER);
    dayCombo.setItems(DAYS_OF_WEEK);

    UpdateValueStrategy dayComboStrategy = new UpdateValueStrategy();
    dayComboStrategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.monday)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.tuesday)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.wednesday)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.thursday)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.friday)) {
                return 5;
            } else if (fromObject.toString().equals(Messages.saturday)) {
                return 6;
            } else if (fromObject.toString().equals(Messages.sunday)) {
                return 7;
            }
            return 1;
        }

    });
    UpdateValueStrategy dayComboStrategy2 = new UpdateValueStrategy();
    dayComboStrategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.monday;
            case 2:
                return Messages.tuesday;
            case 3:
                return Messages.wednesday;
            case 4:
                return Messages.thursday;
            case 5:
                return Messages.friday;
            case 6:
                return Messages.saturday;
            case 7:
                return Messages.sunday;
            default:
                break;
            }

            return Messages.monday;
        }

    });

    context.bindValue(SWTObservables.observeText(dayCombo),
            PojoProperties.value("dayOfWeekForYearly").observe(cronExpression), dayComboStrategy,
            dayComboStrategy2);

    final Label ofLabel = new Label(theComposite, SWT.NONE);
    ofLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    ofLabel.setText(Messages.of);

    final Combo monthCombo2 = new Combo(theComposite, SWT.READ_ONLY | SWT.BORDER);
    monthCombo2.setItems(MONTHS);

    UpdateValueStrategy monthCombo2Strategy = new UpdateValueStrategy();
    monthCombo2Strategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.january)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.february)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.march)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.april)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.may)) {
                return 5;
            } else if (fromObject.toString().equals(Messages.june)) {
                return 6;
            } else if (fromObject.toString().equals(Messages.july)) {
                return 7;
            } else if (fromObject.toString().equals(Messages.august)) {
                return 8;
            } else if (fromObject.toString().equals(Messages.september)) {
                return 9;
            } else if (fromObject.toString().equals(Messages.october)) {
                return 10;
            } else if (fromObject.toString().equals(Messages.november)) {
                return 11;
            } else if (fromObject.toString().equals(Messages.december)) {
                return 12;
            }
            return 1;
        }

    });
    UpdateValueStrategy monthCombo2Strategy2 = new UpdateValueStrategy();
    monthCombo2Strategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.january;
            case 2:
                return Messages.february;
            case 3:
                return Messages.march;
            case 4:
                return Messages.april;
            case 5:
                return Messages.may;
            case 6:
                return Messages.june;
            case 7:
                return Messages.july;
            case 8:
                return Messages.august;
            case 9:
                return Messages.september;
            case 10:
                return Messages.october;
            case 11:
                return Messages.november;
            case 12:
                return Messages.december;
            default:
                break;
            }

            return Messages.january;
        }

    });

    context.bindValue(SWTObservables.observeText(monthCombo2),
            PojoProperties.value("monthOfYearForYearly").observe(cronExpression), monthCombo2Strategy,
            monthCombo2Strategy2);

    final IObservableValue hourObservable = PojoProperties.value("atHourInYear").observe(cronExpression);
    final IObservableValue minuteObservable = PojoProperties.value("atMinuteInYear").observe(cronExpression);
    final IObservableValue secondObservable = PojoProperties.value("atSecondInYear").observe(cronExpression);
    createStartTimeComposite(yearlyContent, hourObservable, minuteObservable, secondObservable);

    item.setControl(yearlyContent);
}

From source file:org.bonitasoft.studio.properties.sections.timer.cron.CronEditor.java

License:Open Source License

protected void createMonthlyTab(TabFolder tablFolder) {
    final TabItem item = new TabItem(tablFolder, SWT.NONE);
    item.setText(Messages.monthly);//from ww  w  .j a  v a  2  s .c  o  m

    final Composite monthlyContent = new Composite(tablFolder, SWT.NONE);
    monthlyContent.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    monthlyContent.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).margins(15, 10).create());

    final Button dayRadio = new Button(monthlyContent, SWT.RADIO);
    dayRadio.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    dayRadio.setText(Messages.day);

    context.bindValue(SWTObservables.observeSelection(dayRadio),
            PojoProperties.value("useDayInMonthForMonthly").observe(cronExpression));

    final Composite dayComposite = new Composite(monthlyContent, SWT.NONE);
    dayComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    dayComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(4).margins(0, 0).create());

    final Text dayText = new Text(dayComposite, SWT.BORDER | SWT.SINGLE);
    dayText.setLayoutData(GridDataFactory.fillDefaults().hint(70, SWT.DEFAULT).create());

    UpdateValueStrategy dayTextStrategy = new UpdateValueStrategy();
    dayTextStrategy.setAfterGetValidator(dotValidator);
    dayTextStrategy.setConverter(StringToNumberConverter.toInteger(true));
    dayTextStrategy.setBeforeSetValidator(new DayInMonthValidator());
    context.bindValue(SWTObservables.observeText(dayText, SWT.Modify),
            PojoProperties.value("dayOfMonthForMonthly").observe(cronExpression), dayTextStrategy, null);

    final Label ofEveryLabel = new Label(dayComposite, SWT.NONE);
    ofEveryLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    ofEveryLabel.setText(Messages.ofEvery);

    final Text everyMonthText = new Text(dayComposite, SWT.BORDER | SWT.SINGLE);
    everyMonthText.setLayoutData(GridDataFactory.fillDefaults().hint(70, SWT.DEFAULT).create());

    UpdateValueStrategy everyMonthTextStrategy = new UpdateValueStrategy();
    everyMonthTextStrategy.setAfterGetValidator(dotValidator);
    everyMonthTextStrategy.setConverter(StringToNumberConverter.toInteger(true));
    everyMonthTextStrategy.setBeforeSetValidator(new MonthInYearValidator());
    context.bindValue(SWTObservables.observeText(everyMonthText, SWT.Modify),
            PojoProperties.value("monthInYearForMonthly").observe(cronExpression), everyMonthTextStrategy,
            null);

    final Label monthLabel = new Label(dayComposite, SWT.NONE);
    monthLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    monthLabel.setText(Messages.monthLabel);

    final Button theRadio = new Button(monthlyContent, SWT.RADIO);
    theRadio.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    theRadio.setText(Messages.the);

    final Composite theComposite = new Composite(monthlyContent, SWT.NONE);
    theComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    theComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(5).margins(0, 0).create());

    final Combo rankCombo = new Combo(theComposite, SWT.READ_ONLY | SWT.BORDER);
    rankCombo.setItems(RANK);

    UpdateValueStrategy rankComboStrategy = new UpdateValueStrategy();
    rankComboStrategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.first)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.second)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.third)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.fourth)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.fifth)) {
                return 5;
            }
            return 1;
        }

    });
    UpdateValueStrategy rankComboStrategy2 = new UpdateValueStrategy();
    rankComboStrategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.first;
            case 2:
                return Messages.second;
            case 3:
                return Messages.third;
            case 4:
                return Messages.fourth;
            case 5:
                return Messages.fifth;
            default:
                break;
            }

            return Messages.first;
        }

    });

    context.bindValue(SWTObservables.observeText(rankCombo),
            PojoProperties.value("monthRankForMonthly").observe(cronExpression), rankComboStrategy,
            rankComboStrategy2);

    final Combo dayCombo = new Combo(theComposite, SWT.READ_ONLY | SWT.BORDER);
    dayCombo.setItems(DAYS_OF_WEEK);

    UpdateValueStrategy dayComboStrategy = new UpdateValueStrategy();
    dayComboStrategy.setConverter(new Converter(String.class, Integer.class) {

        @Override
        public Object convert(Object fromObject) {
            if (fromObject.toString().equals(Messages.monday)) {
                return 1;
            } else if (fromObject.toString().equals(Messages.tuesday)) {
                return 2;
            } else if (fromObject.toString().equals(Messages.wednesday)) {
                return 3;
            } else if (fromObject.toString().equals(Messages.thursday)) {
                return 4;
            } else if (fromObject.toString().equals(Messages.friday)) {
                return 5;
            } else if (fromObject.toString().equals(Messages.saturday)) {
                return 6;
            } else if (fromObject.toString().equals(Messages.sunday)) {
                return 7;
            }
            return 1;
        }

    });
    UpdateValueStrategy dayComboStrategy2 = new UpdateValueStrategy();
    dayComboStrategy2.setConverter(new Converter(Integer.class, String.class) {

        @Override
        public Object convert(Object fromObject) {
            Integer value = (Integer) fromObject;
            switch (value) {
            case 1:
                return Messages.monday;
            case 2:
                return Messages.tuesday;
            case 3:
                return Messages.wednesday;
            case 4:
                return Messages.thursday;
            case 5:
                return Messages.friday;
            case 6:
                return Messages.saturday;
            case 7:
                return Messages.sunday;
            default:
                break;
            }

            return Messages.monday;
        }

    });

    context.bindValue(SWTObservables.observeText(dayCombo),
            PojoProperties.value("dayOfWeekForMonthly").observe(cronExpression), dayComboStrategy,
            dayComboStrategy2);

    final Label ofEveryLabel2 = new Label(theComposite, SWT.NONE);
    ofEveryLabel2.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    ofEveryLabel2.setText(Messages.ofEvery);

    final Text everyMonthText2 = new Text(theComposite, SWT.BORDER | SWT.SINGLE);
    everyMonthText2.setLayoutData(GridDataFactory.swtDefaults().hint(70, SWT.DEFAULT).create());

    UpdateValueStrategy everyMonthText2Strategy = new UpdateValueStrategy();
    everyMonthText2Strategy.setConverter(StringToNumberConverter.toInteger(true));
    everyMonthText2Strategy.setBeforeSetValidator(new FrequencyValidator());
    context.bindValue(SWTObservables.observeText(everyMonthText2, SWT.Modify),
            PojoProperties.value("monthOfYearForMonthly").observe(cronExpression), everyMonthText2Strategy,
            null);

    final Label monthLabel2 = new Label(theComposite, SWT.NONE);
    monthLabel2.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).create());
    monthLabel2.setText(Messages.monthLabel);

    final IObservableValue hourObservable = PojoProperties.value("atHourInMonth").observe(cronExpression);
    final IObservableValue minuteObservable = PojoProperties.value("atMinuteInMonth").observe(cronExpression);
    final IObservableValue secondObservable = PojoProperties.value("atSecondInMonth").observe(cronExpression);
    createStartTimeComposite(monthlyContent, hourObservable, minuteObservable, secondObservable);

    item.setControl(monthlyContent);
}