ItEr24S09CUVistaRecursosTempoPorProxectoItEr23S11: Using tree to show load lines names

This commit is contained in:
Óscar González Fernández 2009-09-02 20:49:58 +02:00
parent 56fefb45db
commit f0690178d1
3 changed files with 53 additions and 29 deletions

View file

@ -4,38 +4,73 @@ import java.util.List;
import org.zkoss.ganttz.data.resourceload.LoadTimeLine;
import org.zkoss.ganttz.data.resourceload.LoadTimelinesGroup;
import org.zkoss.ganttz.util.MutableTreeModel;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.HtmlMacroComponent;
import org.zkoss.zul.Div;
import org.zkoss.zul.Label;
import org.zkoss.zul.api.Box;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;
import org.zkoss.zul.api.Tree;
public class ResourceLoadLeftPane extends HtmlMacroComponent {
private final List<LoadTimelinesGroup> groups;
private MutableTreeModel<LoadTimeLine> modelForTree;
public ResourceLoadLeftPane(List<LoadTimelinesGroup> groups) {
this.groups = groups;
this.modelForTree = createModelForTree();
}
private void addGroups(Box container) {
for (LoadTimelinesGroup loadTimelinesGroup : this.groups) {
LoadTimeLine principal = loadTimelinesGroup.getPrincipal();
container.appendChild(createFirstLevel(principal));
for (LoadTimeLine loadTimeLine : loadTimelinesGroup.getChildren()) {
container.appendChild(createSecondLevel(loadTimeLine));
}
}
}
@Override
public void afterCompose() {
super.afterCompose();
addGroups(getContainer());
getContainerTree().setModel(modelForTree);
getContainerTree().setTreeitemRenderer(getRendererForTree());
}
private Box getContainer() {
return (Box) getFellow("leftVBox");
private TreeitemRenderer getRendererForTree() {
return new TreeitemRenderer() {
@Override
public void render(Treeitem item, Object data) throws Exception {
LoadTimeLine line = (LoadTimeLine) data;
Treerow row = new Treerow();
Treecell cell = new Treecell();
Component component = createComponent(line);
item.appendChild(row);
row.appendChild(cell);
cell.appendChild(component);
}
private Component createComponent(LoadTimeLine line) {
return isTopLevel(line) ? createFirstLevel(line)
: createSecondLevel(line);
}
private boolean isTopLevel(LoadTimeLine line) {
int[] path = modelForTree.getPath(modelForTree.getRoot(), line);
return path.length == 0;
}
};
}
private MutableTreeModel<LoadTimeLine> createModelForTree() {
MutableTreeModel<LoadTimeLine> result = MutableTreeModel
.create(LoadTimeLine.class);
for (LoadTimelinesGroup loadTimelinesGroup : this.groups) {
LoadTimeLine principal = loadTimelinesGroup.getPrincipal();
result.addToRoot(principal);
result.add(principal, loadTimelinesGroup.getChildren());
}
return result;
}
private Tree getContainerTree() {
return (Tree) getFellow("loadsTree");
}
private Component createFirstLevel(LoadTimeLine principal) {

View file

@ -3,6 +3,9 @@
top = self;
]]>
</zscript>
<vbox id="leftVBox" sclass="resourceloadleftpane">
</vbox>
<tree id="loadsTree" sclass="resourceloadleftpane">
<treecols sizable="false">
<treecol label="Name"/>
</treecols>
</tree>
</zk>

View file

@ -386,21 +386,7 @@ tr.z-vbox-sep {
padding-right: 15px;
overflow-y: hidden;
}
.resourceloadleftpane .firstlevel {
height:10px;
border: 1px;
margin-bottom:10px;
margin-top:10px;
border-bottom: 1px dotted #CCCCCC;
}
.resourceloadleftpane .secondlevel {
height:10px;
margin-bottom:10px;
margin-top:10px;
margin-left: 8px;
border-bottom: 1px dotted #CCCCCC;
}
.resourceloadlist {
margin-top: 70px;
width: 80%;