Example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider.

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:org.eclipse.emf.examples.library.databinding.stock.StockForm.java

License:Open Source License

@Override
public void doCreateForm(TabFolder folder, TabItem item, EditingDomain domain, DataBindingContext dbc,
        IObservableValue master) {//from  w  w w.j  a  v  a 2 s  . co m
    Composite comp = new Composite(folder, SWT.NONE);
    IValueProperty textProp = WidgetProperties.text();
    dbc.bindValue(textProp.observe(item),
            EMFEditObservables.observeDetailValue(Realm.getDefault(), domain, master,
                    EXTLibraryPackage.Literals.LIBRARY__STOCK),
            new UpdateValueStrategy(), new UpdateValueStrategy().setConverter(new LengthConverter()));

    TableColumnLayout layout = new TableColumnLayout();
    comp.setLayout(layout);

    itemViewer = new TableViewer(comp,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI);
    IFocusService focusService = (IFocusService) getSite().getService(IFocusService.class);
    focusService.addFocusTracker(itemViewer.getControl(), STOCK_TABLE);
    itemViewer.getTable().setHeaderVisible(true);
    itemViewer.getTable().setLinesVisible(true);
    ObservableListContentProvider cp = new ObservableListContentProvider();
    itemViewer.setContentProvider(cp);
    itemViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            ISourceProviderService service = (ISourceProviderService) getSite()
                    .getService(ISourceProviderService.class);
            SourceProvider pv = (SourceProvider) service.getSourceProvider(ISources.SELECTED_STOCK_ITEM_NAME);
            pv.setItemSelection(event.getSelection());
        }

    });

    ConditionalTemplate tplBookTitle = new ConditionalTemplate("${0}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Book && ((Book) element).getTitle() != null;
        }

    };
    ConditionalTemplate tplAudiovisualTitle = new ConditionalTemplate("${1}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof AudioVisualItem && ((AudioVisualItem) element).getTitle() != null;
        }

    };
    ConditionalTemplate tplPeriodicalTitle = new ConditionalTemplate("${2}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Periodical && ((Periodical) element).getTitle() != null;
        }

    };

    ConditionalTemplate tplPublicationDate = new ConditionalTemplate("${0,date,medium}") {

        @Override
        public boolean isTemplate(EObject element) {
            return ((Item) element).getPublicationDate() != null;
        }

    };

    ConditionalTemplate tplNullValue = new ConditionalTemplate("-") {

        @Override
        public boolean isTemplate(EObject element) {
            return true;
        }

    };

    IObservableMap featBookTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.BOOK__TITLE);
    IObservableMap featAudiovisualTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.AUDIO_VISUAL_ITEM__TITLE);
    IObservableMap featPeriodicalTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.PERIODICAL__TITLE);
    IObservableMap featItemPublicationDate = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.ITEM__PUBLICATION_DATE);

    TableViewerColumn c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("AAAAA");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ObservableColumnLabelProvider(
            new IObservableMap[] { featBookTitle, featAudiovisualTitle, featPeriodicalTitle },
            Arrays.asList(tplBookTitle, tplAudiovisualTitle, tplPeriodicalTitle, tplNullValue)));

    c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("Type");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof Book) {
                return "Book";
            } else if (element instanceof BookOnTape) {
                return "Book On Tape";
            } else if (element instanceof VideoCassette) {
                return "Video";
            } else if (element instanceof Periodical) {
                return "Periodical";
            } else {
                return "";
            }
        }

    });

    c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("Publication Date");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ObservableColumnLabelProvider(new IObservableMap[] { featItemPublicationDate },
            Arrays.asList(tplPublicationDate, tplNullValue)));

    MenuManager mgr = new MenuManager();
    itemViewer.getControl().setMenu(mgr.createContextMenu(itemViewer.getControl()));
    getSite().registerContextMenu("org.eclipse.emf.examples.library.databinding.stock", mgr, itemViewer);

    item.setControl(comp);
    itemViewer.setInput(EMFEditObservables.observeDetailList(Realm.getDefault(), domain, master,
            EXTLibraryPackage.Literals.LIBRARY__STOCK));
}

