From 75be04cfb516da4f395a18713a7549c0276c1714 Mon Sep 17 00:00:00 2001 From: Aleksi Hietanen Date: Mon, 15 May 2017 13:49:56 +0300 Subject: Add ItemCollapseAllowedProvider interface --- .../provider/HierarchicalDataCommunicator.java | 6 +-- .../com/vaadin/ui/ItemCollapseAllowedProvider.java | 46 ++++++++++++++++++++++ server/src/main/java/com/vaadin/ui/Tree.java | 2 +- server/src/main/java/com/vaadin/ui/TreeGrid.java | 5 +-- 4 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 server/src/main/java/com/vaadin/ui/ItemCollapseAllowedProvider.java (limited to 'server') 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 extends DataCommunicator { /** * Collapse allowed provider used to allow/disallow collapsing nodes. */ - private SerializablePredicate itemCollapseAllowedProvider = t -> true; + private ItemCollapseAllowedProvider itemCollapseAllowedProvider = t -> true; /** * The captured client side cache size. @@ -521,7 +521,7 @@ public class HierarchicalDataCommunicator extends DataCommunicator { * the item collapse allowed provider, not {@code null} */ public void setItemCollapseAllowedProvider( - SerializablePredicate provider) { + ItemCollapseAllowedProvider 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 + * item data type + */ +@FunctionalInterface +public interface ItemCollapseAllowedProvider extends SerializablePredicate { + + /** + * 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 extends Composite * the item collapse allowed provider, not {@code null} */ public void setItemCollapseAllowedProvider( - SerializablePredicate provider) { + ItemCollapseAllowedProvider 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 extends Grid * @param provider * the item collapse allowed provider, not {@code null} * - * @see HierarchicalDataCommunicator#setItemCollapseAllowedProvider(SerializablePredicate) + * @see HierarchicalDataCommunicator#setItemCollapseAllowedProvider(ItemCollapseAllowedProvider) */ public void setItemCollapseAllowedProvider( - SerializablePredicate provider) { + ItemCollapseAllowedProvider provider) { getDataCommunicator().setItemCollapseAllowedProvider(provider); } -- cgit v1.2.3