Example usage for org.eclipse.jface.databinding.swt WidgetProperties enabled

List of usage examples for org.eclipse.jface.databinding.swt WidgetProperties enabled

Introduction

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

Prototype

public static IWidgetValueProperty enabled() 

Source Link

Document

Returns a value property for observing the enablement state of a Control , Menu (since 1.5), MenuItem (since 1.5), ScrollBar (since 1.5) or ToolItem (since 1.5).

Usage

From source file:com.planetmayo.debrief.satc_rcp.ui.contributions.RangeForecastContributionView.java

License:Open Source License

protected void bindSliderForRange(DataBindingContext context, IObservableValue modelValue, Scale slider,
        Label label, Button checkBox, boolean maxValue) {
    IObservableValue sliderValue = WidgetProperties.selection().observe(slider);
    IObservableValue sliderEnabled = WidgetProperties.enabled().observe(slider);
    IObservableValue labelValue = WidgetProperties.text().observe(label);

    double MAX_SELECTABLE_RANGE_YDS = new MeterToYds()
            .safeConvert(new Double(RangeForecastContribution.MAX_SELECTABLE_RANGE_M));

    // here are the original values. We had to change them to allow range out to 100kyds
    //      int[] borders = {0, 1000, 3000, 7000, 17000, (int)MAX_SELECTABLE_RANGE_YDS};
    //      int[] increments = {50, 100, 200, 500, 1000};
    int[] borders = { 0, 1000, 3000, 7000, 10000, (int) MAX_SELECTABLE_RANGE_YDS };
    int[] increments = { 50, 100, 500, 1000, 2000 };
    context.bindValue(sliderValue, modelValue,
            UIUtils.converterStrategy(new ScaleConverterFrom(increments, borders)),
            UIUtils.converterStrategy(new ScaleConverterTo(increments, borders)));
    double defaultValue = maxValue ? MAX_SELECTABLE_RANGE_YDS : 0;
    context.bindValue(sliderEnabled, modelValue, null, UIUtils.converterStrategy(new NullToBooleanConverter()));
    if (checkBox != null) {
        IObservableValue checkBoxValue = WidgetProperties.selection().observe(checkBox);
        context.bindValue(checkBoxValue, modelValue,
                UIUtils.converterStrategy(new BooleanToNullConverter<Double>(defaultValue)),
                UIUtils.converterStrategy(new NullToBooleanConverter()));
    }//from   w  w  w. ja v  a  2 s  .c o  m
    PrefixSuffixLabelConverter labelsConverter = new PrefixSuffixLabelConverter(Object.class, "", " Yds",
            new DecimalFormat("0"));
    labelsConverter.setNestedUnitConverter(UnitConverter.RANGE_YDS.getModelToUI());
    context.bindValue(labelValue, modelValue, null, UIUtils.converterStrategy(labelsConverter));
}

From source file:era.foss.typeeditor.common.AddDeleteTableViewer.java

License:Open Source License

/**
 * Create a button bar holding the Add and Remove Button.
 *///from w  w w  . j a  v  a2s .  c o m
protected void createButtonBar() {

    buttonBar = new Composite(composite, SWT.NONE);
    buttonBar.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, true, false));
    buttonBar.setLayout(new RowLayout(SWT.HORIZONTAL));

    // Create Add Button
    Button addElementButton = new Button(buttonBar, SWT.PUSH);
    addElementButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ADD));
    addElementButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            AddDeleteTableViewer.this.addElement();
            AddDeleteTableViewer.this.refresh();
        }
    });

    // Create Delete Button
    Button removeElementsButton = new Button(buttonBar, SWT.PUSH);
    removeElementsButton
            .setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE));
    removeElementsButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            removeElements();
            refresh();
        }
    });

    // Create move up button
    Button moveUpElementsButton = new Button(buttonBar, SWT.PUSH);
    moveUpElementsButton.setImage(EraImages.getImage(EraImages.IMG_MOVE_UP));
    moveUpElementsButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            AddDeleteTableViewer.this.moveElements(-1);
            refresh();
        }
    });

    // Create move up button
    Button moveDownElementsButton = new Button(buttonBar, SWT.PUSH);
    moveDownElementsButton.setImage(EraImages.getImage(EraImages.IMG_MOVE_DOWN));
    moveDownElementsButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            AddDeleteTableViewer.this.moveElements(1);
            refresh();
        }
    });

    // Only enable delete and move buttons only when elements are selected
    IObservableValue selectionProperty = new SelectionProviderHasSelectionProperty()
            .observe(AddDeleteTableViewer.this);
    UpdateValueStrategy defaultStrategy = new UpdateValueStrategy();
    UpdateValueStrategy neverStrategy = new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER);
    dataBindContext.bindValue(WidgetProperties.enabled().observe(removeElementsButton), selectionProperty,
            neverStrategy, defaultStrategy);
    dataBindContext.bindValue(WidgetProperties.enabled().observe(moveUpElementsButton), selectionProperty,
            neverStrategy, defaultStrategy);
    dataBindContext.bindValue(WidgetProperties.enabled().observe(moveDownElementsButton), selectionProperty,
            neverStrategy, defaultStrategy);

}

