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

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

Introduction

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

Prototype

@SuppressWarnings("unchecked")
@Deprecated
public static ISWTObservableValue observeDelayedValue(int delay, ISWTObservableValue observable) 

Source Link

Document

Returns an observable which delays notification of value change events from observable until delay milliseconds have elapsed since the last change event, or until a FocusOut event is received from the underlying widget (whichever happens first).

Usage

From source file:com.schmeedy.pdt.joomla.manifest.ui.editor.OverviewPage.java

protected DataBindingContext initDataBindings() {
    final DataBindingContext bindingContext = new DataBindingContext();
    ////from w  ww  .  j a  v a  2  s .  co m
    final IObservableValue nameTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(nameText, SWT.Modify));
    final IObservableValue currentInputNameObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__NAME);
    bindingContext.bindValue(nameTextObserveTextObserveWidget, currentInputNameObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue versionTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(versionText, SWT.Modify));
    final IObservableValue currentInputVersionObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__VERSION);
    bindingContext.bindValue(versionTextObserveTextObserveWidget, currentInputVersionObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue descriptionTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(descriptionText, SWT.Modify));
    final IObservableValue currentInputDescriptionObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__DESCRIPTION);
    bindingContext.bindValue(descriptionTextObserveTextObserveWidget, currentInputDescriptionObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue authorNameTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(authorNameText, SWT.Modify));
    final IObservableValue currentInputAuthorObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__AUTHOR);
    bindingContext.bindValue(authorNameTextObserveTextObserveWidget, currentInputAuthorObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue authorEmailTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(authorEmailText, SWT.Modify));
    final IObservableValue currentInputAuthorEmailObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__AUTHOR_EMAIL);
    bindingContext.bindValue(authorEmailTextObserveTextObserveWidget, currentInputAuthorEmailObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue authorUrlTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(authorUrlText, SWT.Modify));
    final IObservableValue currentInputAuthorUrlObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__AUTHOR_URL);
    bindingContext.bindValue(authorUrlTextObserveTextObserveWidget, currentInputAuthorUrlObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue copyrightTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(copyrightText, SWT.Modify));
    final IObservableValue currentInputCopyrightObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__COPYRIGHT);
    bindingContext.bindValue(copyrightTextObserveTextObserveWidget, currentInputCopyrightObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    final IObservableValue licenseTextObserveTextObserveWidget = SWTObservables.observeDelayedValue(300,
            SWTObservables.observeText(licenseText, SWT.Modify));
    final IObservableValue currentInputLicenseObserveValue = EMFEditObservables.observeValue(editingDomain,
            currentInput, Literals.JOOMLA_EXTENSION_MANIFEST__LICENSE);
    bindingContext.bindValue(licenseTextObserveTextObserveWidget, currentInputLicenseObserveValue, null,
            new EMFUpdateValueStrategy());
    //
    return bindingContext;
}

From source file:com.xored.af.ui.forms.parts.CheckboxFormPart.java

License:Open Source License

@Override
protected IObservableValue observeControl() {
    return SWTObservables.observeDelayedValue(400, SWTObservables.observeSelection(control));
}

From source file:com.xored.af.ui.forms.parts.TextFormPart.java

License:Open Source License

@Override
protected IObservableValue observeControl() {
    return SWTObservables.observeDelayedValue(400, SWTObservables.observeText(text, SWT.Modify));
}

From source file:org.bonitasoft.studio.actors.ui.wizard.page.GroupsWizardPage.java

License:Open Source License

private void refreshBinding(final org.bonitasoft.studio.actors.model.organization.Group selectedGroup) {
    if (context != null) {
        context.dispose();/*from   w w  w.j ava2  s  . co  m*/
    }
    if (pageSupport != null) {
        pageSupport.dispose();
    }
    context = new EMFDataBindingContext();

    groupMemberShips.clear();
    if (selectedGroup != null) {
        setControlEnabled(getInfoGroup(), true);

        for (Membership m : membershipList) {
            if (selectedGroup.getName() != null && selectedGroup.getName().equals(m.getGroupName())
                    && ((selectedGroup.getParentPath() != null
                            && selectedGroup.getParentPath().equals(m.getGroupParentPath())
                            || (selectedGroup.getParentPath() == null && m.getGroupParentPath() == null)))) {
                groupMemberShips.add(m);
            }
        }

        IObservableValue groupNameValue = EMFObservables.observeValue(selectedGroup,
                OrganizationPackage.Literals.GROUP__NAME);
        groupNameValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                handleGroupNameChange(event);
            }
        });

        IObservableValue groupParentPathValue = EMFObservables.observeValue(selectedGroup,
                OrganizationPackage.Literals.GROUP__PARENT_PATH);
        groupParentPathValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                handleGroupParentPathChange(event);
            }
        });

        UpdateValueStrategy strategy = new UpdateValueStrategy();
        groupNameValidator.setValidator(new IValidator() {

            @Override
            public IStatus validate(Object value) {
                if (value.toString().isEmpty()) {
                    return ValidationStatus.error(Messages.nameIsEmpty);
                }
                if (value.toString().contains("/")) {
                    return ValidationStatus.error(Messages.illegalCharacter);
                }
                for (org.bonitasoft.studio.actors.model.organization.Group g : groupList) {
                    if (!g.equals(selectedGroup)) {
                        if (g.getName().equals(value) && ((g.getParentPath() != null
                                && g.getParentPath().equals(selectedGroup.getParentPath()))
                                || (g.getParentPath() == null && selectedGroup.getParentPath() == null))) {
                            return ValidationStatus.error(Messages.groupNameAlreadyExistsForLevel);
                        }
                    }
                }
                return Status.OK_STATUS;
            }
        });
        strategy.setAfterGetValidator(groupNameValidator);
        IObservableValue descriptionValue = EMFObservables.observeValue(selectedGroup,
                OrganizationPackage.Literals.GROUP__DESCRIPTION);
        IObservableValue displayNameValue = EMFObservables.observeValue(selectedGroup,
                OrganizationPackage.Literals.GROUP__DISPLAY_NAME);

        context.bindValue(SWTObservables.observeText(groupNameText, SWT.Modify), groupNameValue, strategy,
                new UpdateValueStrategy());
        context.bindValue(SWTObservables.observeDelayedValue(500,
                SWTObservables.observeText(groupDescriptionText, SWT.Modify)), descriptionValue);
        UpdateValueStrategy startegy = new UpdateValueStrategy();
        startegy.setConverter(new Converter(String.class, String.class) {

            @Override
            public Object convert(Object from) {
                Display.getDefault().asyncExec(new Runnable() {

                    @Override
                    public void run() {
                        getViewer().refresh(selectedGroup);
                    }
                });

                return from;
            }

        });
        context.bindValue(SWTObservables.observeText(displayNamedText, SWT.Modify), displayNameValue, startegy,
                null);

        pathText.setText(GroupContentProvider.getGroupPath(selectedGroup));
        addSubGroupButton.setEnabled(true);
    } else {
        displayNamedText.setText("");
        groupDescriptionText.setText("");
        groupNameText.setText("");
        pathText.setText("");
        addSubGroupButton.setEnabled(false);
        setControlEnabled(getInfoGroup(), false);
    }
    pageSupport = WizardPageSupportWithoutMessages.create(this, context);
}

From source file:org.bonitasoft.studio.actors.ui.wizard.page.RolesWizardPage.java

License:Open Source License

private void refreshBinding(final Role selectedRole) {
    if (context != null) {
        context.dispose();/*from   w  ww  .j  ava  2  s.com*/
    }
    if (pageSupport != null) {
        pageSupport.dispose();
    }
    context = new EMFDataBindingContext();

    roleMemberShips.clear();
    if (selectedRole != null) {
        setControlEnabled(getInfoGroup(), true);

        for (Membership m : membershipList) {
            if (selectedRole.getName() != null && selectedRole.getName().equals(m.getRoleName())) {
                roleMemberShips.add(m);
            }
        }

        UpdateValueStrategy strategy = new UpdateValueStrategy();
        roleNameValidator.setValidator(new IValidator() {

            @Override
            public IStatus validate(Object value) {
                if (value.toString().isEmpty()) {
                    return ValidationStatus.error(Messages.nameIsEmpty);
                }

                for (Role r : roleList) {
                    if (!r.equals(selectedRole)) {
                        if (r.getName().equals(value)) {
                            return ValidationStatus.error(Messages.roleNameAlreadyExists);
                        }
                    }
                }
                return Status.OK_STATUS;
            }
        });
        strategy.setAfterGetValidator(roleNameValidator);
        IObservableValue value = EMFObservables.observeValue(selectedRole,
                OrganizationPackage.Literals.ROLE__NAME);
        value.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                Role role = (Role) ((EObjectObservableValue) event.getObservable()).getObserved();
                getViewer().refresh(role);
                for (Membership m : roleMemberShips) {
                    m.setRoleName(role.getName());
                }
            }
        });

        IObservableValue descriptionValue = EMFObservables.observeValue(selectedRole,
                OrganizationPackage.Literals.ROLE__DESCRIPTION);
        descriptionValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                Role role = (Role) ((EObjectObservableValue) event.getObservable()).getObserved();
                getViewer().refresh(role);
            }
        });

        IObservableValue displayNameValue = EMFObservables.observeValue(selectedRole,
                OrganizationPackage.Literals.ROLE__DISPLAY_NAME);
        displayNameValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                Role role = (Role) ((EObjectObservableValue) event.getObservable()).getObserved();
                getViewer().refresh(role);
            }
        });

        context.bindValue(
                SWTObservables.observeDelayedValue(500, SWTObservables.observeText(roleNameText, SWT.Modify)),
                value, strategy, new UpdateValueStrategy());
        context.bindValue(SWTObservables.observeDelayedValue(500,
                SWTObservables.observeText(roleDescriptionText, SWT.Modify)), descriptionValue);
        context.bindValue(SWTObservables.observeText(displayNamedText, SWT.Modify), displayNameValue);

    } else {
        displayNamedText.setText("");
        roleDescriptionText.setText("");
        roleNameText.setText("");
        setControlEnabled(getInfoGroup(), false);
    }
    pageSupport = WizardPageSupportWithoutMessages.create(this, context);
}

From source file:org.bonitasoft.studio.actors.ui.wizard.page.UsersWizardPage.java

License:Open Source License

