Class TreeUtils.FilteredTreeModel<E>

  • All Implemented Interfaces:
    TreeModelDecorator, RefreshableTreeModel<E>, java.io.Serializable, org.zkoss.zul.ext.Openable<E>, org.zkoss.zul.ext.Pageable, org.zkoss.zul.ext.Selectable<E>, org.zkoss.zul.ext.TreeOpenableModel, org.zkoss.zul.ext.TreeSelectableModel, org.zkoss.zul.PageableModel, org.zkoss.zul.TreeModel<E>
    Enclosing class:
    TreeUtils

    public static class TreeUtils.FilteredTreeModel<E>
    extends org.zkoss.zul.AbstractTreeModel<E>
    implements TreeModelDecorator, RefreshableTreeModel<E>
    Subclass of AbstractTreeModel that can be used as a filter.
    See Also:
    Serialized Form
    • Constructor Detail

      • FilteredTreeModel

        public FilteredTreeModel​(org.zkoss.zul.TreeModel<E> originalModel,
                                 java.lang.String filterString,
                                 boolean camelCase,
                                 TreeUtils.FilterStringResolver<E> filterStringResolver)
        Constructor that creates a filtered version of an AbstractTreeModel.
        Parameters:
        originalModel - the treemodel that should be filtered.
        filterString - the string that must match the treeitems.
        camelCase - whether camelcase matching should be used or not.
        filterStringResolver - needed, if treenodes not of type String.
      • FilteredTreeModel

        public FilteredTreeModel​(org.zkoss.zul.TreeModel<E> originalModel,
                                 java.lang.String filterString,
                                 boolean camelCase,
                                 TreeUtils.FilterStringResolver<E> filterStringResolver,
                                 TreeUtils.MatchMode matchMode)
        Constructor that creates a filtered version of an AbstractTreeModel.
        Parameters:
        originalModel - the treemodel that should be filtered.
        filterString - the string that must match the treeitems.
        camelCase - whether camelcase matching should be used or not.
        filterStringResolver - needed, if treenodes not of type String.
        matchMode - type of match used during search.
      • FilteredTreeModel

        public FilteredTreeModel​(org.zkoss.zul.TreeModel<E> originalModel,
                                 java.lang.String filterString,
                                 boolean camelCase,
                                 TreeUtils.FilterStringResolver<E> filterStringResolver,
                                 int traversedItemsLimit)
        Constructor that creates a filtered version of an AbstractTreeModel.
        Parameters:
        originalModel - the treemodel that should be filtered.
        filterString - the string that must match the treeitems.
        camelCase - whether camelcase matching should be used or not.
        filterStringResolver - needed, if treenodes not of type String.
        traversedItemsLimit - the maximum number of items which can be traversed during filtering. A negative value means that all items can be visited.
      • FilteredTreeModel

        public FilteredTreeModel​(org.zkoss.zul.TreeModel<E> originalModel,
                                 java.lang.String filterString,
                                 boolean camelCase,
                                 TreeUtils.FilterStringResolver<E> filterStringResolver,
                                 TreeUtils.MatchMode matchMode,
                                 int traversedItemsLimit)
        Constructor that creates a filtered version of an AbstractTreeModel.
        Parameters:
        originalModel - the treemodel that should be filtered.
        filterString - the string that must match the treeitems.
        camelCase - whether camelcase matching should be used or not.
        filterStringResolver - needed, if treenodes not of type String.
        matchMode - type of match used during search.
        traversedItemsLimit - the maximum number of items which can be traversed during filtering. A negative value means that all items can be visited.
    • Method Detail

      • getSearchDepth

        public TreeUtils.SearchDepth getSearchDepth()
        Checks whether tree is filtered up until first match or independent of node depth
        Returns:
        search depth of tree model
      • setSearchDepth

        public void setSearchDepth​(TreeUtils.SearchDepth searchDepth)
        Determines whether tree is filtered up until first match or independent of node depth
        Parameters:
        searchDepth - new search depth for this tree
      • rebuild

        @Deprecated(since="1808",
                    forRemoval=true)
        public void rebuild()
        Deprecated, for removal: This API element is subject to removal in a future version.
        since 1808, create a new instance of TreeUtils.FilteredTreeModel instead
        Rebuilds this filtered tree (executing filtering again). It also empties open and selection paths.
        Throws:
        ExceededTraversedItemsLimitException - if a number of the traversed items exceeded the limit.
      • filter

        protected boolean filter​(E node)
      • isTraverseLimitExceeded

        protected boolean isTraverseLimitExceeded()
      • matchesFilter

        public boolean matchesFilter​(E node)
        Checks whether particular node matches filter.
        Parameters:
        node - node to be checked
        Returns:
        true if node data matches filter
      • isEligibleForMatching

        protected boolean isEligibleForMatching​(E node)
      • getDynamicNodeDepth

        protected int getDynamicNodeDepth​(DynamicNode node)
      • matchesFilterString

        protected boolean matchesFilterString​(E node)
      • getOriginalSelectableModel

        protected <M extends org.zkoss.zul.ext.TreeSelectableModel & org.zkoss.zul.ext.Selectable<E>> java.util.Optional<M> getOriginalSelectableModel()
      • getOriginalOpenableModel

        protected <M extends org.zkoss.zul.ext.TreeOpenableModel & org.zkoss.zul.ext.Openable<E>> java.util.Optional<M> getOriginalOpenableModel()
      • getOriginalRefreshableModel

        protected <M extends RefreshableTreeModel<E>> java.util.Optional<M> getOriginalRefreshableModel()
      • getMatchingNodes

        @Deprecated(since="2005",
                    forRemoval=true)
        public java.util.List<E> getMatchingNodes()
        Deprecated, for removal: This API element is subject to removal in a future version.
        since 2005, do not use
      • getChild

        public E getChild​(E parent,
                          int index)
        Specified by:
        getChild in interface org.zkoss.zul.TreeModel<E>
      • getChildCount

        public int getChildCount​(E parent)
        Specified by:
        getChildCount in interface org.zkoss.zul.TreeModel<E>
      • isLeaf

        public boolean isLeaf​(E node)
        Specified by:
        isLeaf in interface org.zkoss.zul.TreeModel<E>
      • getChildren

        protected java.util.List<E> getChildren​(E parent)
      • filterChildren

        protected java.util.List<E> filterChildren​(E node)
      • getPath

        public int[] getPath​(E child)
        Specified by:
        getPath in interface org.zkoss.zul.TreeModel<E>
        Overrides:
        getPath in class org.zkoss.zul.AbstractTreeModel<E>
      • refreshChildren

        public void refreshChildren​(E node,
                                    java.util.List<E> children)
        Description copied from interface: RefreshableTreeModel
        Sets new children nodes of specified parent node and refreshes all data related to them.
        Specified by:
        refreshChildren in interface RefreshableTreeModel<E>
        Parameters:
        node - parent node
        children - new children nodes
      • clearChildrenMap

        protected void clearChildrenMap​(E node)
      • findNodesByData

        public java.util.List<E> findNodesByData​(java.lang.Object data)
        Description copied from interface: RefreshableTreeModel
        Gets all nodes related to specified data.

        In case of dynamic trees, method should return only those nodes that are already known and avoid traversing through whole tree to gather all related nodes.

        Specified by:
        findNodesByData in interface RefreshableTreeModel<E>
        Parameters:
        data - node data
        Returns:
        list of known nodes that are related to data
      • getOpenObjects

        public java.util.Set<E> getOpenObjects()
        Specified by:
        getOpenObjects in interface org.zkoss.zul.ext.Openable<E>
        Overrides:
        getOpenObjects in class org.zkoss.zul.AbstractTreeModel<E>
      • setOpenObjects

        public void setOpenObjects​(java.util.Collection<? extends E> nodes)
        Specified by:
        setOpenObjects in interface org.zkoss.zul.ext.Openable<E>
        Overrides:
        setOpenObjects in class org.zkoss.zul.AbstractTreeModel<E>
      • isObjectOpened

        public boolean isObjectOpened​(java.lang.Object node)
        Specified by:
        isObjectOpened in interface org.zkoss.zul.ext.Openable<E>
        Overrides:
        isObjectOpened in class org.zkoss.zul.AbstractTreeModel<E>
      • addOpenObject

        public boolean addOpenObject​(E node)
        Specified by:
        addOpenObject in interface org.zkoss.zul.ext.Openable<E>
        Overrides:
        addOpenObject in class org.zkoss.zul.AbstractTreeModel<E>
      • removeOpenObject

        public boolean removeOpenObject​(java.lang.Object node)
        Specified by:
        removeOpenObject in interface org.zkoss.zul.ext.Openable<E>
        Overrides:
        removeOpenObject in class org.zkoss.zul.AbstractTreeModel<E>
      • addOpenPath

        public boolean addOpenPath​(int[] path)
        Specified by:
        addOpenPath in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        addOpenPath in class org.zkoss.zul.AbstractTreeModel<E>
      • addOpenPaths

        public boolean addOpenPaths​(int[][] paths)
        Specified by:
        addOpenPaths in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        addOpenPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • removeOpenPath

        public boolean removeOpenPath​(int[] path)
        Specified by:
        removeOpenPath in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        removeOpenPath in class org.zkoss.zul.AbstractTreeModel<E>
      • removeOpenPaths

        public boolean removeOpenPaths​(int[][] paths)
        Specified by:
        removeOpenPaths in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        removeOpenPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • isPathOpened

        public boolean isPathOpened​(int[] path)
        Specified by:
        isPathOpened in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        isPathOpened in class org.zkoss.zul.AbstractTreeModel<E>
      • isOpenEmpty

        public boolean isOpenEmpty()
        Specified by:
        isOpenEmpty in interface org.zkoss.zul.ext.Openable<E>
        Specified by:
        isOpenEmpty in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        isOpenEmpty in class org.zkoss.zul.AbstractTreeModel<E>
      • clearOpen

        public void clearOpen()
        Specified by:
        clearOpen in interface org.zkoss.zul.ext.Openable<E>
        Specified by:
        clearOpen in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        clearOpen in class org.zkoss.zul.AbstractTreeModel<E>
      • getOpenCount

        public int getOpenCount()
        Specified by:
        getOpenCount in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        getOpenCount in class org.zkoss.zul.AbstractTreeModel<E>
      • getOpenPath

        public int[] getOpenPath()
        Specified by:
        getOpenPath in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        getOpenPath in class org.zkoss.zul.AbstractTreeModel<E>
      • getOpenPaths

        public int[][] getOpenPaths()
        Specified by:
        getOpenPaths in interface org.zkoss.zul.ext.TreeOpenableModel
        Overrides:
        getOpenPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • getSelection

        public java.util.Set<E> getSelection()
        Specified by:
        getSelection in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        getSelection in class org.zkoss.zul.AbstractTreeModel<E>
      • setSelection

        public void setSelection​(java.util.Collection<? extends E> nodes)
        Specified by:
        setSelection in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        setSelection in class org.zkoss.zul.AbstractTreeModel<E>
      • isSelected

        public boolean isSelected​(java.lang.Object node)
        Specified by:
        isSelected in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        isSelected in class org.zkoss.zul.AbstractTreeModel<E>
      • addToSelection

        public boolean addToSelection​(E node)
        Specified by:
        addToSelection in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        addToSelection in class org.zkoss.zul.AbstractTreeModel<E>
      • removeFromSelection

        public boolean removeFromSelection​(java.lang.Object node)
        Specified by:
        removeFromSelection in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        removeFromSelection in class org.zkoss.zul.AbstractTreeModel<E>
      • setSelectionControl

        public void setSelectionControl​(org.zkoss.zul.ext.SelectionControl selectionControl)
        Specified by:
        setSelectionControl in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        setSelectionControl in class org.zkoss.zul.AbstractTreeModel<E>
      • getSelectionControl

        public org.zkoss.zul.ext.SelectionControl<E> getSelectionControl()
        Specified by:
        getSelectionControl in interface org.zkoss.zul.ext.Selectable<E>
        Overrides:
        getSelectionControl in class org.zkoss.zul.AbstractTreeModel<E>
      • setMultiple

        public void setMultiple​(boolean multiple)
        Specified by:
        setMultiple in interface org.zkoss.zul.ext.Selectable<E>
        Specified by:
        setMultiple in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        setMultiple in class org.zkoss.zul.AbstractTreeModel<E>
      • isMultiple

        public boolean isMultiple()
        Specified by:
        isMultiple in interface org.zkoss.zul.ext.Selectable<E>
        Specified by:
        isMultiple in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        isMultiple in class org.zkoss.zul.AbstractTreeModel<E>
      • addSelectionPath

        public boolean addSelectionPath​(int[] path)
        Specified by:
        addSelectionPath in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        addSelectionPath in class org.zkoss.zul.AbstractTreeModel<E>
      • addSelectionPaths

        public boolean addSelectionPaths​(int[][] paths)
        Specified by:
        addSelectionPaths in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        addSelectionPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • removeSelectionPath

        public boolean removeSelectionPath​(int[] path)
        Specified by:
        removeSelectionPath in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        removeSelectionPath in class org.zkoss.zul.AbstractTreeModel<E>
      • removeSelectionPaths

        public boolean removeSelectionPaths​(int[][] paths)
        Specified by:
        removeSelectionPaths in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        removeSelectionPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • isPathSelected

        public boolean isPathSelected​(int[] path)
        Specified by:
        isPathSelected in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        isPathSelected in class org.zkoss.zul.AbstractTreeModel<E>
      • isSelectionEmpty

        public boolean isSelectionEmpty()
        Specified by:
        isSelectionEmpty in interface org.zkoss.zul.ext.Selectable<E>
        Specified by:
        isSelectionEmpty in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        isSelectionEmpty in class org.zkoss.zul.AbstractTreeModel<E>
      • clearSelection

        public void clearSelection()
        Specified by:
        clearSelection in interface org.zkoss.zul.ext.Selectable<E>
        Specified by:
        clearSelection in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        clearSelection in class org.zkoss.zul.AbstractTreeModel<E>
      • getSelectionPath

        public int[] getSelectionPath()
        Specified by:
        getSelectionPath in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        getSelectionPath in class org.zkoss.zul.AbstractTreeModel<E>
      • getSelectionPaths

        public int[][] getSelectionPaths()
        Specified by:
        getSelectionPaths in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        getSelectionPaths in class org.zkoss.zul.AbstractTreeModel<E>
      • getSelectionCount

        public int getSelectionCount()
        Specified by:
        getSelectionCount in interface org.zkoss.zul.ext.TreeSelectableModel
        Overrides:
        getSelectionCount in class org.zkoss.zul.AbstractTreeModel<E>
      • fromOriginalPath

        public int[] fromOriginalPath​(int[] originalPath)
        Calculates a path valid for this model basing on a path valid for original model
        Parameters:
        originalPath - path valid for original model
        Returns:
        path valid for this model or empty array if path was filtered out
      • toOriginalPath

        public int[] toOriginalPath​(int[] path)
        Calculates a path valid for original model basing on a path valid for this model
        Parameters:
        path - path valid for this model
        Returns:
        path valid for original model
      • fromOriginalPaths

        public int[][] fromOriginalPaths​(int[][] originalPaths)
        Calculates paths valid for this model basing on paths valid for original model
        Parameters:
        originalPaths - paths valid for original model
        Returns:
        paths valid for this model (may contain empty arrays if particular path was filtered out)
      • toOriginalPaths

        public int[][] toOriginalPaths​(int[][] paths)
        Calculates paths valid for this model basing on paths valid for original model
        Parameters:
        paths - paths valid for original model
        Returns:
        paths valid for this model