From source file:org.eclipse.emf.examples.library.databinding.writer.WriterForm.java

License:Open Source License

@Override
public void doCreateForm(TabFolder folder, TabItem item, final EditingDomain domain, DataBindingContext dbc,
        IObservableValue master) {//from  www.ja va2  s  .  c o  m

    IValueProperty textProp = WidgetProperties.text();
    dbc.bindValue(textProp.observe(item),
            EMFEditObservables.observeDetailValue(Realm.getDefault(), domain, master,
                    EXTLibraryPackage.Literals.LIBRARY__WRITERS),
            new UpdateValueStrategy(), new UpdateValueStrategy().setConverter(new LengthConverter()));

    Composite comp = new Composite(folder, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    comp.setLayout(layout);

    writerViewer = new TableViewer(comp, SWT.FULL_SELECTION | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    writerViewer.getTable().setHeaderVisible(true);
    writerViewer.getTable().setLinesVisible(true);

    Color color = comp.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
    final Color bg = new Color(comp.getDisplay(),
            new RGB(color.getRed() - 50, color.getGreen() - 50, color.getBlue() - 50));

    writerViewer.getControl().addDisposeListener(new DisposeListener() {

        public void widgetDisposed(DisposeEvent e) {
            bg.dispose();
        }
    });

    TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(writerViewer,
            new FocusCellOwnerDrawHighlighter(writerViewer) {
                @Override
                protected Color getSelectedCellBackgroundColor(ViewerCell cell) {
                    return bg;
                }
            });
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(writerViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            boolean rv = false;

            if (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION) {
                rv = (((MouseEvent) event.sourceEvent).stateMask & SWT.MOD1) == SWT.MOD1;
            }

            return rv || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TableViewerEditor.create(writerViewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL
            //| ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
            | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    IFocusService focusService = (IFocusService) getSite().getService(IFocusService.class);
    focusService.addFocusTracker(writerViewer.getControl(), WRITER_TABLE);

    ObservableListContentProvider cp = new ObservableListContentProvider();
    writerViewer.setContentProvider(cp);

    ConditionalTemplate[] tpl = new ConditionalTemplate[3];
    tpl[0] = new ConditionalTemplate("${0}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Writer && ((Writer) element).getFirstName() != null;
        }

    };
    tpl[1] = new ConditionalTemplate("${0}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Writer && ((Writer) element).getLastName() != null;
        }

    };
    tpl[2] = new ConditionalTemplate("-") {

        @Override
        public boolean isTemplate(EObject element) {
            return true;
        }

    };

    EStructuralFeature[] features = new EStructuralFeature[2];
    features[0] = EXTLibraryPackage.Literals.PERSON__FIRST_NAME;
    features[1] = EXTLibraryPackage.Literals.PERSON__LAST_NAME;

    IObservableMap[] map = EMFEditObservables.observeMaps(domain, cp.getKnownElements(), features);

    TableViewerColumn c = new TableViewerColumn(writerViewer, SWT.NONE);
    c.getColumn().setText("Firstname");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(
            new ObservableColumnLabelProvider(new IObservableMap[] { map[0] }, Arrays.asList(tpl[0], tpl[2])));

    final TextCellEditor editor = new TextCellEditor(writerViewer.getTable());

    ObservableValueEditingSupport o = new ObservableValueEditingSupport(writerViewer, dbc) {

        @Override
        protected CellEditor getCellEditor(Object element) {
            return editor;
        }

        @Override
        protected IObservableValue doCreateElementObservable(Object element, ViewerCell cell) {
            return EMFEditObservables.observeValue(domain, (EObject) element,
                    EXTLibraryPackage.Literals.PERSON__FIRST_NAME);
        }

        @Override
        protected IObservableValue doCreateCellEditorObservable(CellEditor cellEditor) {
            return SWTObservables.observeText(cellEditor.getControl());
        }
    };
    c.setEditingSupport(o);

    c = new TableViewerColumn(writerViewer, SWT.NONE);
    c.getColumn().setText("Lastname");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(
            new ObservableColumnLabelProvider(new IObservableMap[] { map[1] }, Arrays.asList(tpl[1], tpl[2])));
    o = new ObservableValueEditingSupport(writerViewer, dbc) {

        @Override
        protected CellEditor getCellEditor(Object element) {
            return editor;
        }

        @Override
        protected IObservableValue doCreateElementObservable(Object element, ViewerCell cell) {
            return EMFEditObservables.observeValue(domain, (EObject) element,
                    EXTLibraryPackage.Literals.PERSON__LAST_NAME);
        }

        @Override
        protected IObservableValue doCreateCellEditorObservable(CellEditor cellEditor) {
            return SWTObservables.observeText(cellEditor.getControl());
        }
    };
    c.setEditingSupport(o);

    MenuManager mgr = new MenuManager();
    writerViewer.getControl().setMenu(mgr.createContextMenu(writerViewer.getControl()));
    getSite().registerContextMenu("org.eclipse.emf.examples.library.databinding.writer", mgr, writerViewer);

    writerViewer.setInput(EMFEditObservables.observeDetailList(Realm.getDefault(), domain, master,
            EXTLibraryPackage.Literals.LIBRARY__WRITERS));
    item.setControl(comp);

}

From source file:org.eclipse.emfforms.spi.view.control.multiattribute.MultiAttributeSWTRenderer.java

License:Open Source License

private void createContent(Composite composite, EAttribute attribute, IObservableList list) {
    tableViewer = new TableViewer(composite, SWT.MULTI | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    tableViewer.getTable().setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_multiattribute"); //$NON-NLS-1$
    tableViewer.getTable().setHeaderVisible(true);
    tableViewer.getTable().setLinesVisible(true);

    final ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            tableViewer) {//from  www  .j a  va 2  s .  c o m
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TableViewerEditor.create(tableViewer, null, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);
    ColumnViewerToolTipSupport.enableFor(tableViewer);

    final ObservableListContentProvider cp = new ObservableListContentProvider();

    final EMFFormsLabelProvider labelService = getEMFFormsLabelProvider();

    final TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
    column.getColumn().setResizable(false);
    column.getColumn().setMoveable(false);

    final EClass clazz = attribute.getEContainingClass();
    InternalEObject tempInstance = null;
    if (!clazz.isAbstract() && !clazz.isInterface()) {
        tempInstance = getInstanceOf(clazz);
    }

    final CellEditor cellEditor = createCellEditor(tempInstance, attribute, tableViewer.getTable());

    @SuppressWarnings("deprecation")
    final IObservableValue textObservableValue = org.eclipse.jface.databinding.swt.SWTObservables
            .observeText(column.getColumn());
    @SuppressWarnings("deprecation")
    final IObservableValue tooltipObservableValue = org.eclipse.jface.databinding.swt.SWTObservables
            .observeTooltipText(column.getColumn());
    try {
        viewModelDBC.bindValue(textObservableValue, labelService.getDisplayName(
                getVElement().getDomainModelReference(), getViewModelContext().getDomainModel()));

        viewModelDBC.bindValue(tooltipObservableValue, labelService.getDescription(
                getVElement().getDomainModelReference(), getViewModelContext().getDomainModel()));
    } catch (final NoLabelFoundException e) {
        getReportService().report(new RenderingFailedReport(e));
    }

    tableViewer.setLabelProvider(labelProvider);
    tableViewer.setContentProvider(cp);
    tableViewer.setInput(list);

    final TableColumnLayout layout = new TableColumnLayout();
    composite.setLayout(layout);
    layout.setColumnData(column.getColumn(), new ColumnWeightData(1, false));

    final VDomainModelReference dmr = getVElement().getDomainModelReference();
    final EditingSupport observableSupport = new ECPListEditingSupport(tableViewer, cellEditor, getVElement(),
            dmr, list);
    column.setEditingSupport(observableSupport);

}

From source file:org.eclipse.epp.internal.logging.aeri.ui.ReportDialog.java

License:Open Source License

private Composite createTableComposite(Composite parent) {
    Composite tableComposite = new Composite(parent, SWT.NONE);
    tableViewer = new TableViewer(tableComposite,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override/*from w ww.j  ava2s  .co m*/
        public String getText(Object element) {
            ErrorReport event = (ErrorReport) element;
            return event.getStatus().getMessage();
        }

        @Override
        public Image getImage(Object element) {
            return ERROR_ICON;
        }
    });
    TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tableColumnLayout.setColumnData(column.getColumn(), new ColumnWeightData(100));
    tableComposite.setLayout(tableColumnLayout);
    tableViewer.setContentProvider(new ObservableListContentProvider());
    tableViewer.setInput(errors);
    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
            if (!selection.isEmpty() && selection.size() == 1) {
                selectedErrorReport.setValue(selection.getFirstElement());
            } else {
                selectedErrorReport.setValue(null);
            }
        }

    });
    tableViewer.getControl().addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.DEL || e.keyCode == SWT.BS) {
                deleteSelection();
            }
        }

        private void deleteSelection() {
            IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
            errors.removeAll(selection.toList());
            selectedErrorReport.setValue(null);
        }

    });
    return tableComposite;
}

