Example usage for org.eclipse.jface.databinding.preference PreferencePageSupport create

List of usage examples for org.eclipse.jface.databinding.preference PreferencePageSupport create

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.preference PreferencePageSupport create.

Prototype

public static PreferencePageSupport create(PreferencePage preferencePage, DataBindingContext dbc) 

Source Link

Document

Connect the validation result from the given data binding context to the given preference page.

Usage

From source file:ccw.preferences.HoverPreferencePage.java

License:Open Source License

protected DataBindingContext initDataBindings() {

    final DataBindingContext context = new DataBindingContext();

    // Page Support
    PreferencePageSupport.create(this, context);

    // ///////////////////////////
    // Label/Content providers \\
    // ///////////////////////////

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    IObservableMap[] columnsObservables = Properties.observeEach(contentProvider.getKnownElements(),
            HoverViewModel.hoverDisplayDomain);

    ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(columnsObservables);

    fHoverTableViewer.setLabelProvider(labelProvider);
    fHoverTableViewer.setContentProvider(contentProvider);
    fHoverTableViewer.setInput(fViewModel.hoverObservableList);

    //////////////////////////
    // Selected hover logic \\
    //////////////////////////

    final IObservableValue selectedHover = ViewersObservables.observeSingleSelection(fHoverTableViewer);

    final IObservableValue isHoverSelected = new ComputedValue(Boolean.TYPE) {
        @Override//from www.j ava2  s  .c  o  m
        protected Object calculate() {
            return Boolean.valueOf(selectedHover.getValue() != null);
        }
    };

    context.bindValue(WidgetProperties.enabled().observe(fGrpSummary), isHoverSelected);
    context.bindValue(WidgetProperties.enabled().observe(fSummaryHoverModifierStringText), isHoverSelected);

    final IObservableValue stateMaskOfSelected = HoverViewModel.hoverStateMask.observeDetail(selectedHover);
    final IObservableValue modifierStringOfSelected = HoverViewModel.hoverModifierString
            .observeDetail(selectedHover);

    final UpdateValueStrategy modifierStringStrategyConvert = new UpdateValueStrategy(
            UpdateValueStrategy.POLICY_CONVERT);
    modifierStringStrategyConvert.setConverter(new HoverViewModel.StateMaskToModifierConverter());

    final Binding stateMaskToModifierBinding = context.bindValue(modifierStringOfSelected, stateMaskOfSelected,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), modifierStringStrategyConvert);

    if (!fViewModel.hoverObservableList.isEmpty()) {
        selectedHover.setValue(fViewModel.hoverObservableList.get(0));
    }

    //////////////////////
    // Validation logic \\
    //////////////////////

    MultiValidator validator = new MultiValidator() {

        @Override
        protected IStatus validate() {
            IStatus status = ValidationStatus.ok();

            if (isHoverSelected.getValue() == Boolean.TRUE) {
                status = fViewModel.stateMaskValidator.validate(stateMaskOfSelected.getValue());
            }

            if (status.isOK()) {
                Iterator<HoverDescriptor> it = fViewModel.checkedSet.iterator();
                while (it.hasNext()) {
                    int stateMask = it.next().getStateMask();
                    if (!fViewModel.isStateMaskUnique(stateMask)) {
                        status = fViewModel.stateMaskError(stateMask);
                    }
                }
            }
            return status;
        }
    };

    context.addValidationStatusProvider(validator);

    //////////////////////////
    // Checked hovers logic \\
    //////////////////////////

    // AR - because of some ordering issue problem, I am disabling the automatic
    // update from model to target of the checked hovers and...
    final UpdateSetStrategy checkedModelToTargetStrategy = new UpdateSetStrategy(
            UpdateValueStrategy.POLICY_ON_REQUEST);

    // AR - ... add an explicit binding that will be needed...
    final Binding checkedBindSet = context.bindSet(
            ViewersObservables.observeCheckedElements(fHoverTableViewer, HoverDescriptor.class),
            fViewModel.checkedSet, null, checkedModelToTargetStrategy);

    // AR - ...to manually trigger the update when new elements are added to the provider...
    IObservableSet realizedElements = contentProvider.getRealizedElements();
    realizedElements.addChangeListener(new IChangeListener() {
        @Override
        public void handleChange(ChangeEvent event) {
            checkedBindSet.updateModelToTarget();
        }
    });

    /////////////////
    // UI Bindings \\
    /////////////////

    EditingSupport modifierEditorSupport = ObservableValueEditingSupport.create(fHoverTableViewer, context,
            fHoverModifierStringTextCellEditor,
            CellEditorProperties.control().value(WidgetProperties.text(SWT.Modify)),
            HoverViewModel.hoverModifierString);

    fModifierTableViewerColumn.setEditingSupport(modifierEditorSupport);

    final UpdateValueStrategy statusMaskToModifierStrategy = new UpdateValueStrategy();
    statusMaskToModifierStrategy.setConverter(new HoverViewModel.StateMaskToModifierConverter());

    final UpdateValueStrategy modifierToStatusMaskStrategy = new UpdateValueStrategy();
    modifierToStatusMaskStrategy.setConverter(new HoverViewModel.ModifierToStateMaskConverter());

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverNameLabel),
            HoverViewModel.hoverLabel.observeDetail(selectedHover));

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverDescriptionLabel),
            HoverViewModel.hoverDescription.observeDetail(selectedHover));

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverModifierStringText),
            HoverViewModel.hoverStateMask.observeDetail(selectedHover), modifierToStatusMaskStrategy,
            statusMaskToModifierStrategy);

    KeyListener stateMaskKeyListener = new KeyListener() {
        public void keyPressed(KeyEvent e) {

            boolean isPressedKeyModifier = e.keyCode > 0 && e.character == 0
                    && (e.keyCode & SWT.MODIFIER_MASK) != 0;
            boolean isStateKeyModifier = e.stateMask > 0 && (e.stateMask & SWT.MODIFIER_MASK) != 0;

            int mask = SWT.NONE;
            if (isPressedKeyModifier) {
                mask = e.keyCode;

                if (isStateKeyModifier) {
                    mask |= e.stateMask;
                }

                stateMaskOfSelected.setValue(mask);
                stateMaskToModifierBinding.updateModelToTarget();
            }
        }

        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.BS || e.keyCode == SWT.DEL) {
                stateMaskOfSelected.setValue(SWT.NONE);
                stateMaskToModifierBinding.updateModelToTarget();
            }
        }
    };

    fHoverModifierStringTextCellEditor.getControl().addKeyListener(stateMaskKeyListener);
    fSummaryHoverModifierStringText.addKeyListener(stateMaskKeyListener);

    return context;
}

