Package org.zkoss.zul.impl

## Class ListboxDataLoader

- java.lang.Object
- - org.zkoss.zul.impl.ListboxDataLoader

- All Implemented Interfaces:
    `Cropper`, `DataLoader`
  Direct Known Subclasses:
    `LiveListboxDataLoader`

      public class ListboxDataLoader
      extends java.lang.Object
      implements DataLoader, Cropper

  Generic `Listbox` data loader.
  Since:
    5.0.0
  Author:
    henrichen

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `ListboxDataLoader.DeferredRedraw` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ListboxDataLoader()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `doGroupsDataChange​(GroupsDataEvent event)` | updates the status of the changed group.
    `void` | `doListDataChange​(ListDataEvent event)` | Handle event when ListDataEvent is fired from owner component.
    `java.util.Set<? extends Component>` | `getAvailableAtClient()` | Retrieves the children available at client.
    `protected java.util.Set<? extends Component>` | `getAvailableAtClient​(boolean itemOnly)` | Retrieves the children available at client with more control.
    `protected java.util.Set<? extends Component>` | `getAvailableAtClient​(int offset, int limit, boolean itemOnly)` | Retrieves the children available at the client within the given range.
    `Component` | `getCropOwner()` | Returns the owner of the cropping scope.
    `int` | `getLimit()` | Returns the required visible limit size of the current loaded data chunk to be shown on the screen.
    `int` | `getOffset()` | Returns the requested visible offset of the current loaded data chunk.
    `Component` | `getOwner()` | Returns the associated owner component of this DataLoader.
    `java.lang.Object` | `getRealRenderer()` | Return the renderer to do rendering.
    `int` | `getTotalSize()` | Returns the total size of the data.
    `void` | `init​(Component owner, int offset, int limit)` | Callback from the owner component and give a chance to initialize things.
    `protected boolean` | `inPagingMold()` |
    `protected boolean` | `inSelectMold()` |
    `boolean` | `isCropper()` | Returns whether it is a cropper, i.e., cropping is applied.
    `protected Listitem` | `newUnloadedItem​(ListitemRenderer renderer, int index)` | Creates an new and unloaded listitem.
    `void` | `reset()` | Callback from the owner component and give a chance to reset things.
    `void` | `setLoadAll​(boolean b)` | Sets whether to always load all items from ListModel.
    `void` | `syncModel​(int offset, int limit)` | Synchronizes the owner component to be consistent with the specified model.
    `void` | `updateModelInfo()` | Used to update some extra control information to the client.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ListboxDataLoader

          public ListboxDataLoader()

  - ### Method Detail

    - #### init

          public void init​(Component owner,
                           int offset,
                           int limit)

      Description copied from interface: `DataLoader`
      Callback from the owner component and give a chance to initialize things.
      Specified by:
        `init` in interface `DataLoader`
      Parameters:
        `owner` - the owner component of this DataLoader.

    - #### reset

          public void reset()

      Description copied from interface: `DataLoader`
      Callback from the owner component and give a chance to reset things.
      Specified by:
        `reset` in interface `DataLoader`

    - #### getOwner

          public final Component getOwner()

      Description copied from interface: `DataLoader`
      Returns the associated owner component of this DataLoader.
      Specified by:
        `getOwner` in interface `DataLoader`

    - #### getOffset

          public int getOffset()

      Description copied from interface: `DataLoader`
      Returns the requested visible offset of the current loaded data chunk.
      Specified by:
        `getOffset` in interface `DataLoader`
      Returns:
        the requested visible offset of the current loaded data chunk.

    - #### getLimit

          public int getLimit()

      Description copied from interface: `DataLoader`
      Returns the required visible limit size of the current loaded data chunk to be shown on the screen.
      Specified by:
        `getLimit` in interface `DataLoader`
      Returns:
        the required visible limit size of the current loaded data chunk to be shown on the screen.

    - #### getTotalSize

          public int getTotalSize()

      Description copied from interface: `DataLoader`
      Returns the total size of the data.
      Specified by:
        `getTotalSize` in interface `DataLoader`
      Returns:
        the total size of the data.

    - #### doGroupsDataChange

          public void doGroupsDataChange​(GroupsDataEvent event)

      updates the status of the changed group.
      Specified by:
        `doGroupsDataChange` in interface `DataLoader`
      Parameters:
        `event` -
      Since:
        8.0.4

    - #### doListDataChange

          public void doListDataChange​(ListDataEvent event)

      Description copied from interface: `DataLoader`
      Handle event when ListDataEvent is fired from owner component.
      Specified by:
        `doListDataChange` in interface `DataLoader`

    - #### newUnloadedItem

          protected final Listitem newUnloadedItem​(ListitemRenderer renderer,
                                                   int index)

      Creates an new and unloaded listitem.

    - #### getRealRenderer

          public java.lang.Object getRealRenderer()

      Description copied from interface: `DataLoader`
      Return the renderer to do rendering.
      Specified by:
        `getRealRenderer` in interface `DataLoader`

    - #### syncModel

          public void syncModel​(int offset,
                                int limit)

      Description copied from interface: `DataLoader`
      Synchronizes the owner component to be consistent with the specified model.
      Specified by:
        `syncModel` in interface `DataLoader`
      Parameters:
        `offset` - the starting index of the range to do data synchronize.
        `limit` - the size of the range to do data synchronize. -1 means the current range.

    - #### inPagingMold

          protected boolean inPagingMold()

    - #### inSelectMold

          protected boolean inSelectMold()

    - #### updateModelInfo

          public void updateModelInfo()

      Description copied from interface: `DataLoader`
      Used to update some extra control information to the client.
      Specified by:
        `updateModelInfo` in interface `DataLoader`

    - #### setLoadAll

          public void setLoadAll​(boolean b)

      Description copied from interface: `DataLoader`
      Sets whether to always load all items from ListModel.
      Specified by:
        `setLoadAll` in interface `DataLoader`

    - #### isCropper

          public boolean isCropper()

      Description copied from interface: `Cropper`
      Returns whether it is a cropper, i.e., cropping is applied.

      Note: this method is called when an child is detached, so you have to count one more for the total number of children. Example <= must be used, not <:
      `getChildCount() <= getPageSize()`

      The result of returning false is the same as not declaring with `Cropper`.

      Specified by:
        `isCropper` in interface `Cropper`

    - #### getAvailableAtClient

          public final java.util.Set<? extends Component> getAvailableAtClient()

      Retrieves the children available at client.

      It can not be overridden. Rather, override `getAvailableAtClient(boolean)` instead.

      Specified by:
        `getAvailableAtClient` in interface `Cropper`

    - #### getAvailableAtClient

          protected java.util.Set<? extends Component> getAvailableAtClient​(boolean itemOnly)

      Retrieves the children available at client with more control.

      Derived class shall override this method rather than `getAvailableAtClient()`.

      Parameters:
        `itemOnly` - whether to return only `Listitem` and derives.
      Since:
        5.0.10

    - #### getAvailableAtClient

          protected java.util.Set<? extends Component> getAvailableAtClient​(int offset,
                                                                            int limit,
                                                                            boolean itemOnly)

      Retrieves the children available at the client within the given range.
      Parameters:
        `itemOnly` - whether to return only `Listitem` and derives.
      Since:
        5.0.10

    - #### getCropOwner

          public Component getCropOwner()

      Description copied from interface: `Cropper`
      Returns the owner of the cropping scope. In most cases, `Cropper.getAvailableAtClient()` returns only the available direct children of this component, and this method returns this component. It is so-called a single-level cropping, such as listbox and tree.

      If you want to implement multi-level cropping, such as tree, you can consider the whole tree as a cropping scope. And, `Cropper.getAvailableAtClient()` returns all available items, not just the child of this component. In additions, this method returns the tree.

      Specified by:
        `getCropOwner` in interface `Cropper`