From source file:org.eclipse.incquery.tooling.ui.queryexplorer.content.detail.DetailsViewerUtil.java

License:Open Source License

public void prepareFor(PatternMatchContent match, TableViewer viewer) {
    clearTableViewerColumns(viewer);/*from   ww w. ja va  2s.c o  m*/
    String[] titles = { "Parameter", "Value" };
    createColumns(viewer, titles);
    viewer.setUseHashlookup(true);
    viewer.setColumnProperties(titles);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new DetailElementLabelProvider());
    viewer.setCellModifier(new DetailElementCellModifier());
    viewer.setComparator(new ViewerComparator(new DetailComparator(match.getPatternMatch().parameterNames())));

    DatabindingAdapter<IPatternMatch> databindableMatcher = DisplayUtil
            .getDatabindingAdapter(match.getPatternMatch().patternName());// , match.getParent().isGenerated());

    if (databindableMatcher == null) {
        viewer.setInput(null);
    } else {
        DetailObserver observer = new DetailObserver(databindableMatcher, match);
        viewer.setInput(observer);
    }
}

From source file:org.eclipse.incquery.tooling.ui.queryexplorer.content.detail.TableViewerUtil.java

License:Open Source License

public void prepareTableViewerForObservableInput(final ObservablePatternMatch match, TableViewer viewer) {
    clearTableViewerColumns(viewer);// w w w .  j ava 2  s. com
    String[] titles = { "Parameter", "Value" };
    createColumns(viewer, titles);
    viewer.setUseHashlookup(true);
    viewer.setColumnProperties(titles);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new DetailElementLabelProvider());
    viewer.setCellModifier(new DetailElementCellModifier());
    viewer.setComparator(new ViewerComparator(new DetailComparator(match.getPatternMatch().parameterNames())));

    DatabindingAdapter<IPatternMatch> databindableMatcher = DatabindingUtil
            .getDatabindingAdapter(match.getPatternMatch().patternName(), match.getParent().isGenerated());

    if (databindableMatcher == null) {
        viewer.setInput(null);
    } else {
        DetailObserver observer = new DetailObserver(databindableMatcher, match);
        viewer.setInput(observer);
    }
}

From source file:org.eclipse.internal.cbmc.view.LoopsTableViewer.java

License:Open Source License

private void init() {
    cp = new ObservableListContentProvider();
    this.getTable().setHeaderVisible(true);
    createTableViewerColumn(CbmcPackage.Literals.LOOP__UNWIND, Messages.LoopsTableViewer_headerUnwind, 80, 0,
            true);//from   w w w .j a  v a  2 s  .  c  o m
    createTableViewerColumn(CbmcPackage.Literals.LOOP__FILENAME, Messages.LoopsTableViewer_headerFile, 80, 1,
            false);
    createTableViewerColumn(CbmcPackage.Literals.LOOP__FUNCTION, Messages.LoopsTableViewer_headerFunction, 80,
            2, false);
    createTableViewerColumn(CbmcPackage.Literals.LOOP__LINE, Messages.LoopsTableViewer_headerLine, 80, 3,
            false);
    comparator = new LoopsViewerComparator();
    setComparator(comparator);
    setContentProvider(cp);
}

From source file:org.eclipse.jface.examples.databinding.snippets.Snippet007ColorLabelProvider.java

License:Open Source License

/**
 * @param args//from   w w  w  . ja v a  2  s .c  o m
 */
@SuppressWarnings("unchecked")
public static void main(String[] args) {
    final List<Person> persons = new ArrayList<>();
    persons.add(new Person("Fiona Apple", Person.FEMALE));
    persons.add(new Person("Elliot Smith", Person.MALE));
    persons.add(new Person("Diana Krall", Person.FEMALE));
    persons.add(new Person("David Gilmour", Person.MALE));

    final Display display = new Display();
    Realm.runWithDefault(DisplayRealm.getRealm(display), () -> {
        Shell shell = new Shell(display);
        shell.setText("Gender Bender");
        shell.setLayout(new GridLayout());

        Table table = new Table(shell, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
        GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
        table.setLayoutData(gridData);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText("No");
        column.setWidth(20);
        column = new TableColumn(table, SWT.NONE);
        column.setText("Name");
        column.setWidth(100);
        final TableViewer viewer = new TableViewer(table);

        IObservableList<Person> observableList = Observables.staticObservableList(persons);
        ObservableListContentProvider<Person> contentProvider = new ObservableListContentProvider<>();

        viewer.setContentProvider(contentProvider);

        // this does not have to correspond to the columns in the table,
        // we just list all attributes that affect the table content.
        IObservableMap<Person, ?>[] attributes = new IObservableMap[2];
        attributes[0] = BeanProperties.value(Person.class, "name")
                .observeDetail(contentProvider.getKnownElements());
        attributes[1] = BeanProperties.value(Person.class, "gender")
                .observeDetail(contentProvider.getKnownElements());

        class ColorLabelProvider extends ObservableMapLabelProvider implements ITableColorProvider {
            Color male = display.getSystemColor(SWT.COLOR_BLUE);

            Color female = new Color(display, 255, 192, 203);

            ColorLabelProvider(IObservableMap<?, ?>[] attributes) {
                super(attributes);
            }

            // to drive home the point that attributes does not have to
            // match
            // the columns
            // in the table, we change the column text as follows:
            @Override
            public String getColumnText(Object element, int index) {
                if (index == 0) {
                    return Integer.toString(persons.indexOf(element) + 1);
                }
                return ((Person) element).getName();
            }

            @Override
            public Color getBackground(Object element, int index) {
                return null;
            }

            @Override
            public Color getForeground(Object element, int index) {
                if (index == 0)
                    return null;
                Person person = (Person) element;
                return (person.getGender() == Person.MALE) ? male : female;
            }

            @Override
            public void dispose() {
                super.dispose();
                female.dispose();
            }
        }
        viewer.setLabelProvider(new ColorLabelProvider(attributes));

        viewer.setInput(observableList);

        table.getColumn(0).pack();

        Button button = new Button(shell, SWT.PUSH);
        button.setText("Toggle Gender");
        button.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent arg0) {
                IStructuredSelection selection = viewer.getStructuredSelection();
                if (selection != null && !selection.isEmpty()) {
                    Person person = (Person) selection.getFirstElement();
                    person.setGender((person.getGender() == Person.MALE) ? Person.FEMALE : Person.MALE);
                }
            }
        });

        shell.setSize(300, 400);
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
    });
    display.dispose();
}

