[Logo] Enterprise Client Community
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Resorting a Tree  XML
Forum Index -> Development
Author Message
schmuck

Power User
[Avatar]

Joined: 08/04/2008 16:27:16
Messages: 83
Offline

Hello,

how can I resort a Tree (level)?

E.g. in the first level has a String in as Text (19.08.2010). Now I want to add a new Node.

With new TreeNode(tree.getRootNode()) the node is appended as last item.

Resorting the tree.getRootNode().getChildNodes() list by making the nodes Comparable and using the Collections.sort(tree.getRootNode().getChildeNodes() does not work.

How can I resort the tree?


regards,
Michael Schmuck
[ICQ]
CaptainCasa

Power User
[Avatar]

Joined: 21/11/2007 12:23:06
Messages: 5533
Offline

Hi,

we cannot reproduce what you describe, all sorting perfectly works after adding a new node - see code below...
Could you compare your code with ours? Thanks!

Regards, Björn

Code:
 package managedbeans;
 
 import java.io.Serializable;
 import java.util.Collections;
 
 import javax.faces.event.ActionEvent;
 
 import org.eclnt.editor.annotations.CCGenClass;
 import org.eclnt.jsfserver.elements.impl.FIXGRIDTreeBinding;
 import org.eclnt.jsfserver.elements.impl.FIXGRIDTreeItem;
 import org.eclnt.workplace.IWorkpageDispatcher;
 import org.eclnt.workplace.WorkpageDispatchedBean;
 
 @CCGenClass (expressionBase="#{d.TestUI}")
 
 public class TestUI
     extends WorkpageDispatchedBean 
     implements Serializable
 {
     protected String m_newNode = "new Node";
     public String getNewNode() { return m_newNode; }
     public void setNewNode(String value) { m_newNode = value; }
 
     public class TreeNode extends FIXGRIDTreeItem 
         implements java.io.Serializable
     {
         public TreeNode(FIXGRIDTreeItem parentNode)
         {
             super(parentNode);
         }
         @Override
         public int compareTo(Object o)
         {
             if (o instanceof TreeNode)
             {
                 TreeNode otn = (TreeNode)o;
                 return m_sortFIeld.compareTo(otn.getSortFIeld());
             }
             else
             {
                 return super.compareTo(o);
             }
         }
         
         protected String m_sortFIeld;
         public String getSortFIeld() { return m_sortFIeld; }
         public void setSortFIeld(String value) { m_sortFIeld = value; }
     }
 
     protected FIXGRIDTreeBinding<TreeNode> m_tree = new FIXGRIDTreeBinding<TreeNode>();
     protected TreeNode m_top;
 
     public TestUI(IWorkpageDispatcher workpageDispatcher)
     {
         super(workpageDispatcher);        
         m_top = new TreeNode(m_tree.getRootNode());
         m_top.setText("Top Node");
         m_top.setSortFIeld("Top Node");
         m_top.setStatus(TreeNode.STATUS_OPENED);
     }
 
     public FIXGRIDTreeBinding<TreeNode> getTree() { return m_tree; }
     
     public void onAddTopNode(ActionEvent event)
     {
         TreeNode top = new TreeNode(m_tree.getRootNode());
         top.setText("Top Node");
         top.setSortFIeld(m_newNode);
         top.setStatus(TreeNode.STATUS_ENDNODE);
         // sort items
         Collections.sort(m_tree.getRootNode().getChildNodes());
     }
     
     public void onAddNode(ActionEvent event)
     {
         TreeNode sub = new TreeNode(m_top);
         sub.setText("Sub Node");
         sub.setSortFIeld(m_newNode);
         sub.setStatus(TreeNode.STATUS_ENDNODE);
         // sort items
         Collections.sort(m_top.getChildNodes());
     }
 
 }
 

Björn Müller, CaptainCasa GmbH
schmuck

Power User
[Avatar]

Joined: 08/04/2008 16:27:16
Messages: 83
Offline

Thanks a lot.

My fault was in the implementation of the compareTo method.


regards,
Michael Schmuck
[ICQ]
 
Forum Index -> Development
Go to:   
Powered by JForum 2.1.6 © JForum Team