private void refreshBinding(final User selectedUser) {
    if (context != null) {
        context.dispose();/*from  w ww  .j av  a2 s  . com*/
    }
    if (pageSupport != null) {
        pageSupport.dispose();
    }
    context = new EMFDataBindingContext();

    userMemberShips.clear();
    if (selectedUser != null) {
        setControlEnabled(getInfoGroup(), true);

        if (userList != null) {
            managerNameCombo.removeAll();
            managerNameCombo.add("");
            for (User u : userList) {
                if (!u.equals(selectedUser)) {
                    managerNameCombo.add(u.getUserName());
                }
            }
        }

        UpdateValueStrategy strategy = new UpdateValueStrategy();

        strategy.setConverter(new Converter(String.class, String.class) {

            @Override
            public Object convert(Object fromObject) {
                if (userList != null) {
                    for (User u : userList) {
                        if (selectedUser != null && u.getManager() != null
                                && u.getManager().equals(selectedUser.getUserName())) {
                            u.setManager((String) fromObject);
                        }
                    }
                }
                return fromObject;
            }

        });
        userNameValidator.setValidator(new IValidator() {

            @Override
            public IStatus validate(Object value) {
                if (value.toString().isEmpty()) {
                    return ValidationStatus.error(Messages.nameIsEmpty);
                }
                for (User u : userList) {
                    if (!u.equals(selectedUser)) {
                        if (u.getUserName().equals(value)) {
                            return ValidationStatus.error(Messages.userNameAlreadyExists);
                        }
                    }
                }
                return Status.OK_STATUS;
            }
        });
        strategy.setAfterGetValidator(userNameValidator);
        IObservableValue value = EMFObservables.observeValue(selectedUser,
                OrganizationPackage.Literals.USER__USER_NAME);
        value.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                User user = (User) ((EObjectObservableValue) event.getObservable()).getObserved();
                String oldUserValue = event.diff.getOldValue().toString();
                for (Membership m : userMemberShips) {
                    m.setUserName(user.getUserName());
                }
                //               managerNameCombo.removeAll() ;
                //               managerNameCombo.add("") ;

                updateDelegueeMembership(event.diff.getOldValue().toString(),
                        event.diff.getNewValue().toString());
                getViewer().refresh(user);

            }
        });

        context.bindValue(
                SWTObservables.observeDelayedValue(500, SWTObservables.observeText(usernameText, SWT.Modify)),
                value, strategy, null);

        UpdateValueStrategy mandatoryStrategy = new UpdateValueStrategy();
        passwordValidator.setValidator(new EmptyInputValidator(Messages.password));
        mandatoryStrategy.setAfterGetValidator(passwordValidator);

        IObservableValue observeValue = EMFObservables.observeValue(selectedUser.getPassword(),
                OrganizationPackage.Literals.PASSWORD_TYPE__VALUE);
        context.bindValue(SWTObservables.observeText(passwordText, SWT.Modify), observeValue, mandatoryStrategy,
                null);
        observeValue.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                IObservableValue value = event.getObservableValue();
                PasswordType password = (PasswordType) ((EObjectObservableValue) value).getObserved();
                password.setEncrypted(false);
            }
        });

        context.bindValue(SWTObservables.observeSelection(managerNameCombo),
                EMFObservables.observeValue(selectedUser, OrganizationPackage.Literals.USER__MANAGER));

        for (Entry<EAttribute, Control> entry : generalWidgetMap.entrySet()) {
            EAttribute attributre = entry.getKey();
            Control control = entry.getValue();
            if (!control.isDisposed()) {
                IObservableValue observableValue = EMFObservables.observeValue(selectedUser, attributre);
                UpdateValueStrategy mandatoryStartegy = null;
                if (attributre.equals(OrganizationPackage.Literals.USER__FIRST_NAME)
                        || attributre.equals(OrganizationPackage.Literals.USER__LAST_NAME)) {
                    observableValue.addValueChangeListener(new IValueChangeListener() {

                        @Override
                        public void handleValueChange(ValueChangeEvent event) {
                            getViewer().refresh(((EObjectObservableValue) event.getObservable()).getObserved());
                        }
                    });
                    mandatoryStartegy = new UpdateValueStrategy();
                    if (attributre.equals(OrganizationPackage.Literals.USER__FIRST_NAME)) {
                        mandatoryStartegy.setAfterGetValidator(new EmptyInputValidator(Messages.firstName));
                    } else if (attributre.equals(OrganizationPackage.Literals.USER__LAST_NAME)) {
                        mandatoryStartegy.setAfterGetValidator(new EmptyInputValidator(Messages.lastName));
                    }

                }
                if (mandatoryStartegy != null) {
                    ControlDecorationSupport
                            .create(context.bindValue(SWTObservables.observeText(control, SWT.Modify),
                                    observableValue, mandatoryStartegy, null), SWT.LEFT);
                } else {
                    context.bindValue(SWTObservables.observeText(control, SWT.Modify), observableValue);
                }
            }
        }

        if (selectedUser.getPersonalData() == null) {
            selectedUser.setPersonalData(OrganizationFactory.eINSTANCE.createContactData());
        }

        for (Entry<EAttribute, Control> entry : personalWidgetMap.entrySet()) {
            EAttribute attributre = entry.getKey();
            Control control = entry.getValue();
            if (!control.isDisposed()) {
                IObservableValue observableValue = EMFObservables.observeValue(selectedUser.getPersonalData(),
                        attributre);
                context.bindValue(SWTObservables.observeText(control, SWT.Modify), observableValue);
            }
        }

        if (selectedUser.getProfessionalData() == null) {
            selectedUser.setProfessionalData(OrganizationFactory.eINSTANCE.createContactData());
        }

        for (Entry<EAttribute, Control> entry : professionalWidgetMap.entrySet()) {
            EAttribute attributre = entry.getKey();
            Control control = entry.getValue();
            if (!control.isDisposed()) {
                context.bindValue(SWTObservables.observeText(control, SWT.Modify),
                        EMFObservables.observeValue(selectedUser.getProfessionalData(), attributre));
            }
        }

        for (Entry<Metadata, Control> entry : metadataWidgetMap.entrySet()) {
            Metadata metadata = entry.getKey();
            Control control = entry.getValue();
            if (!control.isDisposed()) {
                context.bindValue(SWTObservables.observeText(control, SWT.Modify),
                        EMFObservables.observeValue(metadata, OrganizationPackage.Literals.METADATA__VALUE));
            }
        }

        for (Entry<Membership, Map<EAttribute, Control>> entry : membershipWidgetMap.entrySet()) {
            final Membership membership = entry.getKey();
            final Map<EAttribute, Control> controls = entry.getValue();
            for (Entry<EAttribute, Control> e : controls.entrySet()) {
                final EAttribute attributre = e.getKey();
                final Control control = e.getValue();
                if (!control.isDisposed()) {
                    UpdateValueStrategy selectionStrategy = new UpdateValueStrategy();

                    selectionStrategy.setAfterConvertValidator(new IValidator() {

                        @Override
                        public IStatus validate(Object value) {
                            if (value == null || value.toString().isEmpty()) {
                                return ValidationStatus.error(Messages.emtpyMembershipValue);
                            }
                            return Status.OK_STATUS;
                        }
                    });
                    if (attributre.equals(OrganizationPackage.Literals.MEMBERSHIP__GROUP_NAME)) {
                        selectionStrategy.setConverter(new Converter(String.class, String.class) {

                            @Override
                            public Object convert(Object from) {
                                String path = (String) from;
                                if (!path.isEmpty()) {
                                    String parentPath = path.substring(0,
                                            path.lastIndexOf(GroupContentProvider.GROUP_SEPARATOR));
                                    String groupName = path.substring(
                                            path.lastIndexOf(GroupContentProvider.GROUP_SEPARATOR) + 1,
                                            path.length());
                                    if (parentPath.isEmpty()) {
                                        membership.setGroupParentPath(null);
                                    } else {
                                        membership.setGroupParentPath(parentPath);
                                    }
                                    return groupName;
                                } else {
                                    return "";
                                }

                            }
                        });

                    }
                    UpdateValueStrategy modelStrategy = null;
                    if (attributre.equals(OrganizationPackage.Literals.MEMBERSHIP__GROUP_NAME)) {
                        modelStrategy = new UpdateValueStrategy();
                        modelStrategy.setConverter(new Converter(String.class, String.class) {
                            @Override
                            public Object convert(Object from) {
                                if (membership.getGroupParentPath() != null
                                        && !membership.getGroupParentPath().isEmpty()) {
                                    String parentPath = membership.getGroupParentPath();
                                    if (!membership.getGroupParentPath()
                                            .endsWith(GroupContentProvider.GROUP_SEPARATOR)) {
                                        parentPath = parentPath + GroupContentProvider.GROUP_SEPARATOR;
                                    }
                                    String path = parentPath + from;
                                    return path;
                                } else if (from != null && !from.toString().isEmpty()) {
                                    return GroupContentProvider.GROUP_SEPARATOR + membership.getGroupName();
                                } else {
                                    return "";
                                }
                            }
                        });
                    }
                    ControlDecorationSupport.create(context.bindValue(SWTObservables.observeSelection(control),
                            EMFObservables.observeValue(membership, attributre), selectionStrategy,
                            modelStrategy), SWT.LEFT);
                }
            }

        }
        pageSupport = WizardPageSupportWithoutMessages.create(this, context);
    } else {
        setControlEnabled(getInfoGroup(), false);
    }

}

