List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider
public ObservableListContentProvider()
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); }