Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Orme2006-01-17 20:44:12 +0000
committerDave Orme2006-01-17 20:44:12 +0000
commit6b2c1dd0b0a9bd43cfbd97b364b79803fa62058e (patch)
tree6852573e2bd06d009aeb6042773b8ecbd6679a7a
parentedd38a65f29fa6a9effb10909dfe090cc766c18a (diff)
downloadorg.eclipse.e4.databinding-20060117.tar.gz
org.eclipse.e4.databinding-20060117.tar.xz
org.eclipse.e4.databinding-20060117.zip
Added in writable ccombo support. CCombo allows values that are not contained in the list of available selections. Fixes bug 123758.v20060117av20060117v20051117a
-rw-r--r--bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboUpdatableValue.java6
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java2
-rw-r--r--tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ComboScenarios.java (renamed from tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ReadOnlyComboScenarios.java)46
3 files changed, 51 insertions, 3 deletions
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboUpdatableValue.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboUpdatableValue.java
index 11da254a..68b347aa 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboUpdatableValue.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboUpdatableValue.java
@@ -79,7 +79,11 @@ public class CComboUpdatableValue extends UpdatableValue {
break;
}
}
- ccombo.select(index); // -1 will not "unselect"
+ if (index == -1) {
+ ccombo.setText((String) value);
+ } else {
+ ccombo.select(index); // -1 will not "unselect"
+ }
}
}
} finally {
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java
index 841df4d2..74ccd3ac 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java
@@ -64,7 +64,7 @@ public class BindingScenariosTestSuite extends TestSuite {
addTestSuite(CustomScenarios.class);
addTestSuite(CustomConverterScenarios.class);
addTestSuite(MasterDetailScenarios.class);
- addTestSuite(ReadOnlyComboScenarios.class);
+ addTestSuite(ComboScenarios.class);
addTestSuite(TableScenarios.class);
addTestSuite(TreeScenarios.class);
// Test each of the basic SWT controls
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ReadOnlyComboScenarios.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ComboScenarios.java
index 07387450..2ab037be 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ReadOnlyComboScenarios.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/ComboScenarios.java
@@ -36,7 +36,7 @@ import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Combo;
-public class ReadOnlyComboScenarios extends ScenariosTestCase {
+public class ComboScenarios extends ScenariosTestCase {
protected ComboViewer cviewer = null;
@@ -455,6 +455,50 @@ public class ReadOnlyComboScenarios extends ScenariosTestCase {
*
* The Combo's selection is bounded to the Country property of an Account.
*/
+ public void test_WCombo_SWTCCombo() {
+
+ // Create a list of Strings for the countries
+ List list = new ArrayList();
+ for (int i = 0; i < catalog.getAccounts().length; i++)
+ list.add(catalog.getAccounts()[i].getCountry());
+
+ CCombo ccombo = new CCombo(getComposite(), SWT.READ_ONLY
+ | SWT.DROP_DOWN);
+
+ // Bind the combo's content to that of the String based list
+ getDbc().bind(ccombo, new Property(list, null), null);
+ assertEquals(Arrays.asList(ccombo.getItems()), list);
+
+ Account account = (Account) catalog.getAccounts()[0];
+
+ // simple Combo's selection bound to the Account's country property
+ getDbc().bind(
+ new Property(ccombo, SWTProperties.SELECTION),
+ new Property(account, "country"), null);
+
+ // Drive the combo selection
+ String selection = (String) list.get(2);
+ ccombo.setText(selection); // this should drive the selection
+ assertEquals(account.getCountry(), selection);
+
+ selection = (String) list.get(1);
+ account.setCountry(selection);
+ assertEquals(selection, ccombo.getItem(ccombo.getSelectionIndex()));
+ assertEquals(selection, ccombo.getText());
+
+ selection = "country not in list";
+ account.setCountry(selection);
+ assertEquals(-1, ccombo.getSelectionIndex());
+ assertEquals(selection, ccombo.getText());
+ }
+
+ /**
+ * This scenario tests a simple SWT CCombo that is bound to a list of
+ * Country objects. The Country object's name property is listed in the
+ * Combo.
+ *
+ * The Combo's selection is bounded to the Country property of an Account.
+ */
public void test_ROCombo_SWTList() {
// Create a list of Strings for the countries

Back to the top