private Rectangle layoutRects() { int limit = helpers.size(); int visiCount = 0; int maxHeight = 50; int maxWidth = 50; int nextVisibleCol = Integer.MAX_VALUE; for (int i = 0; i < limit; i++) { TDHelper thisHelper = helpers.elementAt(i); if (thisHelper.indentation > nextVisibleCol) { thisHelper.drawRect = null; continue; } if (thisHelper.subsVisible) { nextVisibleCol = Integer.MAX_VALUE; } else { nextVisibleCol = thisHelper.indentation; } thisHelper.layoutRect(visiCount, thisHelper.indentation, auxData); visiCount++; maxWidth = Math.max(maxWidth, thisHelper.drawRect.x + thisHelper.drawRect.width); maxHeight = Math.max(maxHeight, thisHelper.drawRect.y + thisHelper.drawRect.height); } Rectangle rtnVal = new Rectangle(maxWidth + TDHelper.rowPixelBase, maxHeight + TDHelper.colPixelBase); this.setSize(Math.max(500, rtnVal.width), Math.max(500, rtnVal.height)); return rtnVal; }
void processClick(int x, int y) { int idx = findHelperAt(x, y); if (idx < 0) return; TDHelper h = helpers.elementAt(idx); h.subsVisible = !h.subsVisible; layoutRects(); repaint(); }
private static void createHelperStruct2( TreeDisplayable tgt, Vector<TDHelper> helpers, int indent, Object auxData) { TDHelper helper = new TDHelper(null, indent, true, doWindow); if (doWindow) helper.layoutRect(helpers.size(), indent, auxData); helpers.addElement(helper); if (tgt == null) return; for (int subobjCount = 0; ; subobjCount++) { try { TreeDisplayable subobj = tgt.getDrawTreeSubobj(subobjCount); if (subobj != null && subobj.nodeIsList()) { createHelperStruct2(subobj, helpers, indent + 1, auxData); } else { createHelperStruct(subobj, helpers, indent + 1, auxData); } } catch (TreeDrawException x) { break; } } }