From source file:eu.numberfour.n4js.ui.wizard.classifiers.N4JSNewClassifierWizardPage.java

License:Open Source License

/**
 * Setup additional non-component contained bindings
 *///ww w.  ja va  2s  .c  om
protected void setupBindings() {

    DataBindingContext dataBindingContext = this.getDataBindingContext();

    IObservableValue moduleSpecifierValue = BeanProperties
            .value(WorkspaceWizardModel.class, WorkspaceWizardModel.MODULE_SPECIFIER_PROPERTY)
            .observe(getModel());

    IObservableValue suffixVisibilityValue = BeanProperties
            .value(SuffixText.class, SuffixText.SUFFIX_VISIBILITY_PROPERTY)
            .observe(workspaceWizardControl.getModuleSpecifierText());

    //// Only show the suffix on input values ending with a '/' character or empty module specifiers.
    dataBindingContext.bindValue(suffixVisibilityValue, moduleSpecifierValue, noUpdateValueStrategy(),
            WizardComponentDataConverters.strategyForPredicate(m -> {
                String moduleSpecifier = (String) m;
                return (moduleSpecifier.isEmpty()
                        || moduleSpecifier.charAt(moduleSpecifier.length() - 1) == IPath.SEPARATOR);
            }));

    //// interface name to module specifier suffix binding
    IObservableValue interfaceNameModelValue = BeanProperties
            .value(N4JSInterfaceWizardModel.class, N4JSClassifierWizardModel.NAME_PROPERTY).observe(getModel());
    IObservableValue greySuffixValue = BeanProperties.value(SuffixText.class, SuffixText.SUFFIX_PROPERTY)
            .observe(workspaceWizardControl.getModuleSpecifierText());
    dataBindingContext.bindValue(greySuffixValue, interfaceNameModelValue, noUpdateValueStrategy(),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    //// Enable n4js <-> Definition value(external) is selected
    IObservableValue externalValue = BeanProperties
            .value(DefinitionFileModel.class, N4JSClassifierWizardModel.DEFINITION_FILE_PROPERTY)
            .observe(getModel());

    IObservableValue n4jsEnabled = WidgetProperties.enabled()
            .observe(otherClassifierModifiersComponent.getN4jsAnnotationBox());
    dataBindingContext.bindValue(n4jsEnabled, externalValue, noUpdateValueStrategy(),
            WizardComponentDataConverters.strategyForPredicate(input -> getModel().isDefinitionFile()
                    && AccessModifier.PRIVATE != getModel().getAccessModifier()));

    // One way binding of the access modifiers to the enabled state of internal checkbox
    IObservableValue internalEnabledValue = WidgetProperties.enabled()
            .observe(accessModifierComponent.getInternalAnnotationBox());
    IObservableValue accessModifierSelectObservable = BeanProperties
            .value(N4JSInterfaceWizardModel.class, N4JSClassifierWizardModel.ACCESS_MODIFIER_PROPERTY)
            .observe(getModel());

    dataBindingContext.bindValue(internalEnabledValue, accessModifierSelectObservable, noUpdateValueStrategy(),
            WizardComponentDataConverters.strategyForPredicate(object -> {
                if (object instanceof AccessModifier) {
                    return isInternalAccessModifierEnabled((AccessModifier) object);
                }
                return false;
            }));

    // N4JS annotation checkbox disabled when access modifier is private
    IObservableValue n4jsEnabledValue = WidgetProperties.enabled()
            .observe(otherClassifierModifiersComponent.getN4jsAnnotationBox());
    dataBindingContext.bindValue(n4jsEnabledValue, accessModifierSelectObservable, noUpdateValueStrategy(),
            WizardComponentDataConverters.strategyForPredicate(object -> {
                if (object instanceof AccessModifier) {
                    return ((AccessModifier) object != AccessModifier.PRIVATE) && getModel().isDefinitionFile();
                }
                return false;
            }));

    // Refresh wizard state on validation change
    IObservableValue observableValidationValue = BeanProperties
            .value(WorkspaceWizardModelValidator.VALIDATION_RESULT).observe(getValidator());
    observableValidationValue.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            onValidationChange((ValidationResult) event.diff.getNewValue());
        }

    });

}

