Java源码示例:org.eclipse.jface.viewers.ICheckable

示例1
public ConstraintEditionControl(Composite parent,
        AbstractBdmFormPage formPage,
        DataBindingContext ctx) {
    this.formPage = formPage;
    this.fieldStyleStringProvider = new FieldStyleStringProvider();
    this.actualsFieldsObservable = EMFObservables.observeDetailList(Realm.getDefault(),
            formPage.observeBusinessObjectSelected(),
            BusinessDataModelPackage.Literals.BUSINESS_OBJECT__FIELDS);
    this.constraintsObservable = EMFObservables.observeDetailList(Realm.getDefault(),
            formPage.observeBusinessObjectSelected(),
            BusinessDataModelPackage.Literals.BUSINESS_OBJECT__UNIQUE_CONSTRAINTS);
    this.errorColor = new LocalResourceManager(JFaceResources.getResources(),
            parent).createColor(ColorConstants.ERROR_RGB);

    this.mainComposite = formPage.getToolkit().createComposite(parent);
    mainComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    mainComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    createConstraintDefinitionSection();
    createConstraintEditionComposite(ctx);
    enableButtons(ctx);

    ctx.bindSet(ViewerProperties.checkedElements(Field.class).observe((ICheckable) constraintEditionViewer),
            attributesSetObservable);
    selectedConstraintObservable.addValueChangeListener(e -> {
        attributesSetObservable.clear();
        if (e.diff.getNewValue() != null) {
            e.diff.getNewValue().getFieldNames().stream()
                    .map(this::findCorrespondingField)
                    .forEach(attributesSetObservable::add);
            constraintEditionViewer.refresh();
        }
    });
}