Hi Florian I see. My examples only deal with tables and lists and combo boxes, but I had never thought about a solution for trees, yet. I suggest to ask Canoo for advice on this tree-specific issue (I'm to occupied at the moment to look into it).
I hope that at least it became clear that you cannot modify the text attribute in the renderer. Regards, Etienne -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Thursday, November 16, 2006 2:28 AM To: [email protected] Subject: RE: [ULC-developer] ITreeCellRenderer: setText() Hi Etienne, thanks for the quick answer. I've tried to implement my TreeModel as shown in your sample, but it won't work. The problem is, that if the getRoot()or getChild() method returns a string instead of original object the Tree won't be built. In the getChildCount method I need the parent as original object to return number of childs. Any suggestions? Kind Regards Florian public class DecoratedTreeModel extends AbstractTreeModel { private ITreeModel fDecoratee; private IValueRenderer fRenderer; public DecoratedTreeModel(ITreeModel decoratee, IValueRenderer renderer) { fDecoratee = decoratee; fRenderer = renderer; } public Object getRoot() { Object rawValue = fDecoratee.getRoot(); Object renderedValue = fRenderer.render(rawValue); return renderedValue; } public Object getChild(Object parent, int index) { Object rawValue = fDecoratee.getChild(parent,index); Object renderedValue = fRenderer.render(rawValue); return renderedValue; } public int getChildCount(Object parent) { return fDecoratee.getChildCount(parent); } public boolean isLeaf(Object node) { return fDecoratee.isLeaf(node); } public int getIndexOfChild(Object parent, Object child) { return fDecoratee.getIndexOfChild(parent,child); } public ITreeModel getDecoratee() { return fDecoratee; } public static interface IValueRenderer { Object render(Object inRawValue); } } private ULCTree getTrvStructure() { if (trvStructure == null) { trvStructure = new ULCTree(); trvStructure.setShowsRootHandles(true); trvStructure.setModel(new DecoratedTreeModel (getPackageDetailModel(), new TreeValueRenderer())); } return trvStructure; } public static class TreeValueRenderer implements DecoratedTreeModel.IValueRenderer { public Object render(Object inRawValue) { String valueString = ""; if (inRawValue instanceof GeneralPackageBean){ valueString = "Package"; System.out.println(valueString); }else{ if(inRawValue instanceof HeadRecordDK){ valueString = "DK Headrecord"; System.out.println(valueString); }} return valueString; } } Hi Florian This might help... http://www.jroller.com/page/ulc/?anchor=renderer_limitations Etienne -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Wednesday, November 15, 2006 6:18 AM To: [email protected] Subject: [ULC-developer] ITreeCellRenderer: setText() Hi, I'm trying to implement a ITreeCellRenderer for my ULCTree, but i cannot set the text for the items. The displayed text near every node seems to be the result of object.toString()... Here is the code: private ITreeCellRenderer createTreeCellRenderer() { DefaultTreeCellRenderer treeCellRenderer = new DefaultTreeCellRenderer() { public IRendererComponent getTreeCellRendererComponent( ULCTree tree, Object value, boolean selected, boolean expanded, boolean leaf, boolean hasFocus){ if (value instanceof GeneralPackageBean){ setClosedIcon(closedPackage); setLeafIcon(closedPackage); setOpenIcon(openPackage); setText("package"); }else{ if(value instanceof HeadRecordDK){ setClosedIcon(headRecordDK); setLeafIcon(headRecordDK); setOpenIcon(headRecordDK); setText("head record"); }} return super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, hasFocus); } }; return treeCellRenderer; } However, in the mailing list archive I found a post from June 2005 concerning this issue. http://lists.canoo.com/mailman/private/ulc-developer/2005/002383.html But the posted workaround won't work with my TreeModel. Is there any other solution since ULC 6.1? Freundliche Grüße /Best Regards Florian Mair DACHSER GmbH & Co. KG Hauptniederlassung / Head Office IT, Finance, Administration and Personnel (IFAP) Team EDI Memminger Str. 140 87439 Kempten mailto:[EMAIL PROTECTED] http://www.dachser.com _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer
