Package org.zkoss.zul

Class AbstractTreeModel<E>

    • Constructor Detail

      • AbstractTreeModel

        public AbstractTreeModel​(E root)
        Parameters:
        root - root of tree
    • Method Detail

      • getRoot

        public E getRoot()
        Return the root of the tree model.
        Specified by:
        getRoot in interface TreeModel<E>
        Returns:
        the root of Tree.
      • fireEvent

        public void fireEvent​(int evtType,
                              int[] path,
                              int indexFrom,
                              int indexTo)
        Fires a TreeDataEvent for all registered listener

        Note: you can invoke this method only in an event listener.

        Since:
        6.0.0
      • fireEvent

        public void fireEvent​(int evtType,
                              int[] path,
                              int indexFrom,
                              int indexTo,
                              int[] affectedPath)
        Has the same functionality with fireEvent(int, int[], int, int), while this is used for node removal only
        Since:
        7.0.5
      • fireEvent

        public void fireEvent​(int evtType,
                              int[] path,
                              int indexFrom,
                              int indexTo,
                              int[][] affectedPaths)
        Has the same functionality with fireEvent(int, int[], int, int), while this is used for node removal only
        Since:
        10.0.0
      • fireSelectionChanged

        protected void fireSelectionChanged​(int[] path)
        Fires a TreeDataEvent for all registered listener when selection status has changed.
        Since:
        6.0.0
      • fireOpenChanged

        protected void fireOpenChanged​(int[] path)
        Fires a TreeDataEvent for all registered listener when open status has changed.
        Since:
        6.0.0
      • getIndexOfChild

        public int getIndexOfChild​(E parent,
                                   E child)
        Returns the index of child in parent. If either parent or child is null, returns -1. If either parent or child don't belong to this tree model, returns -1.

        The default implementation iterates through all children of parent by invoking, and check if child is part of them. You could override it if you have a better algorithm. getChild(int[])

        Specified by:
        getIndexOfChild in interface TreeModel<E>
        Parameters:
        parent - a node in the tree, obtained from this data source
        child - the node we are interested in
        Returns:
        the index of the child in the parent, or -1 if either child or parent are null or don't belong to this tree model
        Since:
        5.0.6
      • getChild

        public E getChild​(int[] path)
        Description copied from interface: TreeModel
        Returns the child at the given path where the path indicates the child is placed in the whole tree.
        Specified by:
        getChild in interface TreeModel<E>
        Parameters:
        path - the tree path
        Returns:
        the child at path
      • getPath

        public int[] getPath​(E child)
        Returns the path from the specified child. This implementation looks for the child by traversing every possible child (deep-first). It is suggested to override this method for better performance, if there is a better algorithm.
        Specified by:
        getPath in interface TreeModel<E>
        Parameters:
        child - the node we are interested in
        Since:
        6.0.0
      • addTreeDataListener

        public void addTreeDataListener​(TreeDataListener l)
        Description copied from interface: TreeModel
        Add a listener to the tree that's notified each time a change to the data model occurs
        Specified by:
        addTreeDataListener in interface TreeModel<E>
        Parameters:
        l - the listener to add
      • removeTreeDataListener

        public void removeTreeDataListener​(TreeDataListener l)
        Description copied from interface: TreeModel
        Remove a listener to the tree that's notified each time a change to the data model occurs
        Specified by:
        removeTreeDataListener in interface TreeModel<E>
        Parameters:
        l - the listener to remove
      • addSelectionPath

        public boolean addSelectionPath​(int[] path)
        Description copied from interface: TreeSelectableModel
        Adds path to the current selection. If path is not currently in the selection the TreeDataListeners are notified. This has no effect if path is null.
        Specified by:
        addSelectionPath in interface TreeSelectableModel
        Parameters:
        path - the new path to add to the current selection
        Returns:
        whether it is added successfully
      • addSelectionPaths

        public boolean addSelectionPaths​(int[][] paths)
        Description copied from interface: TreeSelectableModel
        Adds paths to the current selection. If any of the paths in paths are not currently in the selection the TreeDataListeners are notified. This has no effect if paths is null.
        Specified by:
        addSelectionPaths in interface TreeSelectableModel
        Parameters:
        paths - the new paths to add to the current selection
        Returns:
        whether it is added successfully
      • removeSelectionPath

        public boolean removeSelectionPath​(int[] path)
        Description copied from interface: TreeSelectableModel
        Removes path from the selection. If path is in the selection The TreeDataListeners are notified. This has no effect if path is null.
        Specified by:
        removeSelectionPath in interface TreeSelectableModel
        Parameters:
        path - the path to remove from the selection
        Returns:
        true if it was unselected successfully
      • removeSelectionPaths

        public boolean removeSelectionPaths​(int[][] paths)
        Description copied from interface: TreeSelectableModel
        Removes paths from the selection. If any of the paths in paths are in the selection, the TreeDataListeners are notified. This method has no effect if paths is null.
        Specified by:
        removeSelectionPaths in interface TreeSelectableModel
        Parameters:
        paths - the path to remove from the selection
        Returns:
        true if one of the paths was unselected successfully
      • getSelectionPaths

        public int[][] getSelectionPaths()
        Description copied from interface: TreeSelectableModel
        Returns the paths in the selection. This will return null (or an empty array) if nothing is currently selected.
        Specified by:
        getSelectionPaths in interface TreeSelectableModel
      • addOpenPath

        public boolean addOpenPath​(int[] path)
        Description copied from interface: TreeOpenableModel
        Adds path to the current open. If path is not currently in the open the TreeDataListeners are notified. This has no effect if path is null.
        Specified by:
        addOpenPath in interface TreeOpenableModel
        Parameters:
        path - the new path to add to the current open
        Returns:
        whether it is added successfully
      • addOpenPaths

        public boolean addOpenPaths​(int[][] paths)
        Description copied from interface: TreeOpenableModel
        Adds paths to the current Open. If any of the paths in paths are not currently in the Open the TreeDataListeners are notified. This has no effect if paths is null.
        Specified by:
        addOpenPaths in interface TreeOpenableModel
        Parameters:
        paths - the new paths to add to the current Open
        Returns:
        whether an of the paths is added successfully
      • removeOpenPath

        public boolean removeOpenPath​(int[] path)
        Description copied from interface: TreeOpenableModel
        Removes path from the open. If path is in the open The TreeDataListeners are notified. This has no effect if path is null.
        Specified by:
        removeOpenPath in interface TreeOpenableModel
        Parameters:
        path - the path to remove from the open
        Returns:
        true if it was closed successfully
      • removeOpenPaths

        public boolean removeOpenPaths​(int[][] paths)
        Description copied from interface: TreeOpenableModel
        Removes paths from the open. If any of the paths in paths are in the open, the TreeDataListeners are notified. This method has no effect if paths is null.
        Specified by:
        removeOpenPaths in interface TreeOpenableModel
        Parameters:
        paths - the path to remove from the open
        Returns:
        true if one of the paths was closed successfully
      • isPathOpened

        public boolean isPathOpened​(int[] path)
        Description copied from interface: TreeOpenableModel
        Returns true if the path, path, is in the current open.
        Specified by:
        isPathOpened in interface TreeOpenableModel
      • getOpenPath

        public int[] getOpenPath()
        Description copied from interface: TreeOpenableModel
        Returns the first path in the open. How first is defined is up to implementors.
        Specified by:
        getOpenPath in interface TreeOpenableModel
      • getOpenPaths

        public int[][] getOpenPaths()
        Description copied from interface: TreeOpenableModel
        Returns the paths in the open. This will return null (or an empty array) if nothing is currently opened.
        Specified by:
        getOpenPaths in interface TreeOpenableModel
      • afterSort

        protected void afterSort​(java.lang.Object ctx)
        A utility that the deriving class can call to restore the states saved by beforeSort()
        Since:
        6.0.0
      • getSelection

        public java.util.Set<E> getSelection()
        Description copied from interface: Selectable
        Returns the current selection. It is readonly. Don't modify it directly
        Specified by:
        getSelection in interface Selectable<E>
        Returns:
        the current selection.
      • setSelection

        public void setSelection​(java.util.Collection<? extends E> selection)
        Description copied from interface: Selectable
        Replace the current selection with the given set.

        If this represents a change to the current selection then notify each ListDataListener, including UI.

        Specified by:
        setSelection in interface Selectable<E>
      • isSelected

        public boolean isSelected​(java.lang.Object child)
        Description copied from interface: Selectable
        Returns whether an object is selected.
        Specified by:
        isSelected in interface Selectable<E>
      • addToSelection

        public boolean addToSelection​(E child)
        Description copied from interface: Selectable
        Add the specified object into selection.

        If this represents a change to the current selection then notify each ListDataListener, including UI.

        Specified by:
        addToSelection in interface Selectable<E>
        Parameters:
        child - the object to be as selection.
        Returns:
        true if it is added successfully; false if obj is not part of the data, or was already selected.
      • removeFromSelection

        public boolean removeFromSelection​(java.lang.Object child)
        Description copied from interface: Selectable
        Remove the specified object from selection.

        If this represents a change to the current selection then notify each ListDataListener, including UI.

        Specified by:
        removeFromSelection in interface Selectable<E>
        Parameters:
        child - the object to be remove from selection.
        Returns:
        whether it is removed successfully
      • getOpenObjects

        public java.util.Set<E> getOpenObjects()
        Description copied from interface: Openable
        Returns the objects that are opened. It is readonly. Don't modify it directly
        Specified by:
        getOpenObjects in interface Openable<E>
      • setOpenObjects

        public void setOpenObjects​(java.util.Collection<? extends E> opened)
        Description copied from interface: Openable
        Replace the current set of opened objects with the given set.
        Specified by:
        setOpenObjects in interface Openable<E>
      • isObjectOpened

        public boolean isObjectOpened​(java.lang.Object child)
        Description copied from interface: Openable
        Returns whether the specified object be opened.
        Specified by:
        isObjectOpened in interface Openable<E>
      • addOpenObject

        public boolean addOpenObject​(E child)
        Description copied from interface: Openable
        Add the specified object into the collection of opened objects.
        Specified by:
        addOpenObject in interface Openable<E>
        Parameters:
        child - the object to be as selection.
        Returns:
        true if it is added successfully; false if obj is not part of the data, or was already opened.
      • removeOpenObject

        public boolean removeOpenObject​(java.lang.Object child)
        Description copied from interface: Openable
        Remove the specified object from selection.
        Specified by:
        removeOpenObject in interface Openable<E>
        Parameters:
        child - the object to be remove from selection.
        Returns:
        whether it is removed successfully
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • getPageSize

        public int getPageSize()
        Description copied from interface: Pageable
        Returns the number of items per page.

        Default: 20.

        Specified by:
        getPageSize in interface Pageable
      • getTotalSize

        public int getTotalSize()
        Returns the total number of items.

        Note: the entire tree will be traversed once to count the number of tree nodes, although the result will be cached until the model has changed (open/add/remove/etc.), it is still a VERY EXPENSIVE operation, please @Override to provide your own implementation for better performance
        Specified by:
        getTotalSize in interface PageableModel
        Returns:
        number of total size, or 0 if the model is empty
        Since:
        10.0.0
      • getPageCount

        public int getPageCount()
        Returns the number of pages. Note: there is at least one page even no item at all.

        Note: the entire tree will be traversed once to count the number of tree nodes, although the result will be cached until the model has changed (open/add/remove/etc.), it is still a VERY EXPENSIVE operation, please @Override to provide your own implementation for better performance
        Specified by:
        getPageCount in interface Pageable
        Returns:
        number of pages, or 1 if the model is empty
        Since:
        8.0.0
      • getActivePage

        public int getActivePage()
        Description copied from interface: Pageable
        Returns the active page (starting from 0).
        Specified by:
        getActivePage in interface Pageable
      • addPagingEventListener

        public void addPagingEventListener​(PagingListener listener)
        Description copied from interface: PageableModel
        Adds a listener to the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
        Specified by:
        addPagingEventListener in interface PageableModel
      • removePagingEventListener

        public void removePagingEventListener​(PagingListener listener)
        Description copied from interface: PageableModel
        Removes a listener from the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
        Specified by:
        removePagingEventListener in interface PageableModel