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;
/**
* 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.
* 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;
--- /dev/null
+/*
+ * 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);
+}
* the item collapse allowed provider, not {@code null}
*/
public void setItemCollapseAllowedProvider(
- SerializablePredicate<T> provider) {
+ ItemCollapseAllowedProvider<T> provider) {
treeGrid.setItemCollapseAllowedProvider(provider);
}
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;
* @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);
}
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")
}
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);