]> source.dussan.org Git - vaadin-framework.git/commitdiff
Move ItemIconProvider out of ComboBox, rename to IconGenerator
authorAleksi Hietanen <aleksi@vaadin.com>
Thu, 15 Sep 2016 11:07:18 +0000 (14:07 +0300)
committerAleksi Hietanen <aleksi@vaadin.com>
Wed, 21 Sep 2016 07:51:29 +0000 (07:51 +0000)
Change-Id: I884a52c75b3be5573cf6634f211d72d09de69d80

server/src/main/java/com/vaadin/ui/ComboBox.java
server/src/main/java/com/vaadin/ui/IconGenerator.java [new file with mode: 0644]
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxClickIcon.java
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxItemIcon.java
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxLargeIcons.java
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxUndefinedWidthAndIcon.java
uitest/src/main/java/com/vaadin/tests/components/combobox/Comboboxes.java
uitest/src/main/java/com/vaadin/tests/components/combobox/PopUpWidth.java

index d39d8a7c4e01600b6a952846dc4eba7abfcda54a..5ed454d370d80c1f64779ccb5cd1af05921860b8 100644 (file)
@@ -82,19 +82,6 @@ public class ComboBox<T> extends AbstractSingleSelect<T> implements HasValue<T>,
     public interface NewItemHandler extends Consumer<String>, Serializable {
     }
 
-    /**
-     * ItemIconProvider can be used to add custom icons to combo box items shown
-     * in the popup.
-     *
-     * @see ComboBox#setItemIconProvider(ItemIconProvider)
-     * @param <T>
-     *            item type in the combo box
-     */
-    @FunctionalInterface
-    public interface ItemIconProvider<T>
-            extends Function<T, Resource>, Serializable {
-    }
-
     /**
      * Filter can be used to customize the filtering of items based on user
      * input.
@@ -150,7 +137,7 @@ public class ComboBox<T> extends AbstractSingleSelect<T> implements HasValue<T>,
     private ItemCaptionGenerator<T> itemCaptionGenerator = String::valueOf;
 
     private StyleGenerator<T> itemStyleGenerator = item -> null;
-    private ItemIconProvider<T> itemIconProvider = item -> null;
+    private IconGenerator<T> itemIconGenerator = item -> null;
 
     private ItemFilter<T> filter = (filterText, item) -> {
         if (filterText == null) {
@@ -241,7 +228,7 @@ public class ComboBox<T> extends AbstractSingleSelect<T> implements HasValue<T>,
             if (style != null) {
                 jsonObject.put(ComboBoxConstants.STYLE, style);
             }
-            Resource icon = itemIconProvider.apply(data);
+            Resource icon = itemIconGenerator.apply(data);
             if (icon != null) {
                 String iconUrl = ResourceReference
                         .create(icon, ComboBox.this, null).getURL();
@@ -477,30 +464,35 @@ public class ComboBox<T> extends AbstractSingleSelect<T> implements HasValue<T>,
     }
 
     /**
-     * Sets the item icon provider that is used to produce custom icons for
-     * showing items in the popup. The provider can return null for items with
+     * Sets the item icon generator that is used to produce custom icons for
+     * showing items in the popup. The generator can return null for items with
      * no icon.
      *
-     * @param itemIconProvider
-     *            the item icon provider to set, not null
+     * @see IconGenerator
+     *
+     * @param itemIconGenerator
+     *            the item icon generator to set, not null
+     * @throws NullPointerException
+     *             if {@code itemIconGenerator} is {@code null}
      */
