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());
}
}