From source file:eu.numberfour.n4js.ui.wizard.classwizard.N4JSNewClassWizardPage.java

License:Open Source License

private void setupBindings(N4JSNewClassMainForm mainForm) {
    databindingContext = new DataBindingContext();

    // Project property binding
    IObservableValue projectModelValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.PROJECT_PROPERTY).observe(model);
    IObservableValue projectUI = WidgetProperties.text(SWT.Modify).observe(mainForm.getProjectText());

    // Note: No model to UI conversation here as IPath is castable to String (default behaviour)
    databindingContext.bindValue(projectUI, projectModelValue,
            new StringToPathConverter().updatingValueStrategy(),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    // Source folder property binding
    IObservableValue sourceFolderModelValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.SOURCE_FOLDER_PROPERTY).observe(model);
    IObservableValue sourceFolderUI = WidgetProperties.text(SWT.Modify).observe(mainForm.getSourceFolderText());

    // Note: No model to UI conversation (see above)
    databindingContext.bindValue(sourceFolderUI, sourceFolderModelValue,
            new StringToPathConverter().updatingValueStrategy(),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    IObservableValue projectValidModelValue = BeanProperties
            .value(N4JSClassWizardModelValidator.class, N4JSClassWizardModelValidator.PROJECT_PROPERTY_VALID)
            .observe(this.validator);
    IObservableValue sourceFolderBrowseEnabled = WidgetProperties.enabled()
            .observe(mainForm.getSourceFolderBrowseButton());

    databindingContext.bindValue(sourceFolderBrowseEnabled, projectValidModelValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    // Module specifier property binding
    IObservableValue moduleSpecifierModelValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.MODULE_SPECIFIER_PROPERTY).observe(model);
    IObservableValue moduleSpecifierUI = BeanProperties.value(SuffixText.class, SuffixText.TEXT_PROPERTY)
            .observe(mainForm.getModuleSpecifierText());
    databindingContext.bindValue(moduleSpecifierUI, moduleSpecifierModelValue);

    // Class name property binding
    IObservableValue classNameModelValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.CLASS_NAME_PROPERTY).observe(model);
    IObservableValue classNameUI = WidgetProperties.text(SWT.Modify).observe(mainForm.getClassNameText());
    databindingContext.bindValue(classNameUI, classNameModelValue);

    //// Class name to module specifier suffix binding
    IObservableValue greySuffixValue = BeanProperties.value(SuffixText.class, SuffixText.SUFFIX_PROPERTY)
            .observe(mainForm.getModuleSpecifierText());
    databindingContext.bindValue(greySuffixValue, classNameModelValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    //// Only show the suffix on input values ending with a '/' character or empty module specifiers.
    mainForm.getModuleSpecifierText().addPropertyChangeListener(new PropertyChangeListener() {

        @Override//w  w  w.  j  a v  a  2s  . c om
        public void propertyChange(PropertyChangeEvent evt) {
            SuffixText input = mainForm.getModuleSpecifierText();
            String inputText = input.getText();
            if (inputText.equals("") || inputText.charAt(inputText.length() - 1) == '/') {
                input.setSuffixVisible(true);
            } else {
                input.setSuffixVisible(false);
            }

        }
    });

    IObservableValue moduleSpecifierBrowseEnabled = WidgetProperties.enabled()
            .observe(mainForm.getModuleSpecifierBrowseButton());
    IObservableValue sourceFolderValidValue = BeanProperties.value(N4JSClassWizardModelValidator.class,
            N4JSClassWizardModelValidator.SOURCE_FOLDER_PROPERTY_VALID).observe(this.validator);
    IObservableValue projectValidValue = BeanProperties
            .value(N4JSClassWizardModelValidator.class, N4JSClassWizardModelValidator.PROJECT_PROPERTY_VALID)
            .observe(this.validator);

    ConditionalConverter moduleSpecifierBrowseableConverter = new ConditionalConverter() {

        @Override
        public boolean validate(Object object) {
            return validator.getSourceFolderValid() && validator.getProjectValid();
        }
    };

    // Bind model changes of project or source folder property to the enabled state of the module specifier browse
    // button.
    databindingContext.bindValue(moduleSpecifierBrowseEnabled, projectValidValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            moduleSpecifierBrowseableConverter.updatingValueStrategy());
    databindingContext.bindValue(moduleSpecifierBrowseEnabled, sourceFolderValidValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            moduleSpecifierBrowseableConverter.updatingValueStrategy());

    // External property binding (definition file)

    IObservableValue externalValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.EXTERNAL_PROPERTY).observe(model);
    IObservableValue externalUI = WidgetProperties.selection().observe(mainForm.getDefinitionFileBox());
    databindingContext.bindValue(externalUI, externalValue);

    // Access modifier property binding

    IObservableValue publicButtonSelection = WidgetProperties.selection()
            .observe(mainForm.getPublicAccessModifierBox());
    IObservableValue projectButtonSelection = WidgetProperties.selection()
            .observe(mainForm.getProjectAccessModifierBox());
    IObservableValue privateButtonSelection = WidgetProperties.selection()
            .observe(mainForm.getPrivateAccessModifierBox());

    SelectObservableValue accessModifierSelectObservable = new SelectObservableValue();
    accessModifierSelectObservable.addOption(N4JSClassWizardModel.AccessModifier.PUBLIC, publicButtonSelection);
    accessModifierSelectObservable.addOption(N4JSClassWizardModel.AccessModifier.PROJECT,
            projectButtonSelection);
    accessModifierSelectObservable.addOption(N4JSClassWizardModel.AccessModifier.PRIVATE,
            privateButtonSelection);

    IObservableValue accessModifierProperty = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.ACCESS_MODIFIER_PROPERTY).observe(model);

    databindingContext.bindValue(accessModifierSelectObservable, accessModifierProperty);

    // Internal property binding

    IObservableValue internalValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.INTERNAL_PROPERTY).observe(model);
    IObservableValue internalUI = WidgetProperties.selection().observe(mainForm.getInternalAnnotationBox());
    databindingContext.bindValue(internalUI, internalValue);

    IObservableValue internalEnabledValue = WidgetProperties.enabled()
            .observe(mainForm.getInternalAnnotationBox());

    // One way binding of the access modifiers to the enabled state of internal checkbox
    databindingContext.bindValue(internalEnabledValue, accessModifierSelectObservable,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new N4JSNewClassWizardConverters.ConditionalConverter() {

                @Override
                public boolean validate(Object object) {
                    if (object instanceof AccessModifier) {
                        if (((AccessModifier) object) == AccessModifier.PROJECT
                                || ((AccessModifier) object) == AccessModifier.PUBLIC) {
                            return true;
                        }
                    }
                    return false;
                }
            }.updatingValueStrategy());

    // Final property binding

    IObservableValue finalValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.FINAL_PROPERTY).observe(model);
    IObservableValue finalUI = WidgetProperties.selection().observe(mainForm.getFinalAnnotationBox());
    databindingContext.bindValue(finalUI, finalValue);

    // n4js annotation property binding

    IObservableValue n4jsValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.N4JS_PROPERTY).observe(model);
    IObservableValue n4jsUI = WidgetProperties.selection().observe(mainForm.getN4jsAnnotationBox());

    databindingContext.bindValue(n4jsUI, n4jsValue);

    // super class property binding

    IObservableValue superClassValue = BeanProperties
            .value(N4JSClassWizardModel.class, N4JSClassWizardModel.SUPER_CLASS_PROPERTY).observe(model);
    IObservableValue superClassUI = WidgetProperties.text(SWT.Modify).observe(mainForm.getSuperClassText());

    databindingContext.bindValue(superClassUI, superClassValue,
            new N4JSNewClassWizardConverters.StringToClassifierReferenceConverter().updatingValueStrategy(),
            new N4JSNewClassWizardConverters.ClassifierReferenceToStringConverter().updatingValueStrategy());

    //// Enable n4js <-> Definition value(external) is selected
    IObservableValue n4jsUIEnabled = WidgetProperties.enabled().observe(mainForm.getN4jsAnnotationBox());
    databindingContext.bindValue(n4jsUIEnabled, externalValue);

    // Validation property result binding

    observableValidationValue = BeanProperties.value(N4JSClassWizardModelValidator.VALIDATION_RESULT)
            .observe(this.validator);
    observableValidationValue.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            onValidationChange((ValidationResult) event.diff.getNewValue());
        }
    });

}