From source file:com.google.cloud.tools.eclipse.appengine.deploy.ui.DeployPropertyPage.java

License:Apache License

@Override
protected Control createContents(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    IProject project = AdapterUtil.adapt(getElement(), IProject.class);

    try {/*  w  ww. ja va 2  s  . co  m*/
        facetedProject = ProjectFacetsManager.create(project);
    } catch (CoreException ex) {
        logger.log(Level.WARNING, ex.getMessage());
        return container;
    }

    content = getPreferencesPanel(project, facetedProject, container);
    if (content == null) {
        return container;
    }
    isStandardPanel = content instanceof StandardDeployPreferencesPanel;

    GridDataFactory.fillDefaults().grab(true, false).applyTo(content);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(container);
    GridLayoutFactory.fillDefaults().generateLayout(container);

    PreferencePageSupport.create(this, content.getDataBindingContext());
    return content;
}

From source file:org.eclipse.jubula.client.autagent.preferences.ui.EmbeddedAutAgentPreferencePage.java

License:Open Source License

@Override
protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);
    GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);

    m_dbc = new DataBindingContext();

    UIComponentHelper.createLabel(composite, I18n.getString("DatabaseConnection.HostBased.Port"), SWT.NONE); //$NON-NLS-1$
    Text portText = new Text(composite, SWT.BORDER);
    GridDataFactory.fillDefaults().grab(true, false).applyTo(portText);
    m_portNumber = new WritableValue(
            getPreferenceStore().getInt(PreferenceInitializer.PREF_EMBEDDED_AGENT_PORT), int.class);

    UpdateValueStrategy portTargetToModelUpdateStrategy = new UpdateValueStrategy();
    portTargetToModelUpdateStrategy.setConverter(new SimpleStringToIntegerConverter()).setAfterGetValidator(
            new StringToPortValidator(I18n.getString("DatabaseConnection.HostBased.Port"))); //$NON-NLS-1$
    m_dbc.bindValue(SWTObservables.observeText(portText, SWT.Modify), m_portNumber,
            portTargetToModelUpdateStrategy,
            new UpdateValueStrategy().setConverter(new SimpleIntegerToStringConverter()));

    PreferencePageSupport.create(this, m_dbc);

    // context sensitive help
    PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, ContextHelpIds.PREFPAGE_EMBEDDED_AGENT);

    return composite;
}

From source file:org.switchyard.tools.ui.editor.property.AbstractPropertyPage.java

License:Open Source License

@Override
protected Control createContents(final Composite parent) {
    if (_toolkit == null) {
        final FormColors colors = new FormColors(Display.getCurrent());
        colors.setBackground(null);//from  w  w  w.  j a v a2  s.  c o m
        colors.setForeground(null);
        _toolkit = new FormToolkit(colors);
    }

    _observablesManager.runAndCollect(new Runnable() {
        @Override
        public void run() {
            _composite = createComposite(parent, SWT.NONE);
        }
    });

    _composite.refresh();
    _composite.validate();
    setErrorMessage(null);

    initializeTransaction();

    _support = PreferencePageSupport.create(this, _context);

    return _composite;
}