Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/DataBindingContext.java26
-rw-r--r--bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ListBinding.java24
-rw-r--r--bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValueBinding.java20
-rw-r--r--examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java2
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/DatabindingContextTest.java100
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/observable/value/WritableValueTest.java13
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/util/EventTrackers.java45
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/ValueBindingTest_Policies.java40
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/beans/JavaBeanObservableValueTest.java16
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java45
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/provisional/viewers/SelectionObservableValueTest.java15
11 files changed, 210 insertions, 136 deletions
diff --git a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/DataBindingContext.java b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/DataBindingContext.java
index 2f1684a2..6d3b8a05 100644
--- a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/DataBindingContext.java
+++ b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/DataBindingContext.java
@@ -162,9 +162,20 @@ public class DataBindingContext {
if (bindSpec == null) {
bindSpec = new DefaultBindSpec();
}
- Binding result = new ValueBinding(targetObservableValue,
+ ValueBinding result = new ValueBinding(targetObservableValue,
modelObservableValue, bindSpec);
result.init(this);
+
+ Integer position = result.getTargetChangeModelPipelinePosition();
+ if (position != null) {
+ if (position.intValue() == BindingEvent.PIPELINE_AFTER_CHANGE) {
+ //we don't want to update the model
+ position = new Integer(BindingEvent.PIPELINE_BEFORE_CHANGE);
+ }
+
+ result.updateModelFromTarget(position.intValue());
+ }
+
return result;
}
@@ -221,9 +232,20 @@ public class DataBindingContext {
if (bindSpec == null) {
bindSpec = new DefaultBindSpec();
}
- Binding result = new ListBinding(targetObservableList,
+ ListBinding result = new ListBinding(targetObservableList,
modelObservableList, bindSpec);
result.init(this);
+
+ Integer position = result.getTargetChangeModelPipelinePosition();
+ if (position != null) {
+ if (position.intValue() == BindingEvent.PIPELINE_AFTER_CHANGE) {
+ //we don't want to copy the value to the model
+ position = new Integer(BindingEvent.PIPELINE_BEFORE_CHANGE);
+ }
+
+ result.updateModelFromTarget(position.intValue());
+ }
+
return result;
}
diff --git a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ListBinding.java b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ListBinding.java
index e80bcc04..d2e394c4 100644
--- a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ListBinding.java
+++ b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ListBinding.java
@@ -75,7 +75,7 @@ public class ListBinding extends Binding {
fillBindSpecDefaults(bindSpec, targetList, modelList);
if (bindSpec.isUpdateModel()) {
- int stopPosition = getValidationPolicy(bindSpec
+ int stopPosition = calculateValidationPolicy(bindSpec
.getModelUpdatePolicy(), bindSpec.getTargetValidatePolicy());
targetList
.addListChangeListener(targetChangeListener = new ChangeListener(
@@ -85,9 +85,11 @@ public class ListBinding extends Binding {
}
if (bindSpec.isUpdateTarget()) {
- int stopPosition = getValidationPolicy(
- bindSpec.getTargetUpdatePolicy(), bindSpec
- .getModelValidatePolicy());
+ int stopPosition = calculateValidationPolicy(bindSpec
+ .getTargetUpdatePolicy(), bindSpec.getModelValidatePolicy());
+
+ targetChangeModelPipelinePosition = new Integer(stopPosition);
+
modelList
.addListChangeListener(modelChangeListener = new ChangeListener(
BindingEvent.EVENT_COPY_TO_TARGET, stopPosition));
@@ -265,6 +267,11 @@ public class ListBinding extends Binding {
private WritableValue validationErrorObservable;
+ /**
+ * Pipeline position that validation will run up to when the target changes.
+ */
+ private Integer targetChangeModelPipelinePosition;
+
public void updateTargetFromModel() {
updateTargetFromModel(BindingEvent.PIPELINE_AFTER_CHANGE);
}
@@ -330,7 +337,7 @@ public class ListBinding extends Binding {
updateTargetFromModel();
}
- private static int getValidationPolicy(Integer updatePolicy,
+ private static int calculateValidationPolicy(Integer updatePolicy,
Integer validationPolicy) {
int pipelineStop = BindingEvent.PIPELINE_AFTER_CHANGE;
@@ -341,4 +348,11 @@ public class ListBinding extends Binding {
return pipelineStop;
}
+
+ /**
+ * @return position that will be validated up to when the target changes, can be <code>null</code>
+ */
+ public Integer getTargetChangeModelPipelinePosition() {
+ return targetChangeModelPipelinePosition;
+ }
} \ No newline at end of file
diff --git a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValueBinding.java b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValueBinding.java
index 1b7556ff..c4015b7c 100644
--- a/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValueBinding.java
+++ b/bundles/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValueBinding.java
@@ -66,6 +66,11 @@ public class ValueBinding extends Binding {
new Integer(BindingEvent.PIPELINE_BEFORE_CHANGE) };
/**
+ * Pipeline position that validation will run up to when the target changes.
+ */
+ private Integer targetChangeModelPipelinePosition;
+
+ /**
* @param target
* @param model
* @param bindSpec
@@ -94,7 +99,7 @@ public class ValueBinding extends Binding {
"Missing model to target converter from " + model.getValueType() + " to " + target.getValueType()); //$NON-NLS-1$ //$NON-NLS-2$
}
- int pipelineStop = getValidationPolicy(bindSpec
+ int pipelineStop = calculateValidationPolicy(bindSpec
.getTargetUpdatePolicy(), bindSpec.getModelValidatePolicy());
model
@@ -108,13 +113,15 @@ public class ValueBinding extends Binding {
"Missing target to model converter from " + target.getValueType() + " to " + model.getValueType()); //$NON-NLS-1$ //$NON-NLS-2$
}
- int pipelineStop = getValidationPolicy(bindSpec
+ int pipelineStop = calculateValidationPolicy(bindSpec
.getModelUpdatePolicy(), bindSpec.getTargetValidatePolicy());
target
.addValueChangeListener(targetChangeListener = new TargetChangeListener(
pipelineStop));
+ targetChangeModelPipelinePosition = new Integer(pipelineStop);
+
if (target instanceof IVetoableValue) {
((IVetoableValue) target)
.addValueChangingListener(targetChangingListener);
@@ -422,7 +429,7 @@ public class ValueBinding extends Binding {
}
}
- private static int getValidationPolicy(Integer updatePolicy,
+ private static int calculateValidationPolicy(Integer updatePolicy,
Integer validationPolicy) {
int pipelineStop = BindingEvent.PIPELINE_AFTER_CHANGE;
@@ -433,4 +440,11 @@ public class ValueBinding extends Binding {
return pipelineStop;
}
+
+ /**
+ * @return position that will be validated up to when the target changes, can be <code>null</code>
+ */
+ public Integer getTargetChangeModelPipelinePosition() {
+ return targetChangeModelPipelinePosition;
+ }
}
diff --git a/examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java b/examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java
index 2ec268fd..c676ebbc 100644
--- a/examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java
+++ b/examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java
@@ -62,8 +62,6 @@ public class Snippet004DataBindingContextErrorLabel {
dbc.bindValue(SWTObservables.observeText(text, SWT.Modify),
value, new DefaultBindSpec().addTargetValidator(
BindingEvent.PIPELINE_AFTER_CONVERT,
- new FiveValidator()).addModelValidator(
- BindingEvent.PIPELINE_AFTER_CONVERT,
new FiveValidator()));
// Bind the error label to the validation error on the dbc.
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/DatabindingContextTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/DatabindingContextTest.java
index b2b57bfb..cd695704 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/DatabindingContextTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/DatabindingContextTest.java
@@ -21,25 +21,51 @@ import org.eclipse.core.databinding.Binding;
import org.eclipse.core.databinding.BindingEvent;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.DefaultBindSpec;
-import org.eclipse.core.databinding.observable.ChangeEvent;
-import org.eclipse.core.databinding.observable.IChangeListener;
+import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.core.databinding.observable.map.IObservableMap;
import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.core.databinding.observable.value.WritableValue;
import org.eclipse.core.databinding.validation.IValidator;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.internal.databinding.ListBinding;
import org.eclipse.core.internal.databinding.ValueBinding;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ChangeEventTracker;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ValueChangeEventTracker;
public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
- public void testDisposeBindings() throws Exception {
- DataBindingContext dbc = new DataBindingContext();
+ private DataBindingContext dbc;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase#setUp()
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ dbc = new DataBindingContext();
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase#tearDown()
+ */
+ protected void tearDown() throws Exception {
+ if (dbc != null) {
+ Realm.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ dbc.dispose();
+ }
+ });
+ }
+ super.tearDown();
+ }
+
+ public void testDisposeBindings() throws Exception {
Binding binding = new BindingStub();
binding.init(dbc);
@@ -50,7 +76,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
}
public void testBindValue() throws Exception {
- DataBindingContext dbc = new DataBindingContext();
IObservableValue target = WritableValue.withValueType(String.class);
IObservableValue model = WritableValue.withValueType(String.class);
@@ -60,7 +85,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
}
public void testBindList() throws Exception {
- DataBindingContext dbc = new DataBindingContext();
IObservableList target = WritableList.withElementType(Object.class);
IObservableList model = WritableList.withElementType(Object.class);
@@ -80,9 +104,8 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
WritableValue modelObservable = WritableValue.withValueType(String.class);
final String errorMessage = "error";
- DataBindingContext dbc = new DataBindingContext();
- ValueChangeCounter errorCounter = new ValueChangeCounter();
- ChangeCounter errorsCounter = new ChangeCounter();
+ ValueChangeEventTracker errorCounter = new ValueChangeEventTracker();
+ ChangeEventTracker errorsCounter = new ChangeEventTracker();
IObservableValue error = new AggregateValidationStatus(dbc
.getBindings(), AggregateValidationStatus.MAX_SEVERITY);
@@ -124,7 +147,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
WritableValue targetValue = WritableValue.withValueType(String.class);
WritableValue modelValue = WritableValue.withValueType(String.class);
- DataBindingContext dbc = new DataBindingContext();
assertNotNull(dbc.getBindings());
assertEquals(0, dbc.getBindings().size());
@@ -147,7 +169,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
Object.class);
WritableList modelList = new WritableList(new ArrayList(), Object.class);
- DataBindingContext dbc = new DataBindingContext();
assertNotNull(dbc.getBindings());
assertEquals(0, dbc.getBindings().size());
@@ -159,7 +180,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
}
public void testGetBindingsImmutability() throws Exception {
- DataBindingContext dbc = new DataBindingContext();
BindingStub binding = new BindingStub();
binding.init(dbc);
@@ -172,7 +192,6 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
public void testRemoveBinding() throws Exception {
BindingStub binding = new BindingStub();
- DataBindingContext dbc = new DataBindingContext();
binding.init(dbc);
assertTrue("context should contain the binding", dbc.getBindings()
@@ -183,30 +202,51 @@ public class DatabindingContextTest extends AbstractDefaultRealmTestCase {
}
/**
- * {@link IValueChangeListener} implementation that counts the times
- * handleValueChange(...) is invoked.
+ * Asserts that when a ValueBinding is created validation is ran to ensure
+ * that the validation status of the Binding reflects the validity of the
+ * value in the target.
*
- * @since 3.2
+ * @throws Exception
*/
- private static class ValueChangeCounter implements IValueChangeListener {
- int count;
-
- public void handleValueChange(ValueChangeEvent event) {
- count++;
+ public void testValidateTargetAfterValueBindingCreation() throws Exception {
+ WritableValue target = new WritableValue("", String.class);
+ WritableValue model = new WritableValue("2", String.class);
+ class Validator implements IValidator {
+ public IStatus validate(Object value) {
+ return ValidationStatus.error("error");
+ }
}
+
+ ValueBinding binding = (ValueBinding) dbc.bindValue(target, model,
+ new DefaultBindSpec().addTargetValidator(
+ BindingEvent.PIPELINE_AFTER_CONVERT, new Validator()));
+
+ assertEquals(IStatus.ERROR, ((IStatus) binding.getValidationStatus()
+ .getValue()).getSeverity());
}
/**
- * {@link IChangeListener} implementation that counts the times
- * handleChange(...) is invoked.
+ * Asserts that when a ListBinding is created validation is ran to ensure
+ * that the validation status of the Binding reflects the validity of the
+ * value in the target.
*
+ * @throws Exception
*/
- private static class ChangeCounter implements IChangeListener {
- int count;
-
- public void handleChange(ChangeEvent event) {
- count++;
+ public void testValidateTargetAfterListBindingCreation() throws Exception {
+ WritableList target = new WritableList();
+ WritableList model = new WritableList();
+
+ class Validator implements IValidator {
+ public IStatus validate(Object value) {
+ return ValidationStatus.error("error");
+ }
}
+
+ Binding binding = dbc.bindList(target, model, new DefaultBindSpec()
+ .addTargetValidator(BindingEvent.PIPELINE_AFTER_GET,
+ new Validator()));
+
+ assertEquals(IStatus.ERROR, ((IStatus) binding.getValidationStatus().getValue()).getSeverity());
}
private static class BindingStub extends Binding {
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/observable/value/WritableValueTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/observable/value/WritableValueTest.java
index ea7e4fb7..bfc3528a 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/observable/value/WritableValueTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/observable/value/WritableValueTest.java
@@ -13,11 +13,10 @@
package org.eclipse.jface.tests.databinding.observable.value;
import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.core.databinding.observable.value.WritableValue;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ValueChangeEventTracker;
import org.eclipse.swt.widgets.Display;
/**
@@ -31,7 +30,7 @@ public class WritableValueTest extends AbstractDefaultRealmTestCase {
*/
public void testValueChangeOnlyFiresOnChange() throws Exception {
WritableValue writableValue = new WritableValue();
- ValueChangeCounter counter = new ValueChangeCounter();
+ ValueChangeEventTracker counter = new ValueChangeEventTracker();
writableValue.addValueChangeListener(counter);
assertEquals(0, counter.count);
@@ -79,12 +78,4 @@ public class WritableValueTest extends AbstractDefaultRealmTestCase {
assertEquals(Realm.getDefault(), value.getRealm());
assertEquals(elementType, value.getValueType());
}
-
- private static class ValueChangeCounter implements IValueChangeListener {
- int count;
-
- public void handleValueChange(ValueChangeEvent event) {
- count++;
- }
- }
}
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/util/EventTrackers.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/util/EventTrackers.java
new file mode 100644
index 00000000..3624b5d3
--- /dev/null
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/util/EventTrackers.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.jface.tests.databinding.util;
+
+import org.eclipse.core.databinding.observable.ChangeEvent;
+import org.eclipse.core.databinding.observable.IChangeListener;
+import org.eclipse.core.databinding.observable.value.IValueChangeListener;
+import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
+
+/**
+ * Implementations of change listeners that keep track of the number of times an
+ * event fires.
+ *
+ * @since 1.1
+ */
+public class EventTrackers {
+ public static class ChangeEventTracker implements IChangeListener {
+ public int count;
+ public ChangeEvent event;
+
+ public void handleChange(ChangeEvent event) {
+ count++;
+ this.event = event;
+ }
+ }
+
+ public static class ValueChangeEventTracker implements IValueChangeListener {
+ public int count;
+ public ValueChangeEvent event;
+
+ public void handleValueChange(ValueChangeEvent event) {
+ count++;
+ this.event = event;
+ }
+ }
+}
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/ValueBindingTest_Policies.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/ValueBindingTest_Policies.java
index f76e6abe..21127f65 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/ValueBindingTest_Policies.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/ValueBindingTest_Policies.java
@@ -22,7 +22,7 @@ import org.eclipse.jface.tests.internal.databinding.internal.Pipeline.TrackLastL
/**
* Asserts the policies of ValueBinding.
*
- * @since 3.2
+ * @since 1.1
*/
public class ValueBindingTest_Policies extends AbstractDefaultRealmTestCase {
private WritableValue target;
@@ -50,22 +50,27 @@ public class ValueBindingTest_Policies extends AbstractDefaultRealmTestCase {
}
public void testModelUpdatePolicyAutomatic() throws Exception {
- new ValueBinding(target, model, new BindSpec()
- .setModelUpdatePolicy(BindSpec.POLICY_AUTOMATIC)).init(dbc);
- target.setValue("1");
- assertEquals("should be automatic", target.getValue(), model.getValue());
+ ValueBinding binding = new ValueBinding(target, model, new BindSpec()
+ .setModelUpdatePolicy(BindSpec.POLICY_AUTOMATIC));
+ binding.init(dbc);
+ assertEquals(BindingEvent.PIPELINE_AFTER_CHANGE, binding.getTargetChangeModelPipelinePosition().intValue());
}
public void testModelUpdatePolicyExplicit() throws Exception {
+ int position = BindingEvent.PIPELINE_AFTER_GET;
ValueBinding binding = new ValueBinding(target, model, new BindSpec()
- .setTargetUpdatePolicy(BindSpec.POLICY_EXPLICIT));
+ .setModelUpdatePolicy(BindSpec.POLICY_EXPLICIT).setTargetValidatePolicy(new Integer(position)));
binding.init(dbc);
- model.setValue("1");
- assertFalse(model.getValue().equals(target.getValue()));
+ assertEquals(position, binding.getTargetChangeModelPipelinePosition().intValue());
+ }
+
+ public void testModelUpdatePolicyExplicitDefault() throws Exception {
+ ValueBinding binding = new ValueBinding(target, model, new BindSpec()
+ .setModelUpdatePolicy(BindSpec.POLICY_EXPLICIT));
+ binding.init(dbc);
- binding.updateTargetFromModel();
- assertEquals(model.getValue(), target.getValue());
+ assertEquals(BindingEvent.PIPELINE_AFTER_CONVERT, binding.getTargetChangeModelPipelinePosition().intValue());
}
public void testTargetUpdatePolicyNull() throws Exception {
@@ -116,19 +121,4 @@ public class ValueBindingTest_Policies extends AbstractDefaultRealmTestCase {
assertFalse(target.getValue().equals(model.getValue()));
assertEquals("last position", position, listener.lastPosition);
}
-
- public void testModelUpdatePolicyExplicitValidationDefault()
- throws Exception {
- TrackLastListener listener = new TrackLastListener();
-
- ValueBinding binding = new ValueBinding(target, model, new BindSpec()
- .setModelUpdatePolicy(BindSpec.POLICY_EXPLICIT));
- binding.init(dbc);
-
- binding.addBindingEventListener(listener);
- target.setValue("");
-
- assertEquals("default validation position",
- BindingEvent.PIPELINE_AFTER_CONVERT, listener.lastPosition);
- }
}
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/beans/JavaBeanObservableValueTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/beans/JavaBeanObservableValueTest.java
index 91464249..bbfd70c2 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/beans/JavaBeanObservableValueTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/beans/JavaBeanObservableValueTest.java
@@ -15,10 +15,9 @@ package org.eclipse.jface.tests.internal.databinding.internal.beans;
import java.beans.PropertyDescriptor;
import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.core.internal.databinding.internal.beans.JavaBeanObservableValue;
import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ValueChangeEventTracker;
/**
* @since 3.2
@@ -58,12 +57,12 @@ public class JavaBeanObservableValueTest extends AbstractDefaultRealmTestCase {
public void testRegistersListenerAfterFirstListenerIsAdded() throws Exception {
assertFalse(bean.changeSupport.hasListeners(propertyName));
- observableValue.addValueChangeListener(new ValueChangeListener());
+ observableValue.addValueChangeListener(new ValueChangeEventTracker());
assertTrue(bean.changeSupport.hasListeners(propertyName));
}
public void testRemovesListenerAfterLastListenerIsRemoved() throws Exception {
- ValueChangeListener listener = new ValueChangeListener();
+ ValueChangeEventTracker listener = new ValueChangeEventTracker();
observableValue.addValueChangeListener(listener);
assertTrue(bean.changeSupport.hasListeners(propertyName));
@@ -72,18 +71,11 @@ public class JavaBeanObservableValueTest extends AbstractDefaultRealmTestCase {
}
public void testFiresValueChangeEvents() throws Exception {
- ValueChangeListener listener = new ValueChangeListener();
+ ValueChangeEventTracker listener = new ValueChangeEventTracker();
observableValue.addValueChangeListener(listener);
assertEquals(0, listener.count);
bean.setValue(bean.getValue() + bean.getValue());
assertEquals(1, listener.count);
}
-
- static class ValueChangeListener implements IValueChangeListener {
- int count;
- public void handleValueChange(ValueChangeEvent event) {
- count++;
- }
- }
}
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java
index b9e6b20b..6de9f335 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java
@@ -13,12 +13,9 @@ package org.eclipse.jface.tests.internal.databinding.internal.viewers;
import junit.framework.TestCase;
-import org.eclipse.core.databinding.observable.IObservable;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
-import org.eclipse.core.databinding.observable.value.ValueDiff;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.internal.databinding.internal.viewers.SelectionProviderSingleSelectionObservableValue;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ValueChangeEventTracker;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
@@ -83,52 +80,32 @@ public class SelectionProviderSingleSelectionObservableValueTest extends TestCas
SelectionProviderSingleSelectionObservableValue observable = new SelectionProviderSingleSelectionObservableValue(
SWTObservables.getRealm(Display.getDefault()),
selectionProvider);
- ChangeListener listener = new ChangeListener();
+ ValueChangeEventTracker listener = new ValueChangeEventTracker();
observable.addValueChangeListener(listener);
assertNull(observable.getValue());
selectionProvider.setSelection(new StructuredSelection(model[0]));
assertEquals(1, listener.count);
- assertNull(listener.diff.getOldValue());
- assertEquals(model[0], listener.diff.getNewValue());
- assertEquals(observable, listener.source);
+ assertNull(listener.event.diff.getOldValue());
+ assertEquals(model[0], listener.event.diff.getNewValue());
+ assertEquals(observable, listener.event.getObservableValue());
assertEquals(model[0], observable.getValue());
selectionProvider.setSelection(new StructuredSelection(model[1]));
assertEquals(2, listener.count);
- assertEquals(model[0], listener.diff.getOldValue());
- assertEquals(model[1], listener.diff.getNewValue());
- assertEquals(observable, listener.source);
+ assertEquals(model[0], listener.event.diff.getOldValue());
+ assertEquals(model[1], listener.event.diff.getNewValue());
+ assertEquals(observable, listener.event.getObservableValue());
assertEquals(model[1], observable.getValue());
selectionProvider.setSelection(StructuredSelection.EMPTY);
assertEquals(3, listener.count);
- assertEquals(model[1], listener.diff.getOldValue());
- assertNull(listener.diff.getNewValue());
- assertEquals(observable, listener.source);
+ assertEquals(model[1], listener.event.diff.getOldValue());
+ assertNull(listener.event.diff.getNewValue());
+ assertEquals(observable, listener.event.getObservableValue());
assertEquals(null, observable.getValue());
}
- private class ChangeListener implements IValueChangeListener {
- int count = 0;
-
- IObservable source;
-
- ValueDiff diff;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.databinding.observable.value.IValueChangeListener#handleValueChange(org.eclipse.jface.databinding.observable.value.IObservableValue,
- * org.eclipse.jface.databinding.observable.value.ValueDiff)
- */
- public void handleValueChange(ValueChangeEvent event) {
- count++;
- this.source = event.getObservableValue();
- this.diff = event.diff;
- }
- }
-
private class ContentProvider implements IStructuredContentProvider {
public void dispose() {
// TODO Auto-generated method stub
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/provisional/viewers/SelectionObservableValueTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/provisional/viewers/SelectionObservableValueTest.java
index 73549284..7f8b6403 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/provisional/viewers/SelectionObservableValueTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/internal/databinding/provisional/viewers/SelectionObservableValueTest.java
@@ -14,16 +14,15 @@ package org.eclipse.jface.tests.internal.databinding.provisional.viewers;
import junit.framework.TestCase;
import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.jface.databinding.viewers.ViewersObservables;
+import org.eclipse.jface.tests.databinding.util.EventTrackers.ValueChangeEventTracker;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Shell;
/**
- * @since 3.3
+ * @since 1.1
*/
public class SelectionObservableValueTest extends TestCase {
public void testSetValue() throws Exception {
@@ -34,7 +33,7 @@ public class SelectionObservableValueTest extends TestCase {
viewer.setInput(items);
IObservableValue observable = ViewersObservables.observeSingleSelection(viewer);
- ValueChangeListener listener = new ValueChangeListener();
+ ValueChangeEventTracker listener = new ValueChangeEventTracker();
observable.addValueChangeListener(listener);
assertNull(observable.getValue());
@@ -54,12 +53,4 @@ public class SelectionObservableValueTest extends TestCase {
assertEquals("viewer selection should be empty", StructuredSelection.EMPTY, viewer.getSelection());
assertEquals("value change event did not fire", 2, listener.count);
}
-
- private static class ValueChangeListener implements IValueChangeListener {
- int count;
-
- public void handleValueChange(ValueChangeEvent event) {
- count++;
- }
- }
}

Back to the top