-    public void setItemIconProvider(ItemIconProvider<T> itemIconProvider) {
-        Objects.requireNonNull(itemIconProvider,
-                "Item icon providers must not be null");
-        this.itemIconProvider = itemIconProvider;
+    public void setItemIconGenerator(IconGenerator<T> itemIconGenerator) {
+        Objects.requireNonNull(itemIconGenerator,
+                "Item icon generator must not be null");
+        this.itemIconGenerator = itemIconGenerator;
         getDataCommunicator().reset();
     }
 
     /**
-     * Gets the currently used item icon provider. The default item icon
+     * Gets the currently used item icon generator. The default item icon
      * provider returns null for all items, resulting in no icons being used.
      *
-     * @see #setItemIconProvider(ItemIconProvider)
+     * @see IconGenerator
+     * @see #setItemIconGenerator(IconGenerator)
      *
-     * @return the currently used item icon provider, not null
+     * @return the currently used item icon generator, not null
      */
-    public ItemIconProvider<T> getItemIconProvider() {
-        return itemIconProvider;
+    public IconGenerator<T> getItemIconGenerator() {
+        return itemIconGenerator;
     }
 
     /**
diff --git a/server/src/main/java/com/vaadin/ui/IconGenerator.java b/server/src/main/java/com/vaadin/ui/IconGenerator.java
new file mode 100644 (file)
index 0000000..41f11da
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2000-2016 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.ui;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+import com.vaadin.server.Resource;
+
+/**
+ * A callback interface for generating icons for an item.
+ *
+ * @param <T>
+ *            item type for which the icon is generated
+ */
+@FunctionalInterface
+public interface IconGenerator<T> extends Function<T, Resource>, Serializable {
+
+    /**
+     * Gets an icon resource for the {@code item}.
+     *
+     * @param item
+     *            the item for which to generate an icon for
+     * @return the generated icon resource
+     */
+    @Override
+    public Resource apply(T item);
+}
\ No newline at end of file
index 886dfc7ae243caceef89ca01189a1e26320d9da6..d4a0d4f6d44ae20f259e0bbe9c87e25cc6082be3 100644 (file)
@@ -32,7 +32,7 @@ public class ComboBoxClickIcon extends AbstractTestUI {
     protected void setup(VaadinRequest request) {
         final ComboBox<String> combo = new ComboBox<>(null,
                 DataSource.create("A", "B", "C"));
-        combo.setItemIconProvider(item -> FontAwesome.ALIGN_CENTER);
+        combo.setItemIconGenerator(item -> FontAwesome.ALIGN_CENTER);
         combo.setTextInputAllowed(false);
         addComponent(combo);
     }
index 0a29669e1b8060415aab55c6902ddfab5e67eb68..a479922b4db29b5a3d85fd34fa2ff5c8e97d7744 100644 (file)
@@ -21,7 +21,7 @@ public class ComboBoxItemIcon extends TestBase {
         {
             ComboBox<String> cb = new ComboBox<>();
             cb.setItems("FI", "SE");
-            cb.setItemIconProvider(item -> new ThemeResource(
+            cb.setItemIconGenerator(item -> new ThemeResource(
                     "../tests-tickets/icons/" + item.toLowerCase() + ".gif"));
 
             addComponent(cb);
@@ -29,7 +29,7 @@ public class ComboBoxItemIcon extends TestBase {
         {
             ComboBox<String> cb = new ComboBox<>();
             cb.setItems("Finland", "Australia", "Hungary");
-            cb.setItemIconProvider(
+            cb.setItemIconGenerator(
                     item -> new ThemeResource("../tests-tickets/icons/"
                             + item.substring(0, 2).toLowerCase() + ".gif"));
 
index a2fb93def961af0aaf528fab972a33bb04ff80dc..c262b5f01ae0eef827ee219d50aab49e2f45f4a4 100644 (file)
@@ -29,7 +29,7 @@ public class ComboBoxLargeIcons extends TestBase {
                         "document-txt", "document-web", "document"));
         getLayout().addComponent(cb);
         // FIXME cb.setNullSelectionAllowed(false);
-        cb.setItemIconProvider(icon -> new ThemeResource(
+        cb.setItemIconGenerator(icon -> new ThemeResource(
                 "../runo/icons/32/" + icon + ".png?" + new Date().getTime()));
     }
 }
index c5d72528afa85a2bcc70fe1218f10ef51f2dd317..5b2e580fc8bb966313d610c731c85d2a320b07c9 100644 (file)
@@ -15,7 +15,7 @@ public class ComboBoxUndefinedWidthAndIcon extends TestBase {
             data.add("Item " + i);
         }
         ComboBox<String> cb = new ComboBox<>(null, data);
-        cb.setItemIconProvider(
+        cb.setItemIconGenerator(
                 item -> new ThemeResource("../runo/icons/16/users.png"));
 
         addComponent(cb);
index 711c20a398a05c4968d8790b823081ebed3d4524..a3d6546853bf033a648acb16e8da956dea9be73f 100644 (file)
@@ -137,9 +137,9 @@ public class Comboboxes extends ComponentTestCase<ComboBox> {
                     @Override
                     public void execute(ComboBox c, String value, Object data) {
                         if (value == null) {
-                            c.setItemIconProvider(item -> null);
+                            c.setItemIconGenerator(item -> null);
                         } else {
-                            c.setItemIconProvider(item -> new ThemeResource(
+                            c.setItemIconGenerator(item -> new ThemeResource(
                                     value + "?" + new Date().getTime()));
                         }
                     }
index c0607d49ed6f6bd50389e8f18150fbe6b07ea754..dbddb27936f04ccea1853e0a07cf778848d6d078 100644 (file)
@@ -24,7 +24,7 @@ public class PopUpWidth extends TestBase {
             items.add(i);
         }
         cb.setItems(items);
-        cb.setItemIconProvider(
+        cb.setItemIconGenerator(
                 item -> new ThemeResource("../runo/icons/16/users.png"));
         cb.setItemCaptionGenerator(item -> "Item " + item);
         return cb;