You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Sergey Plevko (JIRA)" <ji...@apache.org> on 2011/04/04 15:58:06 UTC

[jira] [Commented] (WICKET-3328) Selection remains after removing collapsed node in the tree.

    [ https://issues.apache.org/jira/browse/WICKET-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13015416#comment-13015416 ] 

Sergey Plevko commented on WICKET-3328:
---------------------------------------

Solutions with changing tree.updateTree() to tree.updateTree(target) doesn't work. Generally speaking i don't see a big difference between this methods.

Please, reopen the issue.

> Selection remains after removing collapsed node in the tree.
> ------------------------------------------------------------
>
>                 Key: WICKET-3328
>                 URL: https://issues.apache.org/jira/browse/WICKET-3328
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-core
>    Affects Versions: 1.4.14
>         Environment: tomcat  6.0.26, win 7
>            Reporter: Sergey Plevko
>            Assignee: Martin Grigorov
>
> If we fire 'node removed event' in the tree, it deselects only node which is currently shown (not under collapsed parent).
> There are two use cases which show correct and incorrect behavior.
> Step 1: expand ROOT
> Step 2: expand SUBTREE
> Step 3: select LEAF
> Step 4: press 'Print Selection'
> Result 4: 'Selected Node: LEAF'
> Step 5: press 'Delete SUBTREE'
> Step 6: press 'Print Selection'
> Result 6: 'Selected Node: --NO SELECTION--'
> This behavior is correct.
> Step 1: expand ROOT
> Step 2: expand SUBTREE
> Step 3: select LEAF
> Step 4: press 'Print Selection'
> Result 4: 'Selected Node: LEAF'
> -------------------------------------
> Step 5: collapse SUBTREE
> ------------------------------------- 
> Step 6: press 'Delete SUBTREE'
> Step 7: press 'Print Selection'
> Result 7: 'Selected Node: LEAF'
> 'LEAF' is still selected, but there is no such node in the tree model.
> Use the code below to reproduce the bug.
> Test.html
> <html>
> <body>
>     <div wicket:id="tree"></div>
>     <input type="button" wicket:id="printSelection" value="Print Selection">
>     <input type="button" wicket:id="delete" value="Delete 'SUBTREE'">
>     <br>Selected Node:
>     <b><span wicket:id="selection"></span></b>
> </body>
> </html>
> Test.java
> public class Test extends WebPage {
>     private DefaultMutableTreeNode subTree;
>     public Test() {
>         final LinkTree tree = new LinkTree("tree", createTreeModel());
>         add(tree);
>         final Label selection = new Label("selection");
>         add(new AjaxLink("printSelection") {
>             @Override
>             public void onClick(AjaxRequestTarget target) {
>                 Collection<Object> selectedNodes = tree.getTreeState().getSelectedNodes();
>                 String selectionString = "--NO SELECTION--";
>                 if (selectedNodes.size() > 0) {
>                     selectionString = selectedNodes.iterator().next().toString();
>                 }
>                 selection.setDefaultModel(new Model<String>(selectionString));
>                 target.addComponent(selection);
>             }
>         });
>         add(new AjaxLink("delete") {
>             @Override
>             public void onClick(AjaxRequestTarget target) {
>                 DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModelObject();
>                 if(subTree != null) {
>                     treeModel.removeNodeFromParent(subTree);
>                     subTree = null;
>                 }
>                 tree.updateTree();
>             }
>         });
>         selection.setOutputMarkupId(true);
>         add(selection);
>     }
>     protected TreeModel createTreeModel() {
>         DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("ROOT");
>         subTree = new DefaultMutableTreeNode("SUBTREE");
>         DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("LEAF");
>         rootNode.add(subTree);
>         subTree.add(leaf);
>         return new DefaultTreeModel(rootNode);
>     }
> }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira