import javax.swing.tree.*; import org.alice.apis.moveandturn.*; DefaultTreeModel model; DefaultMutableTreeNode act; public void open (Object s) { DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); if (model == null) { model = new DefaultTreeModel (node); jTree1.setModel (model); } else { int inx = act.getChildCount(); model.insertNodeInto (node, act, inx); } act = node; } public void put (Object s) { DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); int inx = act.getChildCount(); model.insertNodeInto (node, act, inx); } public void close () { act = (DefaultMutableTreeNode) act.getParent(); } public void test () { open ("branch"); put ("item"); open ("another branch"); put ("anotheritem"); close (); close (); } public void detail (Composite c) { // import org.alice.apis.moveandturn.*; open (c.getName()); Transformable [] a = c.getComponents(); for (Transformable t : a) { if (t instanceof Composite) detail ( (Composite) t ); } close (); } public void info (Composite c) { detail (c); } public void run() { Window w = new Window (); w.setVisible (true); w.info (this); ... }