Skip to content

Commit

Permalink
Add ItemCollapseAllowedProvider interface
Browse files Browse the repository at this point in the history
  • Loading branch information
ahie committed May 15, 2017
1 parent 31b808f commit c961beb
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@
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;
Expand Down Expand Up @@ -67,7 +67,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.
Expand Down Expand Up @@ -513,7 +513,7 @@ public Optional<String> collapseItem(T item) {
* 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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
5 changes: 2 additions & 3 deletions server/src/main/java/com/vaadin/ui/TreeGrid.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
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;
Expand Down Expand Up @@ -433,10 +432,10 @@ public void setHierarchyColumn(String id) {
* @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);
}

Expand Down

0 comments on commit c961beb

Please sign in to comment.