diff options
author | Dave Orme | 2006-01-17 20:44:12 +0000 |
---|---|---|
committer | Dave Orme | 2006-01-17 20:44:12 +0000 |
commit | 6b2c1dd0b0a9bd43cfbd97b364b79803fa62058e (patch) | |
tree | 6852573e2bd06d009aeb6042773b8ecbd6679a7a | |
parent | edd38a65f29fa6a9effb10909dfe090cc766c18a (diff) | |
download | org.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.java | 6 | ||||
-rw-r--r-- | tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/scenarios/BindingScenariosTestSuite.java | 2 | ||||
-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 |