/** * 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 mouseReleased(MouseEvent event) { PropertySheetTable table = (PropertySheetTable) event.getComponent(); int row = table.rowAtPoint(event.getPoint()); int column = table.columnAtPoint(event.getPoint()); if (row != -1 && column == 0) { // if we clicked on an Item, see if we clicked on its hotspot Item item = table.getSheetModel().getPropertySheetElement(row); int x = event.getX() - getIndent(table, item); if (x > 0 && x < HOTSPOT_SIZE) item.toggle(); } }