/**
   * Calculates the required left indent for a given item, given its type and its hierarchy level.
   */
  static int getIndent(PropertySheetTable table, Item item) {
    int indent = 0;

    if (item.isProperty()) {
      // it is a property, it has no parent or a category, and no child
      if ((item.getParent() == null || !item.getParent().isProperty()) && !item.hasToggle()) {
        indent = table.getWantsExtraIndent() ? HOTSPOT_SIZE : 0;
      } else {
        // it is a property with children
        if (item.hasToggle()) {
          indent = item.getDepth() * HOTSPOT_SIZE;
        } else {
          indent = (item.getDepth() + 1) * HOTSPOT_SIZE;
        }
      }

      if (table.getSheetModel().getMode() == PropertySheet.VIEW_AS_CATEGORIES
          && table.getWantsExtraIndent()) {
        indent += HOTSPOT_SIZE;
      }

    } else {
      // category has no indent
      indent = 0;
    }
    return indent;
  }