summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorAleksi Hietanen <aleksi@vaadin.com>2017-05-15 13:49:56 +0300
committerHenri Sara <henri.sara@gmail.com>2017-05-16 15:35:17 +0300
commit75be04cfb516da4f395a18713a7549c0276c1714 (patch)
treebcb6408a639c6125b81242aedf4d0a95b0a4c26d /server
parentb153ba2f8b8539df45ace39864fd0db4a4c26e4d (diff)
downloadvaadin-framework-75be04cfb516da4f395a18713a7549c0276c1714.tar.gz
vaadin-framework-75be04cfb516da4f395a18713a7549c0276c1714.zip
Add ItemCollapseAllowedProvider interface
Diffstat (limited to 'server')
-rw-r--r--server/src/main/java/com/vaadin/data/provider/HierarchicalDataCommunicator.java6
-rw-r--r--server/src/main/java/com/vaadin/ui/ItemCollapseAllowedProvider.java46
-rw-r--r--server/src/main/java/com/vaadin/ui/Tree.java2
-rw-r--r--server/src/main/java/com/vaadin/ui/TreeGrid.java5
4 files changed, 52 insertions, 7 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);
}