From source file:org.bonitasoft.studio.common.jface.OpenNameDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite res = new Composite(parent, SWT.FILL);
    res.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    res.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).margins(10, 10).spacing(0, 20).create());
    if (message != null) {
        Label messageLabel = new Label(res, SWT.WRAP);
        messageLabel.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).grab(true, true).create());
        messageLabel.setText(message);/*from w w  w. j  a v  a 2s.  c o  m*/

    }
    Label nameLabel = new Label(res, SWT.NONE);
    nameLabel.setText(Messages.name);
    final Text nameText = new Text(res, SWT.BORDER);
    nameText.setText(srcName);
    nameText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).indent(10, 0).create());
    if (observable != null) {
        binding = context.bindValue(
                SWTObservables.observeDelayedValue(400, SWTObservables.observeText(nameText, SWT.Modify)),
                observable, targetToModel, modelToTarget);
        ControlDecorationSupport.create(binding, SWT.LEFT);
    }
    nameText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            newName = nameText.getText();
            updateOkButton();
        }
    });
    return res;
}

From source file:org.bonitasoft.studio.common.properties.DescriptionPropertySectionContribution.java

License:Open Source License

public void createControl(Composite composite, TabbedPropertySheetWidgetFactory widgetFactory,
        ExtensibleGridPropertySection page) {

    composite.setLayout(new RowLayout());
    Text text = widgetFactory.createText(composite, element.getDocumentation(),
            SWT.BORDER | SWT.MULTI | SWT.WRAP);
    RowData rd = new RowData();
    rd.width = 300;//from ww w  .  j ava  2s  .c o m
    rd.height = 60;
    text.setLayoutData(rd);

    context = new EMFDataBindingContext();
    UpdateValueStrategy strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new InputLengthValidator(Messages.GeneralSection_Description, 254));
    //   context.bindValue(SWTObservables.observeDelayedValue(400, SWTObservables.observeText(text, SWT.Modify)), EMFEditObservables.observeValue(editingDomain, element, ProcessPackage.Literals.ELEMENT__DOCUMENTATION),strategy,null);
    ControlDecorationSupport.create(
            context.bindValue(
                    SWTObservables.observeDelayedValue(400, SWTObservables.observeText(text, SWT.Modify)),
                    EMFEditObservables.observeValue(editingDomain, element,
                            ProcessPackage.Literals.ELEMENT__DOCUMENTATION),
                    strategy, null),
            SWT.LEFT | SWT.TOP);

}

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