From source file:eu.numberfour.n4js.ui.wizard.workspace.WorkspaceWizardPage.java

License:Open Source License

private void setupBindings(WorkspaceWizardPageForm wizardForm) {
    databindingContext = new DataBindingContext();

    WorkspaceWizardModelValidator<M> validator = getValidator();

    // Project property binding
    IObservableValue projectModelValue = BeanProperties
            .value(WorkspaceWizardModel.class, WorkspaceWizardModel.PROJECT_PROPERTY).observe(model);
    IObservableValue projectUI = WidgetProperties.text(SWT.Modify).observe(wizardForm.getProjectText());

    // Note: No model to UI conversation here as IPath is castable to String (default behavior)
    databindingContext.bindValue(projectUI, projectModelValue,
            new StringToPathConverter().updatingValueStrategy(),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    // Source folder property binding
    IObservableValue sourceFolderModelValue = BeanProperties
            .value(WorkspaceWizardModel.class, WorkspaceWizardModel.SOURCE_FOLDER_PROPERTY).observe(model);
    IObservableValue sourceFolderUI = WidgetProperties.text(SWT.Modify)
            .observe(wizardForm.getSourceFolderText());

    // Note: No model to UI conversation (see above)
    databindingContext.bindValue(sourceFolderUI, sourceFolderModelValue,
            new StringToPathConverter().updatingValueStrategy(),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    IObservableValue projectValidModelValue = BeanProperties
            .value(WorkspaceWizardModelValidator.class, WorkspaceWizardModelValidator.PROJECT_PROPERTY_VALID)
            .observe(validator);// www  . j  a va  2s. co  m
    IObservableValue sourceFolderBrowseEnabled = WidgetProperties.enabled()
            .observe(wizardForm.getSourceFolderBrowseButton());

    databindingContext.bindValue(sourceFolderBrowseEnabled, projectValidModelValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));

    // Module specifier property binding
    IObservableValue moduleSpecifierModelValue = BeanProperties
            .value(WorkspaceWizardModel.class, WorkspaceWizardModel.MODULE_SPECIFIER_PROPERTY).observe(model);
    IObservableValue moduleSpecifierUI = BeanProperties.value(SuffixText.class, SuffixText.TEXT_PROPERTY)
            .observe(wizardForm.getModuleSpecifierText());
    databindingContext.bindValue(moduleSpecifierUI, moduleSpecifierModelValue);

    // Conditional activation of the browse buttons according to the precedent input fields validity
    IObservableValue moduleSpecifierBrowseEnabled = WidgetProperties.enabled()
            .observe(wizardForm.getModuleSpecifierBrowseButton());
    IObservableValue sourceFolderValidValue = BeanProperties.value(WorkspaceWizardModelValidator.class,
            WorkspaceWizardModelValidator.SOURCE_FOLDER_PROPERTY_VALID).observe(validator);
    IObservableValue projectValidValue = BeanProperties
            .value(WorkspaceWizardModelValidator.class, WorkspaceWizardModelValidator.PROJECT_PROPERTY_VALID)
            .observe(validator);

    ConditionalConverter moduleSpecifierBrowseableConverter = new ConditionalConverter() {
        @Override
        public boolean validate(Object object) {
            return validator.getSourceFolderValid() && validator.getProjectValid();
        }
    };

    // Bind model changes of project or source folder property to the enabled state of the module specifier browse
    // button.
    databindingContext.bindValue(moduleSpecifierBrowseEnabled, projectValidValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            moduleSpecifierBrowseableConverter.updatingValueStrategy());
    databindingContext.bindValue(moduleSpecifierBrowseEnabled, sourceFolderValidValue,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            moduleSpecifierBrowseableConverter.updatingValueStrategy());
}

From source file:gov.redhawk.datalist.ui.views.OptionsComposite.java

License:Open Source License

public void createControl(Composite main) {
    final Composite parent = new Composite(main, SWT.None);
    parent.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    parent.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).create());

    final ComboViewer captureCombo = new ComboViewer(parent, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.BORDER);
    captureCombo.setContentProvider(new ArrayContentProvider());
    captureCombo.setLabelProvider(new LabelProvider());
    captureCombo.setInput(new Object[] { CaptureMethod.NUMBER, CaptureMethod.INDEFINITELY });
    ctx.bindValue(ViewerProperties.singleSelection().observe(captureCombo),
            BeanProperties.value("processType").observe(settings));

    samplesTxt = new Text(parent, SWT.BORDER);
    samplesTxt.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    ctx.bindValue(WidgetProperties.enabled().observe(samplesTxt),
            BeanProperties.value("processType").observe(settings),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy().setConverter(new Converter(CaptureMethod.class, Boolean.class) {

                @Override/*from  ww w .  j a v a2 s.co  m*/
                public Object convert(Object fromObject) {
                    if (fromObject == CaptureMethod.INDEFINITELY) {
                        return false;
                    }
                    return true;
                }
            }));
    Binding binding = ctx.bindValue(WidgetProperties.text(SWT.Modify).observe(samplesTxt),
            BeanProperties.value("samples").observe(settings),
            new UpdateValueStrategy().setBeforeSetValidator(new IValidator() {

                @Override
                public IStatus validate(Object obj) {
                    Double value = (Double) obj;
                    if (Double.valueOf(value) <= 0) {
                        return ValidationStatus.error(settings.getProcessType() + " must be greater than 0.");
                    }

                    if (value > Integer.MAX_VALUE) {
                        return ValidationStatus.error(settings.getProcessType()
                                + " must be less than or equal to " + Integer.MAX_VALUE + ".");
                    }

                    if ((value - value.intValue()) > 0) {
                        return ValidationStatus
                                .error(settings.getProcessType() + " must be a positive integer.");
                    }

                    if (value > 1000000) {
                        return ValidationStatus.warning("For this sample size, you may run out of heap space.");
                    }
                    return ValidationStatus.ok();
                }

            }), null);
    ControlDecorationSupport.create(binding, SWT.TOP | SWT.LEFT);

    final IObservableValue running = BeanProperties.value("running").observe(state);
    final IObservableValue pType = BeanProperties.value("processType").observe(settings);
    ComputedValue enabledSamples = new ComputedValue(Boolean.class) {

        @Override
        protected Object calculate() {
            return !(Boolean) running.getValue() && pType.getValue() != CaptureMethod.INDEFINITELY;
        }
    };

    ctx.bindValue(WidgetProperties.enabled().observe(samplesTxt), enabledSamples,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

    final Label unitsLabel = new Label(parent, SWT.None);
    unitsLabel.setText("");
    GridData unitsLayout = new GridData();
    unitsLayout.widthHint = 20;
    unitsLabel.setLayoutData(unitsLayout);

    settings.addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if ("processType".equals(evt.getPropertyName())) {
                CaptureMethod method = (CaptureMethod) evt.getNewValue();
                if (method == CaptureMethod.INDEFINITELY) {
                    settings.setSamples(1);
                    unitsLabel.setText("");
                } else {
                    if (method == CaptureMethod.CLOCK_TIME || method == CaptureMethod.SAMPLE_TIME) {
                        unitsLabel.setText("(s)");
                    } else {
                        unitsLabel.setText("");
                    }
                    settings.setSamples(1024);
                }
            }
        }
    });

    Label label = new Label(parent, SWT.None);
    label.setText("Number of Dimensions:");

    Combo columnsCombo = new Combo(parent, SWT.BORDER | SWT.SINGLE | SWT.DROP_DOWN);
    columnsCombo.setText(REAL);
    columnsCombo.add(REAL, 0);
    columnsCombo.add(COMPLEX, 1);
    columnsCombo.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
    ctx.bindValue(WidgetProperties.enabled().observe(columnsCombo),
            BeanProperties.value("running").observe(state),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy().setConverter(new Converter(Boolean.class, Boolean.class) {

                @Override
                public Boolean convert(Object fromObject) {
                    return !((Boolean) fromObject);
                }
            }));
    binding = ctx.bindValue(WidgetProperties.selection().observe(columnsCombo),
            BeanProperties.value("dimensions").observe(settings),
            new UpdateValueStrategy().setAfterGetValidator(new IValidator() {

                @Override
                public IStatus validate(Object value) {
                    if (REAL.equalsIgnoreCase((String) value)) {
                        return ValidationStatus.ok();
                    } else if (COMPLEX.equalsIgnoreCase((String) value)) {
                        return ValidationStatus.ok();
                    } else {
                        try {
                            Integer intValue = Integer.valueOf((String) value);
                            if (intValue > 0) {
                                return ValidationStatus.ok();
                            }
                        } catch (NumberFormatException e) {
                            // PASS
                        }
                    }
                    return ValidationStatus
                            .error("Please enter a positive integer or choose one of the options below.");
                }

            }).setConverter(new Converter(String.class, Integer.class) {

                @Override
                public Object convert(Object fromObject) {
                    if (REAL.equalsIgnoreCase((String) fromObject)) {
                        return 1;
                    } else if (COMPLEX.equalsIgnoreCase((String) fromObject)) {
                        return 2;
                    } else {
                        return Integer.valueOf((String) fromObject);
                    }
                }

            }), null);
    ControlDecorationSupport.create(binding, SWT.TOP | SWT.LEFT);

    button = new Button(parent, SWT.None);
    button.setLayoutData(GridDataFactory.fillDefaults().create());
    button.setImage(resources.get("icons/start.gif"));
    button.setToolTipText("Start Acquire");
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(final SelectionEvent e) {
            if (state.isRunning) {
                stopAcquire();
            } else {
                startAcquire();
            }
        }
    });
    ctx.bindValue(WidgetProperties.enabled().observe(button),
            new AggregateValidationStatus(ctx, AggregateValidationStatus.MAX_SEVERITY),
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
            new UpdateValueStrategy().setConverter(new Converter(IStatus.class, Boolean.class) {

                @Override
                public Object convert(Object fromObject) {
                    return ((IStatus) fromObject).getSeverity() != IStatus.ERROR;
                }
            }));
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private Composite createAnalogIn(Composite parent) {
    Composite analogIn = new Composite(parent, SWT.SHADOW_NONE);
    analogIn.setLayout(new GridLayout(2, false));

    Label numAnalogLabel = new Label(analogIn, SWT.None);
    numAnalogLabel.setText("Number of Analog input ports: ");

    Spinner numAnalogSpinner = new Spinner(analogIn, SWT.BORDER);
    numAnalogSpinner.setMinimum(1);/*  w  w  w.jav  a 2s  . c  o m*/
    GC gc = new GC(numAnalogSpinner);
    try {
        Point size = gc.textExtent("XXX");
        numAnalogSpinner.setLayoutData(GridDataFactory.fillDefaults().hint(size.x, SWT.DEFAULT).create());
    } finally {
        gc.dispose();
    }
    UpdateValueStrategy uvs = booleanConverter();
    ctx.bindValue(WidgetProperties.selection().observe(numAnalogSpinner), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__NUMBER_OF_ANALOG_INPUTS));
    ctx.bindValue(WidgetProperties.enabled().observe(numAnalogSpinner),
            EMFObservables.observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_INPUT),
            uvs, uvs);
    return analogIn;
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private Composite createDigitalIn(Composite parent) {
    Composite digitalIn = new Composite(parent, SWT.SHADOW_NONE);
    digitalIn.setLayout(new GridLayout(2, false));

    Label digitalInputTypeLabel = new Label(digitalIn, SWT.None);
    digitalInputTypeLabel.setText("Digital Input Type: ");

    ComboViewer digitalInputCombo = new ComboViewer(digitalIn, SWT.READ_ONLY);
    digitalInputCombo.setContentProvider(new ArrayContentProvider());
    digitalInputCombo.setLabelProvider(definitionComboViewerLabelProvider);
    digitalInputCombo.setInput(propertyTypes);
    ctx.bindValue(ViewersObservables.observeSingleSelection(digitalInputCombo), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__DIGITAL_INPUT_TYPE));

    ctx.bindValue(WidgetProperties.enabled().observe(digitalInputCombo.getCombo()), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_INPUT));
    return digitalIn;
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private void createOutputControl(Group parent) {
    Composite outputContainer = new Composite(parent, SWT.None);
    outputContainer.setLayout(new GridLayout(1, false));
    outputContainer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    Button analogOutputButton = new Button(outputContainer, SWT.RADIO);
    analogOutputButton.setText("Analog Output");
    analogOutputButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
    UpdateValueStrategy uvs = booleanConverter();
    ctx.bindValue(WidgetProperties.enabled().observe(analogOutputButton),
            EMFObservables.observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_INPUT),
            uvs, uvs);//from w w  w  .java2  s  .  c  om
    ctx.bindValue(WidgetProperties.selection().observe(analogOutputButton), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT), uvs, uvs);

    Button digitalOutputButton = new Button(outputContainer, SWT.RADIO);
    digitalOutputButton.setText("Digital Output (default)");
    digitalOutputButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
    createDigitalOut(outputContainer);
    ctx.bindValue(WidgetProperties.selection().observe(digitalOutputButton), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT));
}