From source file:org.eclipse.jface.examples.databinding.snippets.Snippet021MultiFieldValidation.java

License:Open Source License

private void bindSumAndAddendsGroup(DataBindingContext dbc) {
    IObservableValue<String> targetSum = WidgetProperties.text(SWT.Modify).observe(sumTarget);
    final IObservableValue<Integer> middleSum = new WritableValue<>(0, Integer.TYPE);
    dbc.bindValue(targetSum, middleSum);

    final IObservableList<Integer> targetAddends = new WritableList<>(new ArrayList<>(), Integer.TYPE);
    addendsTarget.setContentProvider(new ObservableListContentProvider<>());
    addendsTarget.setInput(targetAddends);

    addAddendButton.addSelectionListener(new SelectionAdapter() {
        @Override/*from  www.  ja  v  a  2  s . com*/
        public void widgetSelected(final SelectionEvent e) {
            InputDialog dialog = new InputDialog(getShell(), "Input addend", "Enter an integer addend", "0",
                    newText -> {
                        try {
                            Integer.valueOf(newText);
                            return null;
                        } catch (NumberFormatException e1) {
                            return "Enter a number between " + Integer.MIN_VALUE + " and " + Integer.MAX_VALUE;
                        }
                    });
            if (dialog.open() == Window.OK) {
                targetAddends.add(Integer.valueOf(dialog.getValue()));
            }
        }
    });

    removeAddendButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = addendsTarget.getStructuredSelection();
            if (!selection.isEmpty())
                targetAddends.remove(selection.getFirstElement());
        }
    });

    IObservableValue<Integer> modelSum = new WritableValue<>(Integer.valueOf(5), Integer.TYPE);
    dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(sumModelValue), modelSum);

    IObservableList<Integer> modelAddends = new WritableList<>(new ArrayList<>(), Integer.TYPE);

    MultiValidator validator = new MultiValidator() {
        @Override
        protected IStatus validate() {
            int sum = middleSum.getValue();
            int actualSum = 0;
            for (int i : targetAddends) {
                actualSum += i;
            }
            if (sum != actualSum)
                return ValidationStatus.error("Sum of addends is " + actualSum + ", expecting " + sum);
            return ValidationStatus.ok();
        }
    };
    dbc.addValidationStatusProvider(validator);

    addendsModelValue.setContentProvider(new ObservableListContentProvider<>());
    addendsModelValue.setInput(modelAddends);

    dbc.bindValue(validator.observeValidatedValue(middleSum), modelSum);
    dbc.bindList(validator.observeValidatedList(targetAddends), modelAddends);
}

From source file:org.eclipse.jface.examples.databinding.snippets.Snippet022ComputedListCombo.java

License:Open Source License

/**
 * @param shell/*from w w  w.  j av a 2s.c  om*/
 */
protected void createControls(Shell shell) {
    Composite composite = new Composite(shell, SWT.NONE);
    Group group = new Group(composite, SWT.NONE);
    group.setText("Filter");
    Button male = new Button(group, SWT.CHECK);
    male.setText("Male");
    Button female = new Button(group, SWT.CHECK);
    female.setText("Female");
    final IObservableValue<Boolean> femaleObservable = WidgetProperties.buttonSelection().observe(female);
    final IObservableValue<Boolean> maleObservable = WidgetProperties.buttonSelection().observe(male);
    Combo combo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
    GridDataFactory.defaultsFor(combo).align(SWT.BEGINNING, SWT.BEGINNING).applyTo(combo);
    ComboViewer viewer = new ComboViewer(combo);
    viewer.setContentProvider(new ObservableListContentProvider<>());
    // We should really have an out-of-the box filtered list...
    IObservableList<Thing> filteredList = new ComputedList<Thing>() {
        @Override
        protected List<Thing> calculate() {
            List<Thing> result = new ArrayList<>();
            for (Thing thing : model) {
                if (femaleObservable.getValue() && !thing.female)
                    continue;
                if (maleObservable.getValue() && !thing.male)
                    continue;
                result.add(thing);
            }
            return result;
        }
    };
    viewer.setInput(filteredList);
    GridLayoutFactory.swtDefaults().applyTo(group);
    GridLayoutFactory.swtDefaults().applyTo(composite);
}