License:Open Source License

protected void bindExpression() {
    if (expressionBinding != null && externalDataBindingContext != null) {
        externalDataBindingContext.removeBinding(expressionBinding);
        expressionBinding.dispose();/*from www. java 2  s.c  om*/
    }
    if (internalDataBindingContext != null) {
        internalDataBindingContext.dispose();
    }
    internalDataBindingContext = new EMFDataBindingContext();

    IObservableValue nameObservable = null;
    if (editingDomain != null) {
        nameObservable = EMFEditProperties.value(editingDomain, ExpressionPackage.Literals.EXPRESSION__NAME)
                .observeDetail(ViewerProperties.singleSelection().observe(this));
    } else {
        nameObservable = EMFProperties.value(ExpressionPackage.Literals.EXPRESSION__NAME)
                .observeDetail(ViewerProperties.singleSelection().observe(this));
    }

    IObservableValue typeObservable = null;
    if (editingDomain != null) {
        typeObservable = EMFEditProperties.value(editingDomain, ExpressionPackage.Literals.EXPRESSION__TYPE)
                .observeDetail(ViewerProperties.singleSelection().observe(this));
    } else {
        typeObservable = EMFProperties.value(ExpressionPackage.Literals.EXPRESSION__TYPE)
                .observeDetail(ViewerProperties.singleSelection().observe(this));
    }

    UpdateValueStrategy targetToModelNameStrategy = new UpdateValueStrategy();
    if (mandatoryFieldName != null) {
        targetToModelNameStrategy.setBeforeSetValidator(new EmptyInputValidator(mandatoryFieldName));
    }
    targetToModelNameStrategy.setAfterConvertValidator(new IValidator() {

        @Override
        public IStatus validate(Object value) {
            IExpressionValidator validator = null;
            if (selectedExpression != null) {
                validator = validatorsForType.get(selectedExpression.getType());
            }
            if (validator == null) {
                validator = validatorsForType.get(ExpressionConstants.ALL_TYPES);
            }
            if (validator != null) {
                validator.setDomain(editingDomain);
                validator.setContext(context);
                if (selectedExpression != null) {
                    validator.setInputExpression(selectedExpression);
                }
                setMessage(null, IStatus.OK);
                final IStatus status = validator.validate(value);
                if (status.isOK()) {
                    setMessage(null, status.getSeverity());
                } else {
                    String message = status.getMessage();
                    if (status instanceof MultiStatus) {
                        StringBuilder sb = new StringBuilder();
                        for (IStatus statusChild : status.getChildren()) {
                            sb.append(statusChild.getMessage());
                            sb.append("\n");
                        }
                        if (sb.length() > 0) {
                            sb.delete(sb.length() - 1, sb.length());
                        }
                        message = sb.toString();
                    }
                    setMessage(message, status.getSeverity());
                }
                return status;
            } else {
                setMessage(null, IStatus.OK);
            }
            return ValidationStatus.ok();
        }
    });
    targetToModelNameStrategy.setConverter(getNameConverter());

    final ISWTObservableValue observeDelayedValue = SWTObservables.observeDelayedValue(500,
            SWTObservables.observeText(textControl, SWT.Modify));
    expressionBinding = internalDataBindingContext.bindValue(observeDelayedValue, nameObservable,
            targetToModelNameStrategy, null);

    expressionBinding.getValidationStatus().addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            IStatus status = (IStatus) event.diff.getNewValue();
            fireValidationStatusChanged(status.getSeverity());
        }
    });

    bindEditableText(typeObservable);
    nameObservable.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent arg0) {
            fireSelectionChanged(new SelectionChangedEvent(ExpressionViewer.this, getSelection()));
        }
    });
    if (externalDataBindingContext != null) {
        externalDataBindingContext.addBinding(expressionBinding);
    }
}

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

