Hi Salva, There is a code sample for ULCTableTree in the ULCSet sample application. This should give you an idea about how to set up the model for a ULCTableTree.
You can initialize your TableTreeModel from a text file when your application starts and set this model on ULCTableTree. ULCTableTree, like ULCTable & ULCTree, implements lazy loading of data on the client side - meaning that only those rows/nodes that become visible will be uploaded to the client to the server. Now, if you don't want to initialize the model in one shot because it is too time consuming and it will slow down the app statrtup, then you can initialize part of the model initially. You can then use a ULCPollingTimer to add the model piece by piece. Another option in Servlet context is to make the model an adpter to a collection. This collection can be initialized in a separate servlet and it is shared through the session with your ULC application. You can certainly add child nodes to a node when it is double-clicked. See the snippet below. But fetching the model data from a web service on some view action will slow down your UI. You should do this only if the child node data is dependent on some context. As far as possible you should keep the model initialized so that data is available to the view on demand. I hope this helps. Thanks and regards, Janak -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of salva vilarrasa Sent: Tuesday, May 16, 2006 5:39 PM To: [EMAIL PROTECTED] Com Subject: [ULC-developer] tabletree Hi all, I would like to build a TableTree setting the tree from a txt file, the problem is that i do not want to initialize the values of the table, because performance. Is it possible to get the values from a web service when a node is doubleclicked or opened? any clue about how to do it, cause i am struggling with TableTree's. Thanks. ---------- import com.ulcjava.base.application.AbstractApplication; import com.ulcjava.base.application.ULCBoxPane; import com.ulcjava.base.application.ULCFrame; import com.ulcjava.base.application.ULCScrollPane; import com.ulcjava.base.application.ULCTableTree; import com.ulcjava.base.application.event.ActionEvent; import com.ulcjava.base.application.event.IActionListener; import com.ulcjava.base.application.tabletree.DefaultTableTreeModel; import com.ulcjava.base.application.tabletree.ITableTreeModel; import com.ulcjava.base.application.tabletree.ITableTreeNode; import com.ulcjava.base.application.tree.TreePath; import com.ulcjava.base.development.DevelopmentRunner; import com.ulcjava.base.shared.internal.IllegalArgumentException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class TableTreeDemo extends AbstractApplication { private static final String UNIX_ICON_PATH = "unix.gif"; private static final String IBM_ICON_PATH = "ibm.gif"; private static final String BSD_ICON_PATH = "bsd.gif"; private static final String SUN_ICON_PATH = "sun.gif"; private static final String SOLARIS_ICON_PATH = "sol.gif"; private static final String DEC_ICON_PATH = "dec.gif"; private static final String HP_ICON_PATH = "hp.gif"; public static class UnixTableTreeNode implements ITableTreeNode, Serializable { public static final int NAME_COLUMN = 0; public static final int COMPANY_COLUMN = 1; public static final int YEAR_COLUMN = 2; public static final int ICON_COLUMN = 3; private String fName; private String fCompany; private int fYear; private String fIconFilePath; private UnixTableTreeNode fParent; private List fChildren; public UnixTableTreeNode(String name, String company, int year, String iconFilePath) { fName = name; fCompany = company; fYear = year; fIconFilePath = iconFilePath; fChildren = new ArrayList(); } public void addChild(UnixTableTreeNode child) { fChildren.add(child); child.setParent(this); } public ITableTreeNode getChildAt(int index) { return (ITableTreeNode)fChildren.get(index); } public int getChildCount() { return fChildren.size(); } public ITableTreeNode getParent() { return fParent; } private void setParent(UnixTableTreeNode parent) { fParent = parent; } public Object getValueAt(int column) { switch (column) { case NAME_COLUMN: return fName; case COMPANY_COLUMN: return fCompany; case YEAR_COLUMN: return new Integer(fYear); case ICON_COLUMN: return fIconFilePath; default: throw new IllegalArgumentException("unknown attribute: " + column); } } public boolean isLeaf() { return false; } public int getIndex(ITableTreeNode aChild) { return fChildren.indexOf(aChild); } } private static final int ROW_HEIGHT = 38; private ULCTableTree fTableTree; private final ULCTableTree buildTableTree() { ULCTableTree result = new ULCTableTree(); result.setModel(createTableTreeModel()); result.setRowHeight(ROW_HEIGHT); result.getColumn("Unix Version").setPreferredWidth(200); return result; } public ULCBoxPane getContent() { ULCScrollPane scrollPane = new ULCScrollPane(fTableTree); ULCBoxPane box = new ULCBoxPane(); box.add(ULCBoxPane.BOX_EXPAND_EXPAND, scrollPane); return box; } private ITableTreeModel createTableTreeModel() { UnixTableTreeNode multics = new UnixTableTreeNode("Multics", "AT&T", 1969, UNIX_ICON_PATH); UnixTableTreeNode unix = new UnixTableTreeNode("Unix", "AT&T", 1969, UNIX_ICON_PATH); UnixTableTreeNode unix1 = new UnixTableTreeNode("Version 1", "AT&T", 1971, UNIX_ICON_PATH); UnixTableTreeNode unix4 = new UnixTableTreeNode("Version 4", "AT&T", 1973, UNIX_ICON_PATH); UnixTableTreeNode unix6 = new UnixTableTreeNode("Version 6", "AT&T", 1975, UNIX_ICON_PATH); UnixTableTreeNode unix7 = new UnixTableTreeNode("Version 7", "AT&T", 1979, UNIX_ICON_PATH); UnixTableTreeNode systemIII = new UnixTableTreeNode("System III", "AT&T", 1982, UNIX_ICON_PATH); UnixTableTreeNode systemV = new UnixTableTreeNode("System V", "AT&T", 1983, UNIX_ICON_PATH); UnixTableTreeNode svr2 = new UnixTableTreeNode("SVR 2", "AT&T", 1984, UNIX_ICON_PATH); UnixTableTreeNode svr3 = new UnixTableTreeNode("SVR 3", "AT&T", 1987, UNIX_ICON_PATH); UnixTableTreeNode svr32 = new UnixTableTreeNode("SVR 3.2", "AT&T", 1988, UNIX_ICON_PATH); UnixTableTreeNode svr4 = new UnixTableTreeNode("SVR 4", "AT&T", 1989, UNIX_ICON_PATH); UnixTableTreeNode svr42 = new UnixTableTreeNode("SVR 4.2", "USL", 1992, UNIX_ICON_PATH); UnixTableTreeNode aix30 = new UnixTableTreeNode("AIX 3.0", "IBM", 1991, IBM_ICON_PATH); UnixTableTreeNode aix32 = new UnixTableTreeNode("AIX 3.2", "IBM", 1992, IBM_ICON_PATH); UnixTableTreeNode aix41 = new UnixTableTreeNode("AIX 4.1", "IBM", 1993, IBM_ICON_PATH); UnixTableTreeNode bsd41 = new UnixTableTreeNode("4.1BSD", "Berkeley", 1979, BSD_ICON_PATH); UnixTableTreeNode bsd42 = new UnixTableTreeNode("4.2BSD", "Berkeley", 1984, BSD_ICON_PATH); UnixTableTreeNode bsd43 = new UnixTableTreeNode("4.3BSD", "Berkeley", 1986, BSD_ICON_PATH); UnixTableTreeNode bsd44 = new UnixTableTreeNode("4.4BSD", "Berkeley", 1993, BSD_ICON_PATH); UnixTableTreeNode sunOS = new UnixTableTreeNode("SunOS", "Sun", 1980, SUN_ICON_PATH); UnixTableTreeNode sunOS40 = new UnixTableTreeNode("SunOS 4.0", "Sun", 1991, SUN_ICON_PATH); UnixTableTreeNode solaris1 = new UnixTableTreeNode("Solaris 1", "Sun", 1992, SOLARIS_ICON_PATH); UnixTableTreeNode solaris2 = new UnixTableTreeNode("Solaris 2", "Sun", 1993, SOLARIS_ICON_PATH); UnixTableTreeNode ultrix32 = new UnixTableTreeNode("Ultrix 3.2", "DEC", 1981, DEC_ICON_PATH); UnixTableTreeNode hpux = new UnixTableTreeNode("HP-UX", "HP", 1981, HP_ICON_PATH); UnixTableTreeNode hpux7 = new UnixTableTreeNode("HP-UX 7", "HP", 1991, HP_ICON_PATH); UnixTableTreeNode root = multics; multics.addChild(unix); unix.addChild(unix1); unix1.addChild(unix4); unix4.addChild(unix6); unix6.addChild(unix7); unix7.addChild(systemIII); systemIII.addChild(systemV); systemV.addChild(svr2); svr2.addChild(svr3); svr3.addChild(svr32); svr32.addChild(svr4); svr4.addChild(svr42); svr4.addChild(aix30); aix30.addChild(aix32); aix32.addChild(aix41); unix7.addChild(bsd41); bsd41.addChild(bsd42); bsd42.addChild(bsd43); bsd43.addChild(bsd44); bsd42.addChild(sunOS); sunOS.addChild(sunOS40); sunOS40.addChild(solaris1); solaris1.addChild(solaris2); sunOS.addChild(ultrix32); bsd42.addChild(hpux); hpux.addChild(hpux7); return new DefaultTableTreeModel(root, new String[]{"Unix Version", "Company", "Year", ""}); } public void start() { fTableTree = buildTableTree(); fTableTree.addActionListener(new IActionListener() { public void actionPerformed(ActionEvent event) { ULCTableTree src = (ULCTableTree)event.getSource(); TreePath path = src.getSelectedPath(); UnixTableTreeNode node = (UnixTableTreeNode)path.getLastPathComponent(); node.addChild(new UnixTableTreeNode("1", "1", 1, "1")); node.addChild(new UnixTableTreeNode("1", "1", 1, "1")); node.addChild(new UnixTableTreeNode("1", "1", 1, "1")); ((DefaultTableTreeModel)(fTableTree.getModel())).nodeStructur eChanged(node); } }); ULCFrame frame = new ULCFrame("TableTreeDemo"); frame.setSize(400,400); frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE); frame.add(getContent()); frame.setVisible(true); } public static void main(String[] args) { DevelopmentRunner.setApplicationClass(TableTreeDemo.class); DevelopmentRunner.run(); } } _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer
