/* (non-Javadoc)
   * @see javax.swing.JTable#getCellRenderer(int, int)
   */
  public TableCellRenderer getCellRenderer(int row, int column) {
    PropertySheetTableModel.Item item = getSheetModel().getPropertySheetElement(row);

    switch (column) {
      case PropertySheetTableModel.NAME_COLUMN:
        // name column gets a custom renderer
        return nameRenderer;

      case PropertySheetTableModel.VALUE_COLUMN:
        {
          if (!item.isProperty()) return nameRenderer;

          // property value column gets the renderer from the factory
          Property property = item.getProperty();
          TableCellRenderer renderer = getRendererFactory().createTableCellRenderer(property);
          if (renderer == null) renderer = getCellRenderer(property.getType());
          return renderer;
        }
      default:
        // when will this happen, given the above?
        return super.getCellRenderer(row, column);
    }
  }