License:Open Source License

protected void createTextViewer() {
    viewer = createViewer(mc);/*from  w  w  w  .j  a v  a 2s  .  co m*/
    viewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    configureTextViewer();

    helpDecoration = new ControlDecoration(viewer.getControl(), SWT.TOP | SWT.RIGHT, this);
    helpDecoration.setImage(JFaceResources.getImage(Dialog.DLG_IMG_HELP));
    helpDecoration.setDescriptionText(Messages.patternViewerHelp);
    helpDecoration.setMarginWidth(2);
    helpDecoration.hide();

    hintDecoration = new ControlDecoration(viewer.getControl(), SWT.TOP | SWT.LEFT, this);
    hintDecoration.setImage(Pics.getImage(PicsConstants.hint));
    hintDecoration.setMarginWidth(2);
    hintDecoration.setShowHover(true);
    hintDecoration.setShowOnlyOnFocus(true);
    hintDecoration.hide();

    viewer.addTextListener(new ITextListener() {

        @Override
        public void textChanged(TextEvent event) {
            viewer.getTextWidget().notifyListeners(SWT.Modify, new Event());
        }
    });

    contentAssisProcessor = new ExpressionContentAssistProcessor(viewer.getDocument());
    final ContentAssistant assistant = new ContentAssistant();
    assistant.setContentAssistProcessor(contentAssisProcessor, IDocument.DEFAULT_CONTENT_TYPE);
    assistant.setShowEmptyList(true);
    assistant.enableAutoActivation(true);
    assistant.install(viewer);

    viewer.getTextWidget().addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {

            switch (e.keyCode) {
            case SWT.F1:
                assistant.showPossibleCompletions();
                break;
            default:
                //ignore everything else
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            if ((e.stateMask == SWT.CTRL || e.stateMask == SWT.COMMAND) && e.keyCode == SWT.SPACE) {
                assistant.showPossibleCompletions();
            }
        }
    });

    ISWTObservableValue observable = SWTObservables.observeDelayedValue(400,
            SWTObservables.observeText(getTextControl(), SWT.Modify));
    observable.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            if (!expressionMode()) {
                updateExpressionDependencies();
            }
        }
    });

    helpDecoration.show();
}