示例#1
0
  /**
   * Retrieves the children available at the client within the given range.
   *
   * @param itemOnly whether to return only {@link Listitem} and derives.
   * @since 5.0.10
   */
  protected Set<? extends Component> getAvailableAtClient(int offset, int limit, boolean itemOnly) {
    if (!isCropper()) return null;

    final Set<Component> avail = new LinkedHashSet<Component>(32);
    if (!itemOnly) {
      avail.addAll(_listbox.getHeads());
      final Listfoot listfoot = _listbox.getListfoot();
      if (listfoot != null) avail.add(listfoot);
      final Paging paging = _listbox.getPagingChild();
      if (paging != null) avail.add(paging);
      final Frozen frozen = _listbox.getFrozen();
      if (frozen != null) avail.add(frozen);
    }

    int pgsz = limit;
    int ofs = offset;
    if (_listbox.getItemCount() > 0) {
      Component item = _listbox.getItems().get(0);
      while (item != null) {
        if (pgsz == 0) break;
        if (item.isVisible() && item instanceof Listitem) {
          if (--ofs < 0) {
            --pgsz;
            avail.add(item);
          }
        }
        if (item instanceof Listgroup) {
          final Listgroup g = (Listgroup) item;
          if (!g.isOpen()) {
            for (int j = 0, len = g.getItemCount(); j < len; j++)
              item = (Listitem) item.getNextSibling();
          }
        }
        if (item != null) item = item.getNextSibling();
      }
    }
    return avail;
  }