From source file:gov.redhawk.ide.codegen.frontend.ui.wizard.FrontEndTunerOptionsWizardPage.java

License:Open Source License

private Composite createDigitalOut(Composite parent) {
    Composite digitalOut = new Composite(parent, SWT.SHADOW_NONE);
    digitalOut.setLayout(new GridLayout(2, false));
    digitalOut.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).indent(30, 0)
            .align(SWT.CENTER, SWT.CENTER).create());

    Label digitalOutputTypeLabel = new Label(digitalOut, SWT.None);
    digitalOutputTypeLabel.setText("Digital Output Type: ");

    ComboViewer digitalOutputCombo = new ComboViewer(digitalOut, SWT.READ_ONLY);
    digitalOutputCombo.setContentProvider(new ArrayContentProvider());
    digitalOutputCombo.setLabelProvider(definitionComboViewerLabelProvider);
    digitalOutputCombo.setInput(propertyTypes);
    ctx.bindValue(ViewersObservables.observeSingleSelection(digitalOutputCombo), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__DIGITAL_OUTPUT_TYPE));
    ctx.bindValue(WidgetProperties.enabled().observe(digitalOutputCombo.getCombo()), EMFObservables
            .observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT));

    Button multiOutCheck = new Button(digitalOut, SWT.CHECK);
    multiOutCheck.setText("Multi-out");
    ctx.bindValue(WidgetProperties.selection().observe(multiOutCheck),
            EMFObservables.observeValue(this.feiDevice, FrontendPackage.Literals.FEI_DEVICE__MULTI_OUT));
    ctx.bindValue(WidgetProperties.enabled().observe(multiOutCheck), EMFObservables.observeValue(this.feiDevice,
            FrontendPackage.Literals.FEI_DEVICE__HAS_DIGITAL_OUTPUT));
    return digitalOut;
}