/** * 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; }
public void configure(PropertySheetTable table, Item item) { isProperty = item.isProperty(); toggleState = item.isVisible(); showToggle = item.hasToggle(); indentWidth = getIndent(table, item); insets.left = indentWidth + (showToggle ? HOTSPOT_SIZE : 0) + 2; ; }
/** * Gets the CellEditor for the given row and column. It uses the editor registry to find a * suitable editor for the property. * * @see javax.swing.JTable#getCellEditor(int, int) */ public TableCellEditor getCellEditor(int row, int column) { if (column == 0) { return null; } Item item = getSheetModel().getPropertySheetElement(row); if (!item.isProperty()) return null; TableCellEditor result = null; Property propery = item.getProperty(); PropertyEditor editor = getEditorFactory().createPropertyEditor(propery); if (editor != null) result = new CellEditorAdapter(editor); return result; }