connysvensson
25 Jun 2008, 1:32 AM
I have a tree that I want to be completely expanded when it's rendered. I set the expanded attribute to true for all TreeItems when I render them but only the first one is expanded, but all show the expanded arrow next to the icon. So it seems like it's correctly reading the expanded attribute but there is some rendering bug. I see the same problem in the AccordionLayout demo in the explorer.
This is my code:
private void renderNavigation() {
tree = new Tree();
tree.addListener(Events.SelectionChange, new Listener<TreeEvent>() {
public void handleEvent(TreeEvent ev) {
setActiveModule(tree.getSelectedItem().getItemId());
}
});
TreeItem treeNode = new TreeItem();
for (ModuleCategory category : ModuleFactory.getCategories()) {
treeNode = new TreeItem(category.getName());
tree.getRootItem().add(treeNode);
renderTreeNode(category, treeNode);
}
menuPanel.add(tree);
}
private TreeItem renderTreeNode(ModuleCategory category, TreeItem treeNode) {
treeNode.setExpanded(true);
for (ModuleCategory subCategory : category.getCategories()) {
treeNode.add(renderTreeNode(subCategory, new TreeItem(category.getName())));
}
for (ModuleHolder module : category.getModules()) {
TreeItem item = new TreeItem(module.getName());
item.setItemId(module.getPath());
if (module.getIconStyle() != null)
item.setIconStyle(module.getIconStyle());
treeNode.add(item);
}
return treeNode;
}I have also attached a screenshot of how this tree look like when rendered.
This is my code:
private void renderNavigation() {
tree = new Tree();
tree.addListener(Events.SelectionChange, new Listener<TreeEvent>() {
public void handleEvent(TreeEvent ev) {
setActiveModule(tree.getSelectedItem().getItemId());
}
});
TreeItem treeNode = new TreeItem();
for (ModuleCategory category : ModuleFactory.getCategories()) {
treeNode = new TreeItem(category.getName());
tree.getRootItem().add(treeNode);
renderTreeNode(category, treeNode);
}
menuPanel.add(tree);
}
private TreeItem renderTreeNode(ModuleCategory category, TreeItem treeNode) {
treeNode.setExpanded(true);
for (ModuleCategory subCategory : category.getCategories()) {
treeNode.add(renderTreeNode(subCategory, new TreeItem(category.getName())));
}
for (ModuleHolder module : category.getModules()) {
TreeItem item = new TreeItem(module.getName());
item.setItemId(module.getPath());
if (module.getIconStyle() != null)
item.setIconStyle(module.getIconStyle());
treeNode.add(item);
}
return treeNode;
}I have also attached a screenshot of how this tree look like when rendered.