@Override public Object get(int index) { if (index < 0 || index >= masterList.size()) { throw new IndexOutOfBoundsException(); } // We should have an element, now check to see if we've already // mapped it to an observable value. if (index >= observableValueList.size()) { // Just null-padding entries that we should have, but haven't // been explicitly requested. while (this.observableValueList.size() <= index) { this.observableValueList.add(null); } } // I'm assuming get is Realm-bound, so there are no concurrency issues // to worry about. if (observableValueList.get(index) == null) { IObservableValue value = aggregateProperty.observe(masterList.get(index)); if (listener != null) { value.addValueChangeListener(listener); } observableValueList.set(index, value); } return observableValueList.get(index).getValue(); }
public void testChange_OrderOfNotifications() throws Exception { final List listeners = new ArrayList(); IChangeListener changeListener = new IChangeListener() { public void handleChange(ChangeEvent event) { listeners.add(this); } }; IValueChangeListener valueChangeListener = new IValueChangeListener() { public void handleValueChange(ValueChangeEvent event) { listeners.add(this); } }; observable.addChangeListener(changeListener); observable.addValueChangeListener(valueChangeListener); delegate.change(observable); assertTrue(formatFail("Change Listeners were not notified on change."), listeners.size() > 0); // not asserting the fact that both are notified as this is asserted in // other tests assertEquals( formatFail("Change listeners should be notified before value change listeners."), changeListener, listeners.get(0)); assertEquals( formatFail("Value change listeners should be notified after change listeners."), valueChangeListener, listeners.get(1)); }
protected void registerObservable(final IObservable observable) { if (observable instanceof IObservableValue) { ((IObservableValue) observable).addValueChangeListener(fValueListener); } if (observable instanceof IObservableSet) { ((IObservableSet) observable).addSetChangeListener(fValueListener); } }
/** * Copies the current value of the source observable to the destination observable, and upon value * change events fired by the source observable, updates the destination observable accordingly, * until the source observable is disposed. This method assumes that both observables are on the * same realm. * * @param source the source observable * @param destination the destination observable * @since 1.2 */ public static void pipe(IObservableValue source, final IObservableValue destination) { destination.setValue(source.getValue()); source.addValueChangeListener( new IValueChangeListener() { public void handleValueChange(ValueChangeEvent event) { destination.setValue(event.diff.getNewValue()); } }); }
public Control createControl(Composite composite, String label, int style) { // create a separate label to the LEFT of the checkbox, otherwise the grid layout will // be off by one column for all other widgets that are created after this one. createLabel(composite, label); button = getToolkit().createButton(composite, "", SWT.CHECK); button.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); button.setSelection((Boolean) object.eGet(feature)); IObservableValue buttonObserver = SWTObservables.observeSelection(button); buttonObserver.addValueChangeListener( new IValueChangeListener() { @SuppressWarnings("restriction") @Override public void handleValueChange(ValueChangeEvent event) { if (!object.eGet(feature).equals(button.getSelection())) { TransactionalEditingDomain editingDomain = getDiagramEditor().getEditingDomain(); editingDomain .getCommandStack() .execute( new RecordingCommand(editingDomain) { @Override protected void doExecute() { object.eSet(feature, button.getSelection()); } }); // if (getDiagramEditor().getDiagnostics()!=null) { // // revert the change and display error errorList message. // button.setSelection((Boolean) object.eGet(feature)); // ErrorUtils.showErrorMessage(getDiagramEditor().getDiagnostics().getMessage()); // } // else // ErrorUtils.showErrorMessage(null); button.setSelection((Boolean) object.eGet(feature)); } } }); button.addFocusListener( new FocusListener() { @Override public void focusGained(FocusEvent e) {} @Override public void focusLost(FocusEvent e) { ErrorUtils.showErrorMessage(null); } }); return button; }
@Override protected void firstListenerAdded() { // First time we add a listener to this observableList, we need to hook // up a listener to the masterList, as well as all observable values // we've already created. listener = new Listener(); this.masterList.addListChangeListener(listener); this.masterList.addStaleListener(listener); for (IObservableValue value : this.observableValueList) { value.addValueChangeListener(listener); } }
/** * Create a new detail viewer. * * @param parent the parent composite * @param style the widget style * @param editingDomain the editing domain * @param master the master object for which the details are shown */ protected AbstractDetailViewer( Composite parent, int style, EditingDomain editingDomain, IObservableValue master) { super(parent, style | SWT.V_SCROLL | SWT.H_SCROLL); this.editingDomain = editingDomain; this.master = master; // this.setAlwaysShowScrollBars( true ); dataBindingContext = new DataBindingContext(); // set-up layout GridLayout gridLayout = new GridLayout(1, true); this.setLayout(gridLayout); // create label for detail viewer Label label = new Label(this, SWT.NONE); label.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1)); label.setText(Activator.INSTANCE.getString("_UI_DetailViewer_title") + ":"); // Create composite holding the UI elements of the detailComposite = new Composite(this, SWT.BORDER); detailComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); detailComposite.setLayout(new GridLayout(2, true)); this.setContent(detailComposite); // create UI elements for attributes this.createDetails(); this.setContent(detailComposite); this.setExpandHorizontal(true); this.setExpandVertical(true); master.addValueChangeListener( new IValueChangeListener() { /** Redraw the detail viewer when the master object changes */ @Override public void handleValueChange(ValueChangeEvent event) { Object newValue = event.diff.getNewValue(); AbstractDetailViewer.this.disposeDetails(); // create new ui elements if (newValue != null) { AbstractDetailViewer.this.createDetails(); } // we need this so that the modified content will be drawn detailComposite.layout(); } }); }
protected void bindFields() { if (dataBindingContext != null) { dataBindingContext.dispose(); } dataBindingContext = new EMFDataBindingContext(); if (downloadOnly != null) { if (ModelHelper.getForm(element) instanceof ViewForm) { downloadOnly.setSelection(true); downloadOnly.setEnabled(false); } else { dataBindingContext.bindValue( SWTObservables.observeSelection(downloadOnly), EMFEditObservables.observeValue( editingDomain, element, FormPackage.Literals.FILE_WIDGET__DOWNLOAD_ONLY)); } } dataBindingContext.bindValue( SWTObservables.observeSelection(imagePreview), EMFEditObservables.observeValue( editingDomain, element, FormPackage.Literals.FILE_WIDGET__USE_PREVIEW)); IObservableValue value = EMFObservables.observeValue(element, FormPackage.Literals.DUPLICABLE__DUPLICATE); value.addValueChangeListener( new IValueChangeListener() { public void handleValueChange(ValueChangeEvent arg0) { if (useDocumentButton != null && !useDocumentButton.isDisposed() && element.getInputType() == FileWidgetInputType.DOCUMENT) { useDocumentButton.notifyListeners(SWT.Selection, new Event()); /*}else if(!useResourceButton.isDisposed() && element.getInputType() == FileWidgetInputType.URL){ useURLButton.notifyListeners(SWT.Selection,new Event());*/ } else if (!useResourceButton.isDisposed() && element.getInputType() == FileWidgetInputType.RESOURCE) { useResourceButton.notifyListeners(SWT.Selection, new Event()); } if (inputExpressionViewer != null && !getInputExpressionHint() .equals(inputExpressionViewer.getMessage(IStatus.INFO))) { inputExpressionViewer.setMessage(getInputExpressionHint(), IStatus.INFO); } } }); bindInputExpressionViewer(); bindResourceText(); }
@SuppressWarnings("unchecked") private IValueChangeListener addSelectedConnectionChangedListener( final IObservableValue selectedConnection, final DataBindingContext dbc) { IValueChangeListener listener = new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { onSelectedConnectionChanged(selectedConnection); DataBindingUtils.validateTargetsToModels(dbc); } }; selectedConnection.addValueChangeListener(listener); return listener; }
public void testChange_ValueChangeEventFiredAfterValueIsSet() throws Exception { class ValueChangeListener implements IValueChangeListener { Object value; public void handleValueChange(ValueChangeEvent event) { this.value = event.getObservableValue().getValue(); } } ValueChangeListener listener = new ValueChangeListener(); observable.addValueChangeListener(listener); delegate.change(observable); assertEquals( formatFail( "When a value change event is fired the new value should be applied before firing the change event."), listener.value, observable.getValue()); }
public void testDisposeWhileFiringEvents() { IObservableValue master = new WritableValue(); WritableListFactory factory = new WritableListFactory(); master.setValue(""); final IObservableList[] detailObservable = new IObservableList[1]; master.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { detailObservable[0].dispose(); } }); detailObservable[0] = MasterDetailObservables.detailList(master, factory, null); master.setValue("New Value"); }
@Override protected void establishViewModelBinding() { IObservableValue textValue = SWTObservables.observeText(control); textValue.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(final ValueChangeEvent event) { try { V viewValue = fromString((String) event.diff.getNewValue()); V modelValue = getModelValue(); if (isChangeWithNullChecks(modelValue, viewValue)) { setModelValue(viewValue); } } catch (IllegalArgumentException e) {; // expected } } }); }
private void createImportModelControl(final Composite parent) { final Label label = new Label(parent, SWT.NONE); label.setText(Messages.getString("ImportAttachmentsPreviewPage.7")); // $NON-NLS-1$ final ComboViewer viewer = new ComboViewer(parent, SWT.DROP_DOWN | SWT.READ_ONLY); viewer.setContentProvider(new ArrayContentProvider()); viewer.setLabelProvider(new LabelProvider()); viewer.setInput(ImportMode.values()); final IViewerObservableValue target = ViewersObservables.observeSinglePostSelection(viewer); final IObservableValue model = BeansObservables.observeValue(m_data, DocumentsAttachmentsData.PROPERTY_IMPORT_MODE); m_binding.bindValue(target, model); // TRICKY: we need to refresh the table when the import mode changes, in order // to show the gray state correctly model.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(final ValueChangeEvent event) { handleImportModeChanged(); } }); }
@SuppressWarnings({"unchecked", "rawtypes"}) @Override protected void doCreateControls(final Composite parent, DataBindingContext dbc) { GridLayoutFactory.fillDefaults().numColumns(3).margins(10, 10).applyTo(parent); // userdoc link (JBIDE-20401) this.userdocLink = new StyledText(parent, SWT.WRAP); // text set in #showHideUserdocLink GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(3, 1).applyTo(userdocLink); showHideUserdocLink(); IObservableValue userdocUrlObservable = BeanProperties.value(ConnectionWizardPageModel.PROPERTY_USERDOCURL).observe(pageModel); StyledTextUtils.emulateLinkAction(userdocLink, r -> onUserdocLinkClicked(userdocUrlObservable)); userdocUrlObservable.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { showHideUserdocLink(); } }); IObservableValue connectionFactoryObservable = BeanProperties.value(ConnectionWizardPageModel.PROPERTY_CONNECTION_FACTORY) .observe(pageModel); // filler Label fillerLabel = new Label(parent, SWT.NONE); GridDataFactory.fillDefaults().span(3, 3).hint(SWT.DEFAULT, 6).applyTo(fillerLabel); // existing connections combo Label connectionLabel = new Label(parent, SWT.NONE); connectionLabel.setText("Connection:"); GridDataFactory.fillDefaults() .align(SWT.LEFT, SWT.CENTER) .hint(100, SWT.DEFAULT) .applyTo(connectionLabel); Combo connectionCombo = new Combo(parent, SWT.DEFAULT); GridDataFactory.fillDefaults() .span(2, 1) .align(SWT.FILL, SWT.CENTER) .grab(true, false) .applyTo(connectionCombo); ComboViewer connectionComboViewer = new ComboViewer(connectionCombo); connectionComboViewer.setContentProvider(ArrayContentProvider.getInstance()); connectionComboViewer.setLabelProvider(new ConnectionColumLabelProvider()); connectionComboViewer.setInput(pageModel.getAllConnections()); Binding selectedConnectionBinding = ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(connectionComboViewer)) .validatingAfterGet( new IsNotNullValidator( ValidationStatus.cancel("You have to select or create a new connection."))) .to( BeanProperties.value( ConnectionWizardPageModel.PROPERTY_SELECTED_CONNECTION, IConnection.class) .observe(pageModel)) .in(dbc); ControlDecorationSupport.create( selectedConnectionBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater()); // server type Label connectionFactoryLabel = new Label(parent, SWT.NONE); connectionFactoryLabel.setText("Server type:"); GridDataFactory.fillDefaults() .align(SWT.LEFT, SWT.CENTER) .hint(100, SWT.DEFAULT) .applyTo(connectionFactoryLabel); Combo connectionFactoryCombo = new Combo(parent, SWT.DEFAULT); GridDataFactory.fillDefaults() .span(2, 1) .align(SWT.FILL, SWT.CENTER) .grab(true, false) .applyTo(connectionFactoryCombo); ComboViewer connectionFactoriesViewer = new ComboViewer(connectionFactoryCombo); connectionFactoriesViewer.setContentProvider(ArrayContentProvider.getInstance()); connectionFactoriesViewer.setLabelProvider( new ColumnLabelProvider() { @Override public String getText(Object element) { if (!(element instanceof IConnectionFactory)) { return element.toString(); } else { return ((IConnectionFactory) element).getName(); } } }); connectionFactoriesViewer.setInput(pageModel.getAllConnectionFactories()); final IViewerObservableValue selectedServerType = ViewerProperties.singleSelection().observe(connectionFactoriesViewer); ValueBindingBuilder.bind(selectedServerType).to(connectionFactoryObservable).in(dbc); // server Button useDefaultServerCheckbox = new Button(parent, SWT.CHECK); useDefaultServerCheckbox.setText("Use default server"); GridDataFactory.fillDefaults() .span(3, 1) .align(SWT.FILL, SWT.FILL) .applyTo(useDefaultServerCheckbox); ValueBindingBuilder.bind(WidgetProperties.selection().observe(useDefaultServerCheckbox)) .to( BeanProperties.value( ConnectionWizardPageModel.PROPERTY_USE_DEFAULT_HOST, IConnection.class) .observe(pageModel)) .in(dbc); IObservableValue hasDefaultHostObservable = BeanProperties.value(ConnectionWizardPageModel.PROPERTY_HAS_DEFAULT_HOST) .observe(pageModel); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(useDefaultServerCheckbox)) .notUpdating(hasDefaultHostObservable) .in(dbc); Label serverLabel = new Label(parent, SWT.NONE); serverLabel.setText("Server:"); GridDataFactory.fillDefaults() .align(SWT.LEFT, SWT.CENTER) .hint(100, SWT.DEFAULT) .applyTo(serverLabel); Combo serversCombo = new Combo(parent, SWT.BORDER); ComboViewer serversViewer = new ComboViewer(serversCombo); serversViewer.setContentProvider(new ObservableListContentProvider()); serversViewer.setInput( BeanProperties.list(ConnectionWizardPageModel.PROPERTY_ALL_HOSTS).observe(pageModel)); GridDataFactory.fillDefaults() .align(SWT.FILL, SWT.FILL) .grab(true, false) .applyTo(serversCombo); final IObservableValue serverUrlObservable = WidgetProperties.text().observe(serversCombo); serversCombo.addFocusListener(onServerFocusLost(serverUrlObservable)); ValueBindingBuilder.bind(serverUrlObservable) .converting(new TrimTrailingSlashConverter()) .to(BeanProperties.value(ConnectionWizardPageModel.PROPERTY_HOST).observe(pageModel)) .in(dbc); MultiValidator serverUrlValidator = new MultiValidator() { @Override protected IStatus validate() { Object value = serverUrlObservable.getValue(); if (!(value instanceof String) || StringUtils.isEmpty((String) value)) { return ValidationStatus.cancel("Please provide an OpenShift server url."); } else if (!UrlUtils.isValid((String) value)) { return ValidationStatus.error("Please provide a valid OpenShift server url."); } return ValidationStatus.ok(); } }; ControlDecorationSupport.create( serverUrlValidator, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater()); dbc.addValidationStatusProvider(serverUrlValidator); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(serversCombo)) .notUpdatingParticipant() .to( BeanProperties.value(ConnectionWizardPageModel.PROPERTY_USE_DEFAULT_HOST) .observe(pageModel)) .converting(new InvertingBooleanConverter()) .in(dbc); // connect error dbc.addValidationStatusProvider( new MultiValidator() { IObservableValue observable = BeanProperties.value( ConnectionWizardPageModel.PROPERTY_CONNECTED_STATUS, IStatus.class) .observe(pageModel); @Override protected IStatus validate() { return (IStatus) observable.getValue(); } }); // connection editors Group authenticationDetailsGroup = new Group(parent, SWT.NONE); authenticationDetailsGroup.setText("Authentication"); GridDataFactory.fillDefaults() .align(SWT.FILL, SWT.FILL) .span(3, 1) .applyTo(authenticationDetailsGroup); GridLayoutFactory.fillDefaults().margins(0, 0).applyTo(authenticationDetailsGroup); // additional nesting required because of https://bugs.eclipse.org/bugs/show_bug.cgi?id=478618 Composite authenticationDetailsContainer = new Composite(authenticationDetailsGroup, SWT.None); GridDataFactory.fillDefaults() .align(SWT.FILL, SWT.FILL) .grab(true, true) .applyTo(authenticationDetailsContainer); this.connectionEditors = new ConnectionEditorsStackedView( connectionFactoryObservable, this, authenticationDetailsContainer, dbc); connectionEditors.createControls(); // adv editors Composite advEditorContainer = new Composite(parent, SWT.NONE); GridLayoutFactory.fillDefaults().margins(0, 0).applyTo(authenticationDetailsGroup); GridDataFactory.fillDefaults() .align(SWT.FILL, SWT.FILL) .span(3, 1) .grab(true, true) .applyTo(advEditorContainer); this.advConnectionEditors = new AdvancedConnectionEditorsStackedView( connectionFactoryObservable, pageModel, advEditorContainer, dbc); advConnectionEditors.createControls(); }
@Override public void createPartControl(Composite parent) { detailsViewerFlyout = new FlyoutControlComposite(parent, SWT.NONE, detailsViewerFlyoutPreferences); detailsViewerFlyout.setTitleText("Details / Filters"); detailsViewerFlyout.setValidDockLocations(IFlyoutPreferences.DOCK_EAST); patternsViewerFlyout = new FlyoutControlComposite( detailsViewerFlyout.getClientParent(), SWT.NONE, patternsViewerFlyoutPreferences); patternsViewerFlyout.setTitleText("Pattern registry"); patternsViewerFlyout.setValidDockLocations(IFlyoutPreferences.DOCK_WEST); matcherTreeViewer = new TreeViewer(patternsViewerFlyout.getClientParent()); detailsTableViewer = new TableViewer(detailsViewerFlyout.getFlyoutParent(), SWT.FULL_SELECTION); // matcherTreeViewer configuration matcherTreeViewer.setContentProvider( new ObservableListTreeContentProvider( new QueryExplorerObservableFactory(), new QueryExplorerTreeStructureAdvisor())); matcherTreeViewer.setLabelProvider(new QueryExplorerLabelProvider()); matcherTreeViewer.setInput(treeViewerRootContent); treeViewerRootContent.setViewer(matcherTreeViewer); ColumnViewerToolTipSupport.enableFor(matcherTreeViewer); matcherTreeViewer.setComparator(null); IObservableValue selection = ViewersObservables.observeSingleSelection(matcherTreeViewer); selection.addValueChangeListener(new RootContentSelectionChangeListener()); DoubleClickListener listener = new DoubleClickListener(); injector.injectMembers(listener); matcherTreeViewer.addDoubleClickListener(listener); // patternsViewer configuration patternsTreeViewer = new CheckboxTreeViewer( patternsViewerFlyout.getFlyoutParent(), SWT.CHECK | SWT.BORDER | SWT.MULTI); patternsTreeViewer.addCheckStateListener(new CheckStateListener()); setPackagePresentation(mementoPackagePresentation, false); patternsTreeViewer.setInput(patternsViewerInput); // Create menu manager. MenuManager matcherTreeViewerMenuManager = new MenuManager(); matcherTreeViewerMenuManager.setRemoveAllWhenShown(true); matcherTreeViewerMenuManager.addMenuListener( new IMenuListener() { @Override public void menuAboutToShow(IMenuManager mgr) { fillContextMenu(mgr); } }); // Create menu for tree viewer Menu matcherTreeViewerMenu = matcherTreeViewerMenuManager.createContextMenu(matcherTreeViewer.getControl()); matcherTreeViewer.getControl().setMenu(matcherTreeViewerMenu); getSite() .registerContextMenu( "org.eclipse.incquery.tooling.ui.queryexplorer.QueryExplorer.treeViewerMenu", matcherTreeViewerMenuManager, matcherTreeViewer); MenuManager patternsViewerMenuManager = new MenuManager(); patternsViewerMenuManager.setRemoveAllWhenShown(true); patternsViewerMenuManager.addMenuListener( new IMenuListener() { @Override public void menuAboutToShow(IMenuManager mgr) { fillContextMenu(mgr); } }); // Create menu for patterns viewer Menu patternsViewerMenu = patternsViewerMenuManager.createContextMenu(patternsTreeViewer.getControl()); patternsTreeViewer.getControl().setMenu(patternsViewerMenu); getSite() .registerContextMenu( "org.eclipse.incquery.tooling.ui.queryexplorer.QueryExplorer.patternsViewerMenu", patternsViewerMenuManager, patternsTreeViewer); // tableView configuration Table table = detailsTableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); GridData gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 2; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL; detailsTableViewer.getControl().setLayoutData(gridData); // Focus listening and selection providing getSite().setSelectionProvider(matcherTreeViewer); // removed listener due to new attach feature in // https://bugs.eclipse.org/bugs/show_bug.cgi?id=429858 // initFileListener(); initPatternsViewerWithGeneratedPatterns(); }
private DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue btnCaseSensitiveObserveSelectionObserveWidget = SWTObservables.observeSelection(btnCaseSensitive); IObservableValue ecgModelCaseSensitiveObserveValue = PojoObservables.observeValue(ecgModel, "caseSensitive"); // $NON-NLS-1$ bindingContext.bindValue( btnCaseSensitiveObserveSelectionObserveWidget, ecgModelCaseSensitiveObserveValue, null, null); // IObservableValue btnRegualrExpressionObserveSelectionObserveWidget = SWTObservables.observeSelection(btnRegualarExpression); IObservableValue ecgModelRegularExpressionObserveValue = PojoObservables.observeValue(ecgModel, "regularExpression"); // $NON-NLS-1$ bindingContext.bindValue( btnRegualrExpressionObserveSelectionObserveWidget, ecgModelRegularExpressionObserveValue, null, null); // IObservableValue containingTextObserveTextObserveWidget = SWTObservables.observeSelection(containingText); IObservableValue ecgModelSearchStringObserveValue = PojoObservables.observeValue(ecgModel, "searchString"); // $NON-NLS-1$ bindingContext.bindValue( containingTextObserveTextObserveWidget, ecgModelSearchStringObserveValue, null, null); // IObservableValue containingEndTextObserveTextObserveWidget = SWTObservables.observeSelection(containingEndText); IObservableValue ecgModelSearchEndStringObserveValue = PojoObservables.observeValue(ecgModel, "searchEndString"); // $NON-NLS-1$ bindingContext.bindValue( containingEndTextObserveTextObserveWidget, ecgModelSearchEndStringObserveValue, null, null); // IObservableValue consoleListObserveSelectionObserveWidget = SWTObservables.observeSelection(consoleList); IObservableValue ecgModelSourceObserveValue = PojoObservables.observeValue(ecgModel, "source"); // $NON-NLS-1$ UpdateValueStrategy name2TextConsoleStrategy = new UpdateValueStrategy(); name2TextConsoleStrategy.setConverter(new Name2TextConsoleConverter()); UpdateValueStrategy textConsole2NameStrategy = new UpdateValueStrategy(); textConsole2NameStrategy.setConverter(new TextConsole2NameConverter()); bindingContext.bindValue( consoleListObserveSelectionObserveWidget, ecgModelSourceObserveValue, name2TextConsoleStrategy, textConsole2NameStrategy); // Listener for update dispose-state ecgModelSourceObserveValue.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { // when we change back to the origin source console we must set the origin disposal // state if (ecgModelOrig.getSource() == ecgModel.getSource()) { ecgModel.setSourceDisposed(ecgModelOrig.isSourceDisposed()); } else { ecgModel.setSourceDisposed(false); } } }); // IObservableValue btnNotMatchingObserveSelectionObserveWidget = SWTObservables.observeSelection(btnNotMatching); IObservableValue ecgModelNotMatchingObserveValue = PojoObservables.observeValue(ecgModel, "notMatching"); // $NON-NLS-1$ bindingContext.bindValue( btnNotMatchingObserveSelectionObserveWidget, ecgModelNotMatchingObserveValue, null, null); // IObservableValue btnWholeWordObserveSelectionObserveWidget = SWTObservables.observeSelection(btnWholeWord); IObservableValue ecgModelWholeWordObserveValue = PojoObservables.observeValue(ecgModel, "wholeWord"); // $NON-NLS-1$ bindingContext.bindValue( btnWholeWordObserveSelectionObserveWidget, ecgModelWholeWordObserveValue, null, null); // IObservableValue btnSetEndMarkerObserveSelectionObserveWidget = SWTObservables.observeSelection(btnSetEndMarker); IObservableValue ecgModelRangeMatchingObserveValue = PojoObservables.observeValue(ecgModel, "rangeMatching"); // $NON-NLS-1$ bindingContext.bindValue( btnSetEndMarkerObserveSelectionObserveWidget, ecgModelRangeMatchingObserveValue, null, null); // // ecgModelRangeMatchingObserveValue.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { updateRangeMatchingArrangement(); } }); // ecgModelRegularExpressionObserveValue.addValueChangeListener( new IValueChangeListener() { @Override public void handleValueChange(ValueChangeEvent event) { updateLblText(); } }); return bindingContext; }