0

bug for multiple tree clearSelection()

asked 2010-10-18 00:44:47 +0800

yuzexu_zk gravatar image yuzexu_zk
240 2

updated 2010-10-18 00:45:58 +0800

test.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<window
use="com.test.TestWindow"
title="new page title" border="normal">

<tree id="tree" height="300px" checkmark="true" multiple="true"/>
<checkbox label="dd" forward="onSelectAll"/>
</window>
</zk>

Test.java


public class TestWindow extends Window implements AfterCompose
{
private Tree tree;

@Override
public void afterCompose()
{
Components.wireVariables(this , this);
tree.setTreeitemRenderer(new MyTreeitemRenderer());
tree.setModel(new MyTreeModel());
}

public void onSelectAll(ForwardEvent event)
{
final Checkbox cb = (Checkbox) event.getOrigin().getTarget();
if(cb.isChecked())
tree.selectAll();
else
tree.clearSelection();
}
class MyTreeitemRenderer implements TreeitemRenderer
{

@Override
public void render(Treeitem treeitem, Object arg1) throws Exception
{
treeitem.setLabel(arg1.toString());
treeitem.setSelected(true);

}

}
class MyTreeModel implements TreeModel
{

@Override
public void addTreeDataListener(TreeDataListener arg0)
{
// TODO Auto-generated method stub

}

@Override
public Object getChild(Object arg0, int arg1)
{
if(arg0.getClass().isArray())
return "tttt";
return "dd";
}

@Override
public int getChildCount(Object arg0)
{
if(arg0.getClass().isArray())
return ((String[]) arg0).length;
// TODO Auto-generated method stub
return "tttt".equals(arg0) ? 5 : 0;
}

@Override
public int[] getPath(Object arg0, Object arg1)
{
// TODO Auto-generated method stub
return null;
}

@Override
public Object getRoot()
{
// TODO Auto-generated method stub
return new String[]{"tttt"};
}

@Override
public boolean isLeaf(Object arg0)
{
if(arg0.getClass().isArray())
return false;
// TODO Auto-generated method stub
return !"tttt".equals(arg0);
}

@Override
public void removeTreeDataListener(TreeDataListener arg0)
{
// TODO Auto-generated method stub

}

}
}

while tree has only one root item
call tree.clearSelection() method can't clear the tree all item select status
but when tree has multi root item
it run fine

or
it can clear all selection when click the "clear all" button
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<window
use="com.test.TestWindow"
title="new page title" border="normal">

<tree id="tree" height="300px" checkmark="true" multiple="true"/>
<checkbox id="cb" label="dd" forward="onSelectAll"/>
<button label="clear all" onClick="clear()"/>
<zscript>
//bug for zk 5.0.4
//当树有多个根节点时不能正确清除所有节点的选择状态
void clear()
{
if(cb.isChecked() == true)
return;
for(Iterator iter = tree.getItems().iterator();iter.hasNext();)
{
final Treeitem treeitem = (Treeitem) iter.next();
treeitem.setSelected(false);
}
}
</zscript>
</window>
</zk>

delete flag offensive retag edit

1 Reply

Sort by » oldest newest

answered 2010-10-20 03:49:23 +0800

PeterKuo gravatar image PeterKuo
481 2

I posted the bug at:
https://sourceforge.net/tracker/?func=detail&aid=3091153&group_id=152762&atid=785191

Please track from there.

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2010-10-18 00:44:47 +0800

Seen: 283 times

Last updated: Oct 20 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More