List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements
public IObservableSet<E> getKnownElements()
From source file:org.eclipse.cdt.internal.docker.launcher.ContainerPropertyTab.java
License:Open Source License
/** * Same as/*from w w w . j a v a 2 s . c o m*/ * {@link ViewerSupport#bind(StructuredViewer, IObservableList, org.eclipse.core.databinding.property.value.IValueProperty[]) * but with a custom LabelProvider, DataVolumesLabelProvider * * @param viewer * @param input * @param labelProperties */ private void bind(final StructuredViewer viewer, final IObservableList input, final IBeanValueProperty[] labelProperties) { final ObservableListContentProvider contentProvider = new ObservableListContentProvider(); if (viewer.getInput() != null) { viewer.setInput(null); } viewer.setContentProvider(contentProvider); viewer.setLabelProvider(new DataVolumesLabelProvider( Properties.observeEach(contentProvider.getKnownElements(), labelProperties))); if (input != null) { viewer.setInput(input); } }
From source file:org.eclipse.e4.demo.contacts.views.ListView.java
License:Open Source License
@Inject public ListView(Composite parent, EMenuService menuService) { // Table composite (because of TableColumnLayout) final Composite tableComposite = new Composite(parent, SWT.NONE); tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); final TableColumnLayout tableColumnLayout = new TableColumnLayout(); tableComposite.setLayout(tableColumnLayout); // Table viewer contactsViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION); contactsViewer.getTable().setHeaderVisible(true); // contactsViewer.getTable().setLinesVisible(true); contactsViewer.setComparator(new ContactViewerComparator()); contactsViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); selectionService.setSelection(selection.getFirstElement()); }//from w ww.ja v a 2 s. c o m }); // First name column final TableViewerColumn firstNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE); firstNameColumn.getColumn().setText("First Name"); tableColumnLayout.setColumnData(firstNameColumn.getColumn(), new ColumnWeightData(40)); // Last name column final TableViewerColumn lastNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE); lastNameColumn.getColumn().setText("Last Name"); tableColumnLayout.setColumnData(lastNameColumn.getColumn(), new ColumnWeightData(60)); menuService.registerContextMenu(contactsViewer.getControl(), "contacts.popup"); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); contactsViewer.setContentProvider(contentProvider); IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(), Contact.class, new String[] { "firstName", "lastName" }); contactsViewer.setLabelProvider(new ObservableMapLabelProvider(attributes)); contactsViewer.setInput(ContactsRepositoryFactory.getContactsRepository().getAllContacts()); GridLayoutFactory.fillDefaults().generateLayout(parent); }
From source file:org.eclipse.e4.demo.e4photo.ExifTable.java
License:Open Source License
@PostConstruct void init() {// ww w. j av a 2s .com parent.setLayout(new FillLayout()); viewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); viewer.getTable().setHeaderVisible(true); viewer.getTable().setLinesVisible(true); viewer.getTable().setData("org.eclipse.e4.ui.css.id", "exif"); viewer.getTable().setData("org.eclipse.e4.ui.css.CssClassName", "properties"); JSONObject restoredState = null; try { if (persistedState != null) restoredState = new JSONObject(persistedState); } catch (JSONException e) { //discard persisted state and start with fresh state } final JSONObject state = restoredState != null ? restoredState : new JSONObject(); String[] columnNames = new String[] { "name", "make", "model", "orientation", "software", "timestamp", "gpsLatitude", "gpsLongitude", "exposure", "iso", "aperture", "exposureComp", "flash", "width", "height", "focalLength", "whiteBalance", "lightSource", "exposureProgram" }; for (int i = 0; i < columnNames.length; i++) { TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); final TableColumn c = column.getColumn(); final String name = columnNames[i]; c.setText(name); String width = state.optString(name, null); if (width != null) { c.setWidth(Integer.parseInt(width)); } else { c.pack(); } c.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { try { state.put(name, Integer.toString(c.getWidth())); } catch (JSONException e1) { //cannot happen because name is not null } setPersistedState(state.toString()); } }); } ObservableListContentProvider contentProvider = new ObservableListContentProvider(); viewer.setContentProvider(contentProvider); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { Object selected = ((StructuredSelection) event.getSelection()).getFirstElement(); if (eventAdmin != null) EventUtils.post(eventAdmin, EVENT_NAME, selected); } }); viewer.setLabelProvider(new ObservableMapLabelProvider( PojoObservables.observeMaps(contentProvider.getKnownElements(), Exif.class, columnNames))); viewer.setInput(inputList); }
From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.ControlFactory.java
License:Open Source License
public static void createSelectedElement(Composite parent, final AbstractComponentEditor editor, final EMFDataBindingContext context, String label) { Label l = new Label(parent, SWT.NONE); l.setText(label);// ww w. j a v a 2 s . com l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); ComboViewer viewer = new ComboViewer(parent); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; viewer.getControl().setLayoutData(gd); IEMFEditListProperty listProp = EMFEditProperties.list(editor.getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN); IEMFEditValueProperty labelProp = EMFEditProperties.value(editor.getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL); IEMFEditValueProperty idProp = EMFEditProperties.value(editor.getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID); IViewerValueProperty vProp = ViewerProperties.singleSelection(); final Binding[] binding = new Binding[1]; final IObservableValue uiObs = vProp.observe(viewer); final IObservableValue mObs = EMFEditProperties .value(editor.getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT) .observeDetail(editor.getMaster()); editor.getMaster().addValueChangeListener(new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { if (binding[0] != null) { binding[0].dispose(); } } }); final IObservableList list = listProp.observeDetail(editor.getMaster()); ObservableListContentProvider cp = new ObservableListContentProvider(); viewer.setContentProvider(cp); IObservableMap[] attributeMaps = { labelProp.observeDetail(cp.getKnownElements()), idProp.observeDetail(cp.getKnownElements()) }; viewer.setLabelProvider(new ObservableMapLabelProvider(attributeMaps) { @Override public String getText(Object element) { EObject o = (EObject) element; String rv = o.eClass().getName(); if (element instanceof MUILabel) { MUILabel label = (MUILabel) element; if (!Util.isNullOrEmpty(label.getLabel())) { return rv + " - " + label.getLabel().trim(); //$NON-NLS-1$ } } if (element instanceof MApplicationElement) { MApplicationElement appEl = (MApplicationElement) element; if (!Util.isNullOrEmpty(appEl.getElementId())) { return rv + " - " + appEl.getElementId(); //$NON-NLS-1$ } } return rv + "[" + list.indexOf(element) + "]"; //$NON-NLS-1$//$NON-NLS-2$ } }); viewer.setInput(list); editor.getMaster().addValueChangeListener(new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { binding[0] = context.bindValue(uiObs, mObs); } }); }
From source file:org.eclipse.e4.tutorial.contacts.views.ListView.java
License:Open Source License
@Inject public ListView(Composite parent, ContactsRepository contactsRepository) { // Table composite (because of TableColumnLayout) final Composite tableComposite = new Composite(parent, SWT.NONE); tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); final TableColumnLayout tableColumnLayout = new TableColumnLayout(); tableComposite.setLayout(tableColumnLayout); // Table viewer tableViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION); tableViewer.getTable().setHeaderVisible(true); // first name column final TableViewerColumn firstNameColumn = new TableViewerColumn(tableViewer, SWT.NONE); firstNameColumn.getColumn().setText("First Name"); tableColumnLayout.setColumnData(firstNameColumn.getColumn(), new ColumnWeightData(40)); // last name column final TableViewerColumn lastNameColumn = new TableViewerColumn(tableViewer, SWT.NONE); lastNameColumn.getColumn().setText("Last Name"); tableColumnLayout.setColumnData(lastNameColumn.getColumn(), new ColumnWeightData(40)); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); tableViewer.setContentProvider(contentProvider); IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(), Contact.class, new String[] { "firstName", "lastName" }); tableViewer.setLabelProvider(new ObservableMapLabelProvider(attributes)); tableViewer.setInput(contactsRepository.getAllContacts()); GridLayoutFactory.fillDefaults().generateLayout(parent); tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override/*from w w w.j a va 2 s . c o m*/ public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); selectionService.setSelection(selection.getFirstElement()); } }); }
From source file:org.eclipse.e4.xwt.tests.snipppets.Snippet007ColorLabelProvider.java
License:Open Source License
/** * @param args//w ww . j a v a 2s . c om */ public static void main(String[] args) { final List 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(SWTObservables.getRealm(display), new Runnable() { public void run() { 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 observableList = Observables.staticObservableList(persons); ObservableListContentProvider 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[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(), Person.class, new String[] { "name", "gender" }); 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: public String getColumnText(Object element, int index) { if (index == 0) { return Integer.toString(persons.indexOf(element) + 1); } return ((Person) element).getName(); } public Color getBackground(Object element, int index) { return null; } public Color getForeground(Object element, int index) { if (index == 0) return null; Person person = (Person) element; return (person.getGender() == Person.MALE) ? male : female; } 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() { public void widgetSelected(SelectionEvent arg0) { StructuredSelection selection = (StructuredSelection) viewer.getSelection(); 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.emf.ecp.edit.internal.swt.controls.TableControl.java
License:Open Source License
@Override protected void fillControlComposite(Composite parent) { final Composite composite = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).hint(1, 200).applyTo(composite); tableViewer = createTableViewer(composite); final ObservableListContentProvider cp = new ObservableListContentProvider(); final EObject tempInstance = getInstanceOf(clazz); final ECPTableViewerComparator comparator = new ECPTableViewerComparator(); tableViewer.setComparator(comparator); int columnNumber = 0; final Map<EStructuralFeature, Boolean> readOnlyConfig = createReadOnlyConfig(clazz); final List<EStructuralFeature> structuralFeatures = new ArrayList<EStructuralFeature>(); structuralFeatures.addAll(readOnlyConfig.keySet()); if (!getControl().isReadonly()) { createFixedValidationStatusColumn(tableViewer, structuralFeatures); }/* w w w .j av a2 s . c om*/ for (final EStructuralFeature feature : structuralFeatures) { final IItemPropertyDescriptor itemPropertyDescriptor = adapterFactoryItemDelegator .getPropertyDescriptor(tempInstance, feature); if (itemPropertyDescriptor == null) { // if we can't render because no edit information is available, do nothing continue; } final CellEditor cellEditor = createCellEditor(tempInstance, feature); final TableViewerColumn column = TableViewerColumnBuilder.create() .setText(itemPropertyDescriptor.getDisplayName(null)) .setToolTipText(itemPropertyDescriptor.getDescription(null)).setResizable(true) .setMoveable(false).setStyle(noStyle()).setData("width", //$NON-NLS-1$ ECPCellEditor.class.isInstance(cellEditor) ? ECPCellEditor.class.cast(cellEditor).getColumnWidthWeight() : 100) .build(tableViewer); column.setLabelProvider(new ECPCellLabelProvider(feature, cellEditor, feature.isMany() ? new EObjectObservableMap(cp.getKnownElements(), feature) : EMFProperties.value(feature).observeDetail(cp.getKnownElements()))); column.getColumn() .addSelectionListener(getSelectionAdapter(comparator, column.getColumn(), columnNumber)); if (!isReadOnlyFeature(readOnlyConfig, feature)) { // remove if no editing needed final EditingSupport observableSupport = new ECPTableEditingSupport(tableViewer, cellEditor, feature); column.setEditingSupport(observableSupport); } columnNumber++; } tableViewer.setContentProvider(cp); final IObservableList list = EMFEditObservables.observeList(getEditingDomain(mainSetting), mainSetting.getEObject(), mainSetting.getEStructuralFeature()); tableViewer.setInput(list); // IMPORTANT: // - the minimumWidth and (non)resizable settings of the ColumnWeightData are not supported properly // - the layout stops resizing columns that have been resized manually by the user (this could be considered a // feature though) final TableColumnLayout layout = new TableColumnLayout(); composite.setLayout(layout); for (int i = 0; i < tableViewer.getTable().getColumns().length; i++) { final Integer storedValue = (Integer) tableViewer.getTable().getColumns()[i].getData("width"); //$NON-NLS-1$ layout.setColumnData(tableViewer.getTable().getColumns()[i], new ColumnWeightData(storedValue == null ? 50 : storedValue)); } }
From source file:org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer.java
License:Open Source License
/** * Adds the table columns to the {@link TableViewerSWTBuilder}. * * @param tableViewerSWTBuilder the builder * @param clazz the {@EClass} of the rendered object * @param cp the content provider/*from www . jav a2 s. c om*/ * */ private void addColumns(TableViewerSWTBuilder tableViewerSWTBuilder, EClass clazz, ObservableListContentProvider cp) { InternalEObject tempInstance = null; if (!clazz.isAbstract() && !clazz.isInterface()) { tempInstance = getInstanceOf(clazz); } final VTableDomainModelReference tableDomainModelReference = VTableDomainModelReference.class .cast(getVElement().getDomainModelReference()); /* regular columns */ for (final VDomainModelReference dmr : tableDomainModelReference.getColumnDomainModelReferences()) { try { if (dmr == null) { continue; } final IObservableValue text = getLabelText(dmr, true); final IObservableValue tooltip = getLabelTooltipText(dmr, true); final IValueProperty valueProperty = getEMFFormsDatabinding().getValueProperty(dmr, getViewModelContext().getDomainModel()); final EStructuralFeature eStructuralFeature = (EStructuralFeature) valueProperty.getValueType(); final IObservableMap observableMap = valueProperty.observeDetail(cp.getKnownElements()); final TableControlEditingSupportAndLabelProvider labelProvider = new TableControlEditingSupportAndLabelProvider( tempInstance, eStructuralFeature, dmr, valueProperty, observableMap, tableDomainModelReference.getColumnDomainModelReferences().indexOf(dmr)); final EditingSupportCreator editingSupportCreator = TableConfigurationHelper .isReadOnly(getVElement(), dmr) ? null : labelProvider; // TODO ugly: we need this temporary cell editor so early just to get size information final CellEditor tempCellEditor = createCellEditor(tempInstance, eStructuralFeature, new Table(new Shell(), SWT.NONE)); final int weight = ECPCellEditor.class.isInstance(tempCellEditor) ? ECPCellEditor.class.cast(tempCellEditor).getColumnWidthWeight() : 100; final int minWidth = ECPCellEditor.class.isInstance(tempCellEditor) ? ECPCellEditor.class.cast(tempCellEditor).getMinWidth() : 0; tableViewerSWTBuilder.addColumn(true, false, SWT.NONE, weight, minWidth, text, tooltip, labelProvider, editingSupportCreator, null); } catch (final DatabindingFailedException ex) { getReportService().report(new RenderingFailedReport(ex)); continue; } } }
From source file:org.eclipse.emf.example.databinding.project.ui.rcp.views.ProjectCommittersPart.java
License:Open Source License
private void init(IViewSite site, CTabFolder folder, DataBindingContext ctx, EditingDomain editingDomain, IObservableValue master) {/* www . j a va2 s. co m*/ final TableViewer viewer = new TableViewer(folder, SWT.FULL_SELECTION); { IValueProperty prop = EMFEditProperties.value(editingDomain, ProjectPackage.Literals.PROJECT__COMMITTERS); CTabItem item = new CTabItem(folder, SWT.NONE); item.setControl(viewer.getControl()); ctx.bindValue(WidgetProperties.text().observe(item), prop.observeDetail(master), new EMFUpdateValueStrategy(), new EMFUpdateValueStrategy().setConverter(new LengthConverter())); } folder.setSelection(0); viewer.getTable().setHeaderVisible(true); ObservableListContentProvider cp = new ObservableListContentProvider(); { IObservableMap[] attributeMap = new IObservableMap[2]; attributeMap[0] = EMFEditProperties .value(editingDomain, FeaturePath.fromList(ProjectPackage.Literals.COMMITTER_SHIP__PERSON, ProjectPackage.Literals.PERSON__LASTNAME)) .observeDetail(cp.getKnownElements()); attributeMap[1] = EMFEditProperties .value(editingDomain, FeaturePath.fromList(ProjectPackage.Literals.COMMITTER_SHIP__PERSON, ProjectPackage.Literals.PERSON__FIRSTNAME)) .observeDetail(cp.getKnownElements()); TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); column.getColumn().setText("Name"); column.getColumn().setWidth(150); column.setLabelProvider(new GenericMapCellLabelProvider("{0}, {1}", attributeMap)); } { IObservableMap attributeMap = EMFEditProperties .value(editingDomain, ProjectPackage.Literals.COMMITTER_SHIP__START) .observeDetail(cp.getKnownElements()); TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); column.getColumn().setText("Start"); column.getColumn().setWidth(100); column.setLabelProvider(new GenericMapCellLabelProvider("{0,date,short}", attributeMap)); } { IObservableMap attributeMap = EMFEditProperties .value(editingDomain, ProjectPackage.Literals.COMMITTER_SHIP__END) .observeDetail(cp.getKnownElements()); TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); column.getColumn().setText("End"); column.getColumn().setWidth(100); column.setLabelProvider(new GenericMapCellLabelProvider("{0,date,short}", attributeMap)); } IListProperty prop = EMFEditProperties.list(editingDomain, ProjectPackage.Literals.PROJECT__COMMITTERS); viewer.setContentProvider(cp); viewer.setInput(prop.observeDetail(master)); MenuManager mgr = new MenuManager(); mgr.add(new Action("Hide historic committers", IAction.AS_CHECK_BOX) { @Override public void run() { if (isChecked()) { viewer.addFilter(new ViewerFilterImpl()); } else { viewer.setFilters(new ViewerFilter[0]); } } }); viewer.getControl().setMenu(mgr.createContextMenu(viewer.getControl())); site.registerContextMenu(Activator.PLUGIN_ID + ".committers", mgr, viewer); }
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 ww w. ja va 2s. c om*/ 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)); }