/**
   * Returns <code>TRUE</code> if the item should be filtered out.
   *
   * @param aItem item to check.
   * @return <code>TRUE</code> if the item should be filtered out.
   */
  private boolean isFiltered(ResultItemPanel aItem) {
    if (limitTime == -1L) return false;

    Date date = aItem.getItem().getDate();

    return date == null || date.getTime() <= limitTime;
  }
  /**
   * Removes the panel of the item from the group.
   *
   * @param item item to remove the panel of.
   * @return panel removed or <code>NULL</code> if not found.
   */
  public ResultItemPanel removeItemPanelFor(ResultItem item) {
    for (ResultItemPanel panel : items) {
      if (item == panel.getItem()) {
        // Panel found
        items.remove(panel);
        recalcView();
        return panel;
      }
    }

    return null;
  }
  /**
   * Registers item within the group.
   *
   * @param item item.
   * @return index within the group.
   */
  public int register(ResultItemPanel item) {
    int visibleItemsCount = getVisibleItemsCount();

    boolean priority = item.getItem().isPriority();
    int index = priority ? 0 : items.size();
    items.add(index, item);

    boolean filtered = isFiltered(item);
    item.setFiltered(filtered);

    if (!filtered) recalcView();
    if (visibleItemsCount == 0) setVisible(true);

    return index;
  }