List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements
public IObservableSet<E> getKnownElements()
From source file:com.netxforge.netxstudio.screens.f4.MetricSources.java
License:Open Source License
public EMFDataBindingContext initDataBindings_() { EMFDataBindingContext bindingContext = new EMFDataBindingContext(); ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); metricSourceTableViewer.setContentProvider(listContentProvider); final IObservableSet knownElements = listContentProvider.getKnownElements(); List<IObservableMap> maps = Lists.newArrayList(); maps.add(EMFProperties.value(MetricsPackage.Literals.METRIC_SOURCE__NAME).observeDetail(knownElements)); maps.add(EMFProperties.value(MetricsPackage.Literals.METRIC_SOURCE__METRIC_LOCATION) .observeDetail(knownElements)); maps.add(EMFProperties.value(MetricsPackage.Literals.METRIC_SOURCE__METRIC_MAPPING) .observeDetail(knownElements)); IObservableMap[] observeMaps = new IObservableMap[maps.size()]; maps.toArray(observeMaps);//www.j a va2 s.c o m metricSourceTableViewer.setLabelProvider(new MetricSourceObservableMapLabelProvider(observeMaps)); IEMFListProperty l = EMFEditProperties.resource(editingService.getEditingDomain()); IObservableList metricSourcesObservableList = l.observe(msResource); metricSourceTableViewer.setInput(metricSourcesObservableList); return bindingContext; }
From source file:com.netxforge.netxstudio.screens.f4.ResourceMonitors.java
License:Open Source License
public EMFDataBindingContext initDataBindings_() { EMFDataBindingContext bindingContext = new EMFDataBindingContext(); ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); resourceMonitorsTableViewer.setContentProvider(listContentProvider); IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(), new EStructuralFeature[] { OperatorsPackage.Literals.RESOURCE_MONITOR__NODE_REF, OperatorsPackage.Literals.RESOURCE_MONITOR__RESOURCE_REF, OperatorsPackage.Literals.RESOURCE_MONITOR__MARKERS, }); resourceMonitorsTableViewer.setLabelProvider(new ResourceMonitorObervableMapLabelProvider(observeMaps)); // IEMFListProperty serviceMonitorObservableList = // EMFEditProperties.list( // editingService.getEditingDomain(), // ServicesPackage.Literals.SERVICE_MONITOR__RESOURCE_MONITORS); IEMFListProperty serviceMonitorObservableList = EMFEditProperties.list(editingService.getEditingDomain(), ServicesPackage.Literals.SERVICE_MONITOR__RESOURCE_MONITORS); IObservableList resourceList = serviceMonitorObservableList.observe(serviceMonitor); // obm.addObservable(resourceList); resourceMonitorsTableViewer.setInput(resourceList); return bindingContext; }
From source file:com.netxforge.netxstudio.screens.f4.ServiceMonitors.java
License:Open Source License
public EMFDataBindingContext initDataBindings_() { EMFDataBindingContext bindingContext = new EMFDataBindingContext(); // tblViewerClmnState.setEditingSupport(new CheckBoxEditingSupport( // jobsTableViewer, bindingContext)); ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); serviceMonitorsTableViewer.setContentProvider(listContentProvider); EAttribute dummyAttribute = EcoreFactory.eINSTANCE.createEAttribute(); IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(), new EStructuralFeature[] { dummyAttribute, ServicesPackage.Literals.SERVICE_MONITOR__NAME, ServicesPackage.Literals.SERVICE_MONITOR__REVISION, ServicesPackage.Literals.SERVICE_MONITOR__PERIOD, ServicesPackage.Literals.SERVICE_MONITOR__PERIOD, }); serviceMonitorsTableViewer.setLabelProvider(new ServiceMonitorsObervableMapLabelProvider(observeMaps)); IEMFListProperty resourcesProperties = EMFEditProperties.list(editingService.getEditingDomain(), ServicesPackage.Literals.SERVICE__SERVICE_MONITORS); IObservableList rfsServicesObservableList = resourcesProperties.observe(this.rfsService); // obm.addObservable(rfsServicesObservableList); serviceMonitorsTableViewer.setInput(rfsServicesObservableList); return bindingContext; }
From source file:com.netxforge.netxstudio.screens.nf4.NewEditUser.java
License:Open Source License
/** * Converted to new EMF API./*from w ww .j av a2s.com*/ * * @return */ public EMFDataBindingContext initDataBindings_() { EMFDataBindingContext bindingContext = new EMFDataBindingContext(); validationService.registerBindingContext(bindingContext); // Validation Strategies EMFUpdateValueStrategy loginStrategy = ValidationService.getStrategyfactory() .strategyBeforeSetStringNotEmpty("Login is required"); EMFUpdateValueStrategy firstNameStrategy = ValidationService.getStrategyfactory() .strategyBeforeSetStringNotEmpty("First name is required"); EMFUpdateValueStrategy lastNameStrategy = ValidationService.getStrategyfactory() .strategyBeforeSetStringNotEmpty("Last name is required"); EMFUpdateValueStrategy emailNameStrategy = ValidationService.getStrategyfactory() .strategyBeforeSetStringNotEmpty("Email is required"); // The active strategy is merely a warning. EMFUpdateValueStrategy activeStrategy = ValidationService.getStrategyfactory() .strategyAfterGet(new IValidator() { public IStatus validate(Object value) { if (value instanceof Boolean) { if (!((Boolean) value).booleanValue()) { // Not active, issue warning. return new Status(IStatus.WARNING, ScreensActivator.PLUGIN_ID, "Person not active, are you sure"); } else { return Status.OK_STATUS; } } else { return new Status(IStatus.ERROR, ScreensActivator.PLUGIN_ID, "Should and will not occure"); } } }); EMFUpdateValueStrategy roleStrategy = ValidationService.getStrategyfactory() .strategyAfterGet(new IValidator() { public IStatus validate(Object value) { if (value == null) { return new Status(IStatus.WARNING, ScreensActivator.PLUGIN_ID, "A role should be selected"); } else { // Any other value should do. return Status.OK_STATUS; } } }); // Bindings IObservableValue textObserveTextObserveWidget_1 = SWTObservables.observeDelayedValue(100, SWTObservables.observeText(txtLogin, SWT.Modify)); IEMFValueProperty userLoginObserveValue_1 = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__LOGIN); bindingContext.bindValue(textObserveTextObserveWidget_1, userLoginObserveValue_1.observe(user), loginStrategy, null); IObservableValue txtFirstNameObserveTextObserveWidget = SWTObservables.observeDelayedValue(400, SWTObservables.observeText(txtFirstName, SWT.Modify)); // IObservableValue userFirstNameObserveValue = // EMFObservables.observeValue(user, Literals.PERSON__FIRST_NAME); IEMFValueProperty userFirstNameObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__FIRST_NAME); bindingContext.bindValue(txtFirstNameObserveTextObserveWidget, userFirstNameObserveValue.observe(user), firstNameStrategy, null); IObservableValue txtLastNameObserveTextObserveWidget = SWTObservables.observeDelayedValue(400, SWTObservables.observeText(txtLastName, SWT.Modify)); // IObservableValue userLastNameObserveValue = EMFObservables // .observeValue(user, Literals.PERSON__LAST_NAME); IEMFValueProperty userLastNameObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__LAST_NAME); bindingContext.bindValue(txtLastNameObserveTextObserveWidget, userLastNameObserveValue.observe(user), lastNameStrategy, null); IObservableValue txtEmailObserveTextObserveWidget = SWTObservables.observeDelayedValue(400, SWTObservables.observeText(txtEmail, SWT.Modify)); // IObservableValue userEmailObserveValue = EMFObservables.observeValue( // user, Literals.PERSON__EMAIL); IEMFValueProperty userEmailObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__EMAIL); bindingContext.bindValue(txtEmailObserveTextObserveWidget, userEmailObserveValue.observe(user), emailNameStrategy, null); IObservableValue btnCheckObserveSelectionObserveWidget = SWTObservables.observeSelection(btnCheck); IEMFValueProperty userActiveObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__ACTIVE); bindingContext.bindValue(btnCheckObserveSelectionObserveWidget, userActiveObserveValue.observe(user), activeStrategy, null); IObservableValue passwordObservableValue = new WritableValue(); IObservableValue txtPasswordObserveTextObserveWidget = SWTObservables.observeDelayedValue(400, SWTObservables.observeText(txtPass, SWT.Modify)); IObservableValue txtConfirmObserveTextObserveWidget = SWTObservables.observeDelayedValue(400, SWTObservables.observeText(txtConfirm, SWT.Modify)); // NEW CODE, Use a custom MultiValidator, it produces NewPasswordConfirmed newPasswordConfirmed = new NewPasswordConfirmed(bindingContext, new IObservableValue[] { txtPasswordObserveTextObserveWidget, txtConfirmObserveTextObserveWidget }); passwordObservableValue = newPasswordConfirmed .observeValidatedValue(newPasswordConfirmed.getMiddletons().get(0)); // OLD CODE. // Special writable case for password and confirmation, // both share the value changed listener, which only sets the model. // when both passwords are the same. 2 x widgets -> model // PasswordConfirmed confirmedHandler = new PasswordConfirmed( // passwordObservableValue); // txtPasswordObserveTextObserveWidget // .addValueChangeListener(confirmedHandler); // txtConfirmObserveTextObserveWidget // .addValueChangeListener(confirmedHandler); // EMFUpdateValueStrategy passStrategy = ValidationService // .getStrategyfactory().strategyAfterGet(confirmedHandler); EMFUpdateValueStrategy passStrategy = new EMFUpdateValueStrategy(); passStrategy.setConverter(new PasswordConverter()); IEMFValueProperty passwordObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__PASSWORD); // Password, can not be presented (Ok it can but we don't want to), so only target to model. bindingContext.bindValue(passwordObservableValue, passwordObserveValue.observe(user), passStrategy, null); newPasswordConfirmed.revalidateExternal(); // Hand coded binding for a combo. ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); this.getComboViewerWidget().setContentProvider(listContentProvider); IObservableMap observeMap = EMFObservables.observeMap(listContentProvider.getKnownElements(), Literals.ROLE__NAME); this.getComboViewerWidget().setLabelProvider(new ObservableMapLabelProvider(observeMap)); rolesResource = editingService.getData(GenericsPackage.Literals.ROLE); IEMFListProperty l = EMFEditProperties.resource(editingService.getEditingDomain()); IObservableList rolesObservableList = l.observe(rolesResource); // obm.addObservable(rolesObservableList); this.getComboViewerWidget().setInput(rolesObservableList); IObservableValue comboObserveProxy = ViewerProperties.singleSelection().observe(comboViewer); IEMFValueProperty roleObserveValue = EMFEditProperties.value(editingService.getEditingDomain(), Literals.PERSON__ROLES); bindingContext.bindValue(comboObserveProxy, roleObserveValue.observe(user), roleStrategy, null); return bindingContext; }
From source file:com.netxforge.netxstudio.screens.nf4.UserActivity.java
License:Open Source License
public EMFDataBindingContext initDataBindings_() { EMFDataBindingContext bindingContext = new EMFDataBindingContext(); ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); tableViewer.setContentProvider(listContentProvider); IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(), new EStructuralFeature[] { GenericsPackage.Literals.COMMIT_LOG_ENTRY__TIME_STAMP, GenericsPackage.Literals.COMMIT_LOG_ENTRY__OBJECT_ID, GenericsPackage.Literals.COMMIT_LOG_ENTRY__ACTION, GenericsPackage.Literals.COMMIT_LOG_ENTRY__CHANGE }); tableViewer.setLabelProvider(new CommitObservableMapLabelProvider(observeMaps)); // Cool, observer the whole resource. IEMFListProperty l = EMFProperties.resource(); tableViewer.setInput(l.observe(commitEntries)); return bindingContext; }
From source file:com.rcpcompany.uibindings.internal.ViewerBindingImpl.java
License:Open Source License
@Override public void finish1() { final ColumnViewer viewer = getViewer(); // TODO SWTB assertTrue(viewer != null, "No viewer set"); //$NON-NLS-1$ assertTrue(getList() != null, "No model list"); //$NON-NLS-1$ assertTrue(!getColumns().isEmpty(), "No columns in viewer"); //$NON-NLS-1$ final Control control = getControl(); assertTrue((control.getStyle() & SWT.FULL_SELECTION) != 0, "Viewer must have SWT.FULL_SELECTION set"); //$NON-NLS-1$ // SWTEventUtils.swtListen(control); if (viewer instanceof TableViewer) { final ObservableListContentProvider contentProvider = new ObservableListContentProvider(); viewer.setContentProvider(contentProvider); setElements(contentProvider.getKnownElements()); } else if (viewer instanceof TreeViewer) { myTreeFactory = new ViewerBindingTreeFactory(getList(), getArgument(ARG_TREE_ID, String.class, null)); final ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider( myTreeFactory, myTreeFactory); viewer.setContentProvider(contentProvider); myValidationLabelDecorator = new ValidationLabelDecorator(); myValidationLabelDecorator.setPropagationAdapter(new ValidationLabelDecorator.IPropagationAdapter() { @Override/* w ww .j av a 2s . com*/ public Object getParent(Object object) { if (isDisposed()) return null; return contentProvider.getParent(object); } }); setElements(contentProvider.getKnownElements()); } else { assertTrue(false, "Viewer not a Table or a Tree?"); //$NON-NLS-1$ } IManager.Factory.getManager().eAdapters().add(myManagerAdapter); control.addListener(SWT.PaintItem, myPaintItemListener); if ((control.getStyle() & SWT.SINGLE) == SWT.SINGLE) { mySelectionChangedListener = new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { myLastReportedSelectedElement = ((IStructuredSelection) event.getSelection()).getFirstElement(); } }; viewer.addSelectionChangedListener(mySelectionChangedListener); } registerWidget(control); /* * More or less adapted (read "stolen") from Snippet026TreeViewerTabEditing... * * Actually it is more and more less and less... */ final ColumnViewerEditorActivationStrategy actSupport = new CellEditorActivationStrategy(this); final FocusCellOwnerDrawHighlighter focusDrawingDelegate = new FocusCellOwnerDrawHighlighter(viewer); final int feature = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION; try { if (viewer instanceof TableViewer) { final Class<?> cls = Class.forName("org.eclipse.jface.viewers.MyTableViewerFocusCellManager"); final Constructor<?> constructor = cls.getConstructor(TableViewer.class, FocusCellHighlighter.class, CellNavigationStrategy.class); myViewerFocusCellManager = (IMyViewerFocusCellManager) constructor.newInstance(viewer, focusDrawingDelegate, theCellNavigationStrategy); TableViewerEditor.create((TableViewer) viewer, (TableViewerFocusCellManager) myViewerFocusCellManager, actSupport, feature); } else if (viewer instanceof TreeViewer) { final Class<?> cls = Class.forName("org.eclipse.jface.viewers.MyTreeViewerFocusCellManager"); final Constructor<?> constructor = cls.getConstructor(TreeViewer.class, FocusCellHighlighter.class, CellNavigationStrategy.class); myViewerFocusCellManager = (IMyViewerFocusCellManager) constructor.newInstance(viewer, focusDrawingDelegate, theCellNavigationStrategy); TreeViewerEditor.create((TreeViewer) viewer, (TreeViewerFocusCellManager) myViewerFocusCellManager, actSupport, feature); } else { // Not supported } } catch (final Exception ex) { // Do nothing } if (getList() instanceof IObserving && getList().getElementType() instanceof EReference) { // final EObject baseObject = (EObject) ((IObserving) getList()).getObserved(); // final EReference elementType = (EReference) getList().getElementType(); myMessagesOnlyValueBinding = getContext().addBinding() .ui(control, InternalConstants.ATTR_VIEWERS_MESSAGE_ONLY).model(getList()) .type(InternalConstants.VIEWERS_MESSAGE_ONLY_TYPE) .arg(Constants.ARG_MODEL_OBJECT_MESSAGES, true); } ColumnViewerToolTipSupport.enableFor(viewer); DoubleClickAdapter.adapt(this); }
From source file:com.toedter.e4.demo.contacts.rap.views.ListView.java
License:Open Source License
@Inject public ListView(Composite parent) { // 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() { @Override/*ww w . j av a2 s .c om*/ public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); selectionService.setSelection(selection.getFirstElement()); } }); // 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)); 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:com.toedter.e4.demo.contacts.swt.views.ListView.java
License:Open Source License
@Inject public ListView(Composite parent, final MApplication application) { // 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() { @Override//ww w .j a va 2 s .c o m public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); // selectionService.setSelection(selection.getFirstElement()); application.getContext().set(Contact.class, (Contact) selection.getFirstElement()); } }); // 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)); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); contactsViewer.setContentProvider(contentProvider); IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(), Contact.class, new String[] { "firstName", "lastName" }); contactsViewer.setLabelProvider(new ObservableMapLabelProvider(attributes)); IObservableList allContacts = ContactsRepositoryFactory.getContactsRepository().getAllContacts(); contactsViewer.setInput(allContacts); GridLayoutFactory.fillDefaults().generateLayout(parent); // Hack to select Kai Toedter at startup for (int i = 0; i < allContacts.size(); i++) { Contact contact = (Contact) allContacts.get(i); if ("Kai".equalsIgnoreCase(contact.getFirstName()) && "Tdter".equalsIgnoreCase(contact.getLastName())) { contactsViewer.setSelection(new StructuredSelection(contact)); break; } } }
From source file:era.foss.objecteditor.specobject.AttributeDefinitionEnumComposite.java
License:Open Source License
public Control createControl() { attributeDefinition = (AttributeDefinitionEnumeration) viewElement.getAttributeDefinition(); if (attributeDefinition.isMultiValued()) { comboViewer = new MultiComboViewer(this, SWT.READ_ONLY | SWT.BORDER); } else {/* ww w. j ava 2 s.c om*/ comboViewer = new ColorComboViewer(new CCombo(this, SWT.READ_ONLY | SWT.BORDER)); } ObservableListContentProvider contentProvider = new ObservableListContentProvider(); // set content provider comboViewer.setContentProvider(contentProvider); ObservableMapLabelColorProvider labelProvider = new ObservableMapLabelColorProvider( EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME) .observeDetail(contentProvider.getKnownElements())) { @Override public String getText(Object element) { return super.getText(element); } @Override public Image getImage(Object element) { return super.getImage(element); } public Color getForeground(Object element) { return null; } public Color getBackground(Object element) { org.eclipse.swt.graphics.Color swtColor; if (element != null) { assert (element instanceof EnumValueImpl); EnumValueImpl enumValue = (EnumValueImpl) element; swtColor = enumValue.getColor().getColor(); } else { swtColor = Display.getDefault().getSystemColor(SWT.COLOR_WHITE); } return swtColor; } }; // set label provider comboViewer.setLabelProvider(labelProvider); // set input IEMFListProperty dataTypeDefinitions = EMFProperties .list(ErfPackage.Literals.DATATYPE_DEFINITION_ENUMERATION__SPECIFIED_VALUES); IObservableList observableList = dataTypeDefinitions.observe(attributeDefinition.getType()); comboViewer.setInput(observableList); return comboViewer.getControl(); }
From source file:era.foss.objecteditor.specobject.SpecObjectCompositeViewer.java
License:Open Source License
/** * Create button bar showing:/*from ww w. ja v a 2 s . c om*/ * <ul> * <li>combo box for the view</li> * <li>button for adding new SpecObjects</li> * </ul> * * * @param viewerComposite the parent composite * @return */ private void createButtonBar() { buttonBarComposite = new Composite(topLevelComposite, SWT.NONE); buttonBarComposite.setLayout(new GridLayout(4, true)); buttonBarComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 0, 0)); /* * create combo box showing the availible views */ ComboViewer viewComboViewer = new ComboViewer(buttonBarComposite, SWT.READ_ONLY) { @Override protected void doUpdateItem(Widget data, Object element, boolean fullMap) { // memorize the selection before updating the item, as the // update routine removes the selection... ISelection currentSelection = this.getSelection(); super.doUpdateItem(data, element, fullMap); // set the selection to the previous value this.setSelection(currentSelection); } }; ObservableListContentProvider contentProvider = new ObservableListContentProvider(); viewComboViewer.setContentProvider(contentProvider); viewComboViewer.setLabelProvider( new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME) .observeDetail(contentProvider.getKnownElements()))); IEMFListProperty dataTypeDefinitions = EMFProperties.list(ErfPackage.Literals.ERA_TOOL_EXTENSION__VIEWS); IObservableList observableList = dataTypeDefinitions.observe(toolExtension); viewComboViewer.setInput(observableList); // use first view available // TODO: use a dedicated default view if available if (toolExtension.getViews().size() > 0) { viewComboViewer.setSelection(new StructuredSelection(toolExtension.getViews().get(0))); } viewComboViewer.getControl().setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1)); viewMaster = ViewerProperties.singleSelection().observe(viewComboViewer); // refresh composite table in case view has been changed viewMaster.addChangeListener(new IChangeListener() { @Override public void handleChange(ChangeEvent event) { dbc.dispose(); compositeTable.dispose(); createCompositeTable(); binding(); topLevelComposite.layout(); } }); /* * Create Combo box for selecting the SpecType */ final ComboViewer specTypecomboViewer = new ComboViewer(buttonBarComposite, SWT.READ_ONLY) { @Override protected void doUpdateItem(Widget data, Object element, boolean fullMap) { // memorize the selection before updating the item, as the // update routine removes the selection... ISelection currentSelection = this.getSelection(); super.doUpdateItem(data, element, fullMap); // set the selection to the previous value this.setSelection(currentSelection); } }; ObservableListContentProvider comboViewercontentProvider = new ObservableListContentProvider(); specTypecomboViewer.getControl().setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false)); // set content provider specTypecomboViewer.setContentProvider(comboViewercontentProvider); // set label provider specTypecomboViewer.setLabelProvider( new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME) .observeDetail(comboViewercontentProvider.getKnownElements()))); // set input IEMFListProperty specTypeProperty = EMFProperties.list(ErfPackage.Literals.CONTENT__SPEC_TYPES); specTypecomboViewer.setInput(specTypeProperty.observe(this.erfModel.getCoreContent())); // TODO: use a dedicated default type if available if (erfModel.getCoreContent().getSpecTypes().size() > 0) { specTypecomboViewer .setSelection(new StructuredSelection(erfModel.getCoreContent().getSpecTypes().get(0))); } specTypeMaster = ViewerProperties.singleSelection().observe(specTypecomboViewer); /* * create add button */ final Button addButton = new Button(buttonBarComposite, SWT.NONE); addButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ADD)); addButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false)); addButton.setEnabled(specTypeMaster.getValue() != null); addButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { SpecObjectHandler.createNewSpecObject(editingDomain, erfModel.getCoreContent(), (SpecType) SpecObjectCompositeViewer.this.specTypeMaster.getValue(), erfModel.getCoreContent().getSpecifications().get(0)); } }); specTypeMaster.addValueChangeListener(new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { addButton.setEnabled(event.getObservableValue().getValue() != null); } }); }