diff options
5 files changed, 54 insertions, 8 deletions
diff --git a/server/src/main/java/com/vaadin/data/provider/HierarchicalDataCommunicator.java b/server/src/main/java/com/vaadin/data/provider/HierarchicalDataCommunicator.java index df2a11c200..ce6f7db13e 100644 --- a/server/src/main/java/com/vaadin/data/provider/HierarchicalDataCommunicator.java +++ b/server/src/main/java/com/vaadin/data/provider/HierarchicalDataCommunicator.java @@ -31,10 +31,10 @@ import com.vaadin.data.TreeData; import com.vaadin.data.provider.HierarchyMapper.TreeLevelQuery; import com.vaadin.data.provider.HierarchyMapper.TreeNode; import com.vaadin.server.SerializableConsumer; -import com.vaadin.server.SerializablePredicate; import com.vaadin.shared.Range; import com.vaadin.shared.data.HierarchicalDataCommunicatorConstants; import com.vaadin.shared.extension.datacommunicator.HierarchicalDataCommunicatorState; +import com.vaadin.ui.ItemCollapseAllowedProvider; import elemental.json.Json; import elemental.json.JsonArray; @@ -66,7 +66,7 @@ public class HierarchicalDataCommunicator<T> extends DataCommunicator<T> { /** * Collapse allowed provider used to allow/disallow collapsing nodes. */ - private SerializablePredicate<T> itemCollapseAllowedProvider = t -> true; + private ItemCollapseAllowedProvider<T> itemCollapseAllowedProvider = t -> true; /** * The captured client side cache size. @@ -521,7 +521,7 @@ public class HierarchicalDataCommunicator<T> extends DataCommunicator<T> { * the item collapse allowed provider, not {@code null} */ public void setItemCollapseAllowedProvider( - SerializablePredicate<T> provider) { + ItemCollapseAllowedProvider<T> provider) { Objects.requireNonNull(provider, "Provider can't be null"); itemCollapseAllowedProvider = provider; diff --git a/server/src/main/java/com/vaadin/ui/ItemCollapseAllowedProvider.java b/server/src/main/java/com/vaadin/ui/ItemCollapseAllowedProvider.java new file mode 100644 index 0000000000..2ec0ad20e3 --- /dev/null +++ b/server/src/main/java/com/vaadin/ui/ItemCollapseAllowedProvider.java @@ -0,0 +1,46 @@ +/* + * 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 com.vaadin.server.SerializablePredicate; + +/** + * A callback interface for resolving whether client-side collapsing should be + * allowed for an item in a listing component that displays hierarchical data, + * such as {@link TreeGrid}. + * + * @author Vaadin Ltd + * @since 8.1 + * + * @see TreeGrid#setItemCollapseAllowedProvider(ItemCollapseAllowedProvider) + * + * @param <T> + * item data type + */ +@FunctionalInterface +public interface ItemCollapseAllowedProvider<T> extends SerializablePredicate<T> { + + /** + * Returns whether collapsing is allowed for the given item. + * + * @param item + * the item to test + * @return {@code true} if collapse is allowed for the given item, + * {@code false} otherwise + */ + @Override + boolean test(T item); +} diff --git a/server/src/main/java/com/vaadin/ui/Tree.java b/server/src/main/java/com/vaadin/ui/Tree.java index 9f30c010db..7b8fae59ca 100644 --- a/server/src/main/java/com/vaadin/ui/Tree.java +++ b/server/src/main/java/com/vaadin/ui/Tree.java @@ -470,7 +470,7 @@ public class Tree<T> extends Composite * the item collapse allowed provider, not {@code null} */ public void setItemCollapseAllowedProvider( - SerializablePredicate<T> provider) { + ItemCollapseAllowedProvider<T> provider) { treeGrid.setItemCollapseAllowedProvider(provider); } diff --git a/server/src/main/java/com/vaadin/ui/TreeGrid.java b/server/src/main/java/com/vaadin/ui/TreeGrid.java index f24e5ca9ec..54e8e10a6c 100644 --- a/server/src/main/java/com/vaadin/ui/TreeGrid.java +++ b/server/src/main/java/com/vaadin/ui/TreeGrid.java @@ -43,7 +43,6 @@ import com.vaadin.event.CollapseEvent; import com.vaadin.event.CollapseEvent.CollapseListener; import com.vaadin.event.ExpandEvent; import com.vaadin.event.ExpandEvent.ExpandListener; -import com.vaadin.server.SerializablePredicate; import com.vaadin.shared.Registration; import com.vaadin.shared.ui.treegrid.FocusParentRpc; import com.vaadin.shared.ui.treegrid.FocusRpc; @@ -324,10 +323,10 @@ public class TreeGrid<T> extends Grid<T> * @param provider * the item collapse allowed provider, not {@code null} * - * @see HierarchicalDataCommunicator#setItemCollapseAllowedProvider(SerializablePredicate) + * @see HierarchicalDataCommunicator#setItemCollapseAllowedProvider(ItemCollapseAllowedProvider) */ public void setItemCollapseAllowedProvider( - SerializablePredicate<T> provider) { + ItemCollapseAllowedProvider<T> provider) { getDataCommunicator().setItemCollapseAllowedProvider(provider); } diff --git a/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java index 13064c4c39..911c13f449 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java +++ b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java @@ -17,6 +17,7 @@ import com.vaadin.server.SerializablePredicate; import com.vaadin.shared.Range; import com.vaadin.tests.components.AbstractComponentTest; import com.vaadin.tests.data.bean.HierarchicalTestBean; +import com.vaadin.ui.ItemCollapseAllowedProvider; import com.vaadin.ui.TreeGrid; @Theme("valo") @@ -137,7 +138,7 @@ public class TreeGridBasicFeatures extends AbstractComponentTest<TreeGrid> { } private void createCollapseAllowedSelect() { - LinkedHashMap<String, SerializablePredicate<HierarchicalTestBean>> options = new LinkedHashMap<>(); + LinkedHashMap<String, ItemCollapseAllowedProvider<HierarchicalTestBean>> options = new LinkedHashMap<>(); options.put("all allowed", t -> true); options.put("all disabled", t -> false); options.put("depth 0 disabled", t -> t.getDepth() != 0); |