List of usage examples for org.eclipse.jface.databinding.swt WidgetProperties text
public static IWidgetValueProperty text()
From source file:org.eclipse.emf.ecp.view.spi.categorization.swt.SWTCategorizationRenderer.java
License:Open Source License
/** * {@inheritDoc}//from www .ja va 2 s . com * * @see org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer#renderControl(int, org.eclipse.swt.widgets.Composite, * org.eclipse.emf.ecp.view.spi.model.VElement, org.eclipse.emf.ecp.view.spi.context.ViewModelContext) */ @Override protected Control renderControl(SWTGridCell cell, Composite parent) throws NoRendererFoundException, NoPropertyDescriptorFoundExeption { final Composite categoryComposite = new Composite(parent, SWT.NONE); categoryComposite.setBackground(parent.getBackground()); categoryComposite.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_categorization"); //$NON-NLS-1$ categoryComposite.setLayout(LayoutProviderHelper.getColumnLayout(1, false)); final Label headingLbl = new Label(categoryComposite, SWT.NONE); headingLbl.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_categorization_title"); //$NON-NLS-1$ final Label whatToDoLbl = new Label(categoryComposite, SWT.NONE); whatToDoLbl.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_categorization_message"); //$NON-NLS-1$ final IObservableValue modelValue = EMFEditObservables.observeValue( AdapterFactoryEditingDomain.getEditingDomainFor(getVElement()), getVElement(), VViewPackage.eINSTANCE.getElement_Label()); final IObservableValue targetValue = WidgetProperties.text().observe(headingLbl); dataBindingContext.bindValue(targetValue, modelValue); whatToDoLbl.setText(LocalizationServiceHelper.getString(getClass(), MessageKeys.Categorization_Selection)); return categoryComposite; }
From source file:org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRenderer.java
License:Open Source License
/** * Create the {@link Control} displaying the label of the current {@link VControl}. * * @param parent the {@link Composite} to render onto * @return the created {@link Control} or null *///from www . ja v a 2 s .co m protected final Control createLabel(final Composite parent) { Label label = null; labelRender: if (hasLeftLabelAlignment()) { final VDomainModelReference domainModelReference = getVElement().getDomainModelReference(); final IValueProperty valueProperty; try { valueProperty = getEMFFormsDatabinding().getValueProperty(domainModelReference, getViewModelContext().getDomainModel()); } catch (final DatabindingFailedException ex) { getReportService().report(new RenderingFailedReport(ex)); break labelRender; } catch (final IllegalArgumentException ex) { getReportService().report(new AbstractReport(ex)); break labelRender; } final EMFFormsLabelProvider labelProvider = getEMFFormsLabelProvider(); label = new Label(parent, SWT.NONE); label.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_label"); //$NON-NLS-1$ label.setBackground(parent.getBackground()); final EObject rootObject = getViewModelContext().getDomainModel(); try { final IObservableValue textObservable = WidgetProperties.text().observe(label); final IObservableValue displayNameObservable = labelProvider.getDisplayName(domainModelReference, rootObject); viewModelDBC.bindValue(textObservable, displayNameObservable, null, new UpdateValueStrategy() { /** * {@inheritDoc} * * @see org.eclipse.core.databinding.UpdateValueStrategy#convert(java.lang.Object) */ @Override public Object convert(Object value) { String extra = ""; //$NON-NLS-1$ final VTMandatoryStyleProperty mandatoryStyle = getMandatoryStyle(); final EStructuralFeature structuralFeature = (EStructuralFeature) valueProperty .getValueType(); if (mandatoryStyle.isHighliteMandatoryFields() && structuralFeature.getLowerBound() > 0) { extra = mandatoryStyle.getMandatoryMarker(); } final String result = (String) super.convert(value); return result + extra; } }); final IObservableValue tooltipObservable = WidgetProperties.tooltipText().observe(label); final IObservableValue descriptionObservable = labelProvider.getDescription(domainModelReference, rootObject); viewModelDBC.bindValue(tooltipObservable, descriptionObservable); } catch (final NoLabelFoundException e) { // FIXME Expectations? getReportService().report(new RenderingFailedReport(e)); } } return label; }
From source file:org.eclipse.emf.ecp.view.spi.custom.swt.ECPAbstractCustomControlSWT.java
License:Open Source License
/** * Create the {@link Control} displaying the label of the current {@link VControl}. * * @param parent the {@link Composite} to render onto * @return the created {@link Control} or null * @throws NoPropertyDescriptorFoundExeption thrown if the {@link org.eclipse.emf.ecore.EStructuralFeature * EStructuralFeature} of the {@link VControl} doesn't have a registered {@link IItemPropertyDescriptor} * @since 1.3/*from w w w. j a va 2 s. c o m*/ */ protected final Control createLabel(final Composite parent) throws NoPropertyDescriptorFoundExeption { Label label = null; labelRender: if (hasLeftLabelAlignment()) { IValueProperty valueProperty; try { valueProperty = Activator.getDefault().getEMFFormsDatabinding().getValueProperty( getCustomControl().getDomainModelReference(), getViewModelContext().getDomainModel()); } catch (final DatabindingFailedException ex) { Activator.getDefault().getReportService().report(new DatabindingFailedReport(ex)); break labelRender; } final EStructuralFeature structuralFeature = (EStructuralFeature) valueProperty.getValueType(); label = new Label(parent, SWT.NONE); label.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_label"); //$NON-NLS-1$ label.setBackground(parent.getBackground()); try { viewModelDBC.bindValue(WidgetProperties.text().observe(label), Activator.getDefault().getEMFFormsLabelProvider().getDisplayName( getCustomControl().getDomainModelReference(), getViewModelContext().getDomainModel()), null, new UpdateValueStrategy() { /** * {@inheritDoc} * * @see org.eclipse.core.databinding.UpdateValueStrategy#convert(java.lang.Object) */ @Override public Object convert(Object value) { final String labelText = (String) super.convert(value); String extra = ""; //$NON-NLS-1$ if (structuralFeature.getLowerBound() > 0) { extra = "*"; //$NON-NLS-1$ } return labelText + extra; } }); viewModelDBC.bindValue(WidgetProperties.tooltipText().observe(label), Activator.getDefault().getEMFFormsLabelProvider().getDescription( getCustomControl().getDomainModelReference(), getViewModelContext().getDomainModel())); } catch (final NoLabelFoundException e) { Activator.getDefault().getReportService().report(new RenderingFailedReport(e)); label.setText(e.getMessage()); label.setToolTipText(e.toString()); } } return label; }
From source file:org.eclipse.emf.ecp.view.spi.label.swt.LabelSWTRenderer.java
License:Open Source License
private void setText(Label label) { if (getVElement().getDomainModelReference() != null) { try {/*from w w w . j a v a2 s . c o m*/ final IObservableValue observableValue = emfFormsDatabinding.getObservableValue( getVElement().getDomainModelReference(), getViewModelContext().getDomainModel()); final ISWTObservableValue observeText = WidgetProperties.text().observe(label); final Binding binding = getDataBindingContext().bindValue(observeText, observableValue); label.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { binding.dispose(); } }); } catch (final DatabindingFailedException ex) { getReportService().report(new RenderingFailedReport(ex)); label.setText(ex.getMessage()); } } else { final IObservableValue modelValue = EMFEditObservables.observeValue( AdapterFactoryEditingDomain.getEditingDomainFor(getVElement()), getVElement(), VViewPackage.eINSTANCE.getElement_Label()); final IObservableValue targetValue = WidgetProperties.text().observe(label); dbc.bindValue(targetValue, modelValue); } }
From source file:org.eclipse.emf.ecp.view.template.internal.tooling.controls.AttributeValueControlSWTRenderer.java
License:Open Source License
/** * {@inheritDoc}/*from ww w .j a va 2 s .c om*/ * * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTControlSWTRenderer#createBindings(org.eclipse.swt.widgets.Control, * org.eclipse.emf.ecore.EStructuralFeature.Setting) */ @Override protected Binding[] createBindings(Control control) throws DatabindingFailedException { final Label label = (Label) Composite.class.cast(control).getChildren()[0]; final Binding binding = getDataBindingContext().bindValue(WidgetProperties.text().observe(label), getModelValue(), new UpdateValueStrategy(), new UpdateValueStrategy() { /** * {@inheritDoc} * * @see org.eclipse.core.databinding.UpdateValueStrategy#convert(java.lang.Object) */ @Override public Object convert(Object value) { return super.convert(value).toString(); } }); return new Binding[] { binding }; }
From source file:org.eclipse.emf.ecp.view.template.internal.tooling.controls.URLSelectionControlSWTRenderer.java
License:Open Source License
/** * {@inheritDoc}//from w w w . ja v a 2 s . co m * * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTControlSWTRenderer#createBindings(org.eclipse.swt.widgets.Control, * org.eclipse.emf.ecore.EStructuralFeature.Setting) */ @Override protected Binding[] createBindings(Control control) throws DatabindingFailedException { final Composite composite = Composite.class.cast(control); final Control childControl = composite.getChildren()[0]; final IObservableValue value = WidgetProperties.text().observe(childControl); final Binding binding = getDataBindingContext().bindValue(value, getModelValue()); final IObservableValue toolTip = WidgetProperties.tooltipText().observe(childControl); final Binding tooltipBinding = getDataBindingContext().bindValue(toolTip, getModelValue()); return new Binding[] { binding, tooltipBinding }; }
From source file:org.eclipse.emf.example.databinding.project.ui.rcp.dialogs.CommitterShipDialog.java
License:Open Source License
private Control createForm(final Composite comp) { Composite container = new Composite(comp, SWT.NONE); container.setLayout(new GridLayout(3, false)); {/*w w w . ja v a 2 s. c o m*/ Label l = new Label(container, SWT.NONE); l.setText("Committer"); IEMFEditValueProperty mprop = EMFEditProperties.value(resource.getEditingDomain(), ProjectPackage.Literals.COMMITTER_SHIP__PERSON); ViewForm form = new ViewForm(container, SWT.BORDER | SWT.FLAT); form.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); CLabel label = new CLabel(form, SWT.NONE); form.setContent(label); ctx.bindValue(WidgetProperties.text().observe(label), mprop.observe(committership), null, new EMFUpdateValueStrategy().setConverter(new PersonToStringConverter())); Button b = new Button(container, SWT.PUSH); b.setText("..."); b.setEnabled(isnew); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FilteredItemsSelectionDialog dialog = new PersonFilterDialog(comp.getShell(), resource); dialog.open(); Person p = (Person) dialog.getFirstResult(); if (p != null) { Command cmd = SetCommand.create(resource.getEditingDomain(), committership, ProjectPackage.Literals.COMMITTER_SHIP__PERSON, p); if (cmd.canExecute()) { resource.executeCmd(cmd); } } } }); } IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify); { Label l = new Label(container, SWT.NONE); l.setText("Startdate"); IEMFEditValueProperty mprop = EMFEditProperties.value(resource.getEditingDomain(), ProjectPackage.Literals.COMMITTER_SHIP__START); Text t = new Text(container, SWT.BORDER); t.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false, 2, 1)); ctx.bindValue(textProp.observe(t), mprop.observe(committership), UpdateStrategyFactory.stringToDateNotNull("Can't convert start date value into a valid date", "The start date can not be null"), UpdateStrategyFactory.dateToString()); } { Label l = new Label(container, SWT.NONE); l.setText("Enddate"); IEMFEditValueProperty mprop = EMFEditProperties.value(resource.getEditingDomain(), ProjectPackage.Literals.COMMITTER_SHIP__END); Text t = new Text(container, SWT.BORDER); t.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false, 2, 1)); ctx.bindValue(textProp.observe(t), mprop.observe(committership), UpdateStrategyFactory.stringToDate("Can't convert end date value into a valid date"), UpdateStrategyFactory.dateToString()); } TitleAreaDialogSupport.create(this, ctx); return container; }
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) {/*from w w w .ja va2 s . c o 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) {/*w w w .j a v a 2 s .c o 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 w w w . j a v a 2 s .c om*/ 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); }