tree2: Programatically setting of Treestate does only work on the first time
----------------------------------------------------------------------------

                 Key: TOMAHAWK-1556
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1556
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Tree2
    Affects Versions: 1.1.9
         Environment: MyFaces 1.1.1, Java SUN JDK 1.5. update 12, Bea Weblogic 
9.2 MP3, Windows XP SP3
            Reporter: Jochen List


I have a problem with resetting the state and Model of tree2 component.

On the Jsp a tree2 Component is placed. If the user clicks on a node, the node 
is marked as selected and highlighted with css. This works fine. Also on the 
page, there is a commandLink "Reset", which should resets the tree. Resetting 
means, that the root node will be selected and of course, highlighted with css.

If the users clicks on a treenode, the node is correctly marked as selected and 
highlighted. But if the users clicks on the reset Link, the root node will not 
be seleceted. The view shows the old node as selected. No reset is possible.

In my reset method in the ManagedBean, which is connected to the Reset 
commandLink, I'm creating a new treemodel, setting the path to the selected 
node, and setting the model to the tree. I have tried both options, recreating 
model and tree and only updating the model. Nothing worked as expected. In both 
cases, the old node is shown as selected.

I have debugged throw the code and in theBackingBean, everythink is correctly 
set. I can see the variables of htmlTree and treeModel and everythink looks 
like expected. Then I have debugged the isNodeSelected() Method of the tree, 
and I can see, that the getDataModel() Method of UITreeData returns a 
"_cachedModel" variable which contains the old model, with the old selected 
node. And this model seam to be used for rendering the jsp

The JSP Code:
<t:tree2 value="#{bean.model}" showRootNode="false" var="node"
     varNodeToggler="t" binding="#{bean.htmlTree}" clientSideToggle="false">
     <f:facet name="orga">
         <h:panelGroup>
             <t:commandLink immediate="false" styleClass="#{t.nodeSelected ? 
'selectedNode':'standardNode'}" actionListener="#{t.setNodeSelected}"
 action="#{bavCockpitBean.updateNodeList}">
                <t:graphicImage value="images/person.png" border="0" 
alt="TreeIcon"/>
                <h:outputText value="#{node.description}" />
             </t:commandLink>
        </h:panelGroup>
     </f:facet>
</t:tree2>


The ManagedBean Code:
private HtmlTree htmlTree = null;
private TreeModelBase treeModel = null;
private boolean forceTreeUpdate = true;

public String reset() {
    this.forceUpdate = true;
    return "success";
}

public TreeModel getHirarchieModel() {
    if ( forceUpdate ) {
        this.forceUpdate = false;
        TreeNode root = ... // Generating the tree;

        this.treeModel = new TreeModelBase(root);
        this.treeModel.getTreeState().setSelected( "0:0" );

        this.htmlTree = new HtmlTree();
        tree.setModel(this.treeModel);

        return this.treeModel;

}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to