Results 1 to 1 of 1

Thread: Show empty TreePanel branch nodes using the branch icon (not leaf icon)

  1. #1
    Ext GWT Premium Member
    Join Date
    Mar 2009
    Vote Rating

    Default Show empty TreePanel branch nodes using the branch icon (not leaf icon)

    The default TreePanel changes the branch node icon to a leaf node icon if not children exist. This doesn't really make sense to me - in the GXT examples a folder of music gets a music icon if there is no music in it. It's still a folder - just an empty one!

    The code below is a ModelIconProvider that fixes this, with the caveat that you must add a property to each leaf model. See the javadoc for an example:


    import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
    import com.extjs.gxt.ui.client.widget.treepanel.TreeStyle;
     * Enables TreePanel to have branch nodes with no children preserving the (open and closed) branch node icon.
     * Default TreePanel changes the branch node to a leaf node if no children exist.
     * <p>Usage:
     * <pre>
     * TreePanel treePanel = new TreePanel<ModelData>(store));
     * treePanel.setIconProvider(new BranchPreservingIconProvider<ModelData>(treePanel));
     * ...
     * //Each leaf node model must set the {@link BranchPreservingIconProvider#IS_LEAF} property
     * BaseTreeModel treeItem = new BaseTreeModel();
     * treeItem.set(BranchPreservingIconProvider.IS_LEAF, Boolean.TRUE);
     * </pre>
     * </p>
     * @param <M> ModelData type
     * @author Carl Pritchett
    public class BranchPreservingIconProvider<M extends ModelData> implements ModelIconProvider<M>
        public static final String IS_LEAF = "isLeaf";
        private TreePanel<M> treePanel;
        public BranchPreservingIconProvider(TreePanel<M> treePanel)
            this.treePanel = treePanel;
        public AbstractImagePrototype getIcon(M model)
            TreeStyle ts = treePanel.getStyle();
            AbstractImagePrototype style = ts.getLeafIcon();
            if (!Boolean.TRUE.equals(model.get(IS_LEAF)))
                if (treePanel.isExpanded(model))
                    style = ts.getNodeOpenIcon();
                    style = ts.getNodeCloseIcon();
            return style;
    Last edited by The_Jackal; 11 Aug 2010 at 7:28 PM. Reason: Code fix

Similar Threads

  1. Change Tree Branch/Folder Icon
    By Lloyd K in forum Ext 2.x: Help & Discussion
    Replies: 10
    Last Post: 26 Jun 2014, 1:03 PM
  2. show custom icon in TreePanel leaf nodes
    By shirin_iir in forum Ext GWT: Discussion
    Replies: 1
    Last Post: 24 May 2010, 6:23 PM
  3. [CLOSED] [2.0-Branch r1749] icon in button misplaced (only FF)
    By takayser in forum Ext GWT: Bugs (2.x)
    Replies: 1
    Last Post: 19 Oct 2009, 2:38 AM
  4. How to hide the folder icon in non-leaf nodes in a TreePanel
    By rvillane in forum Ext 2.x: Help & Discussion
    Replies: 1
    Last Post: 3 Oct 2008, 9:43 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts