]> source.dussan.org Git - vaadin-framework.git/commitdiff
Use ComboBox locale for filtering case tranform (#15193)
authorLeif Åstrand <leif@vaadin.com>
Mon, 10 Nov 2014 18:26:02 +0000 (20:26 +0200)
committerArtur Signell <artur@vaadin.com>
Sun, 14 Dec 2014 12:33:52 +0000 (14:33 +0200)
Change-Id: Id462c3e76c8d761c04851227c949a3124ddf14b3

server/src/com/vaadin/ui/ComboBox.java
uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocale.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocaleTest.java [new file with mode: 0644]

index c2b80fae3576e61b3b808a52cb2f5aa11303d07c..4af93113f9ee4002e464e07439376502fc86a42d 100644 (file)
@@ -622,7 +622,7 @@ public class ComboBox extends AbstractSelect implements
             if (caption == null || caption.equals("")) {
                 continue;
             } else {
-                caption = caption.toLowerCase();
+                caption = caption.toLowerCase(getLocale());
             }
             switch (filteringMode) {
             case CONTAINS:
@@ -682,7 +682,7 @@ public class ComboBox extends AbstractSelect implements
             currentPage = ((Integer) variables.get("page")).intValue();
             filterstring = newFilter;
             if (filterstring != null) {
-                filterstring = filterstring.toLowerCase();
+                filterstring = filterstring.toLowerCase(getLocale());
             }
             requestRepaint();
         } else if (isNewItemsAllowed()) {
diff --git a/uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocale.java b/uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocale.java
new file mode 100644 (file)
index 0000000..ff7faf1
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.combobox;
+
+import java.util.Arrays;
+import java.util.Locale;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.NativeSelect;
+
+public class FilteringTurkishLocale extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+
+        final ComboBox comboBox = new ComboBox("Box", Arrays.asList(
+                "I without dot", "İ with dot"));
+        comboBox.setNullSelectionAllowed(false);
+
+        NativeSelect localeSelect = new NativeSelect("Locale", Arrays.asList(
+                Locale.ENGLISH, new Locale("tr")));
+        localeSelect.addValueChangeListener(new ValueChangeListener() {
+            @Override
+            public void valueChange(ValueChangeEvent event) {
+                comboBox.setLocale((Locale) event.getProperty().getValue());
+            }
+        });
+        localeSelect.setValue(Locale.ENGLISH);
+
+        addComponents(localeSelect, comboBox);
+    }
+
+    @Override
+    public String getDescription() {
+        return "When the Turkish locale is used,"
+                + " filtering for 'i' should show the option with a dot"
+                + " while filtering for 'ı' should show the option witout a dot";
+    }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocaleTest.java b/uitest/src/com/vaadin/tests/components/combobox/FilteringTurkishLocaleTest.java
new file mode 100644 (file)
index 0000000..d7f8e23
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.combobox;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.By;
+import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.testbench.elements.NativeSelectElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class FilteringTurkishLocaleTest extends MultiBrowserTest {
+
+    @Test
+    public void testEnglishLocale() {
+        openTestURL();
+
+        setLocale("en");
+
+        List<String> suggestions = getFilterSuggestions("i");
+
+        Assert.assertEquals("Both suggestions should be present", 2,
+                suggestions.size());
+    }
+
+    @Test
+    public void testTurkishLocaleWithDot() {
+        openTestURL();
+
+        setLocale("tr");
+
+        List<String> suggestions = getFilterSuggestions("i");
+
+        Assert.assertEquals("There should be only one suggestion", 1,
+                suggestions.size());
+        Assert.assertEquals("İ with dot", suggestions.get(0));
+    }
+
+    @Test
+    public void testTurkishLocaleWithoutDot() {
+        openTestURL();
+
+        setLocale("tr");
+
+        List<String> suggestions = getFilterSuggestions("ı");
+
+        Assert.assertEquals("There should be only one suggestion", 1,
+                suggestions.size());
+        Assert.assertEquals("I without dot", suggestions.get(0));
+    }
+
+    private List<String> getFilterSuggestions(String string) {
+        ComboBoxElement comboBox = $(ComboBoxElement.class).first();
+        comboBox.findElement(By.vaadin("#textbox")).sendKeys(string);
+
+        return comboBox.getPopupSuggestions();
+    }
+
+    private void setLocale(String locale) {
+        NativeSelectElement selector = $(NativeSelectElement.class).first();
+        selector.selectByText(locale);
+    }
+
+}