/*
   * @see ViewerSorter#category(Object)
   */
  public int category(Object obj) {
    if (obj instanceof CPListElement) {
      CPListElement element = (CPListElement) obj;
      if (element.getParentContainer() != null) {
        return CONTAINER_ENTRY;
      }

      if (element.isJRE()) {
        return JRE_ENTRY;
      }

      if (element.isInNonModifiableContainer()) {
        return REQUIRED_ENTRY;
      }

      switch (element.getEntryKind()) {
        case IIncludePathEntry.CPE_LIBRARY:
          return LIBRARY;
        case IIncludePathEntry.CPE_PROJECT:
          return PROJECT;
        case IIncludePathEntry.CPE_SOURCE:
          return SOURCE;
        case IIncludePathEntry.CPE_CONTAINER:
          return CONTAINER;
      }
    } else if (obj instanceof CPListElementAttribute) {
      return ATTRIBUTE;
    } else if (obj instanceof IAccessRule) {
      return ATTRIBUTE;
    }
    return OTHER;
  }