ItEr24S09CUVistaRecursosTempoPorProxectoItEr23S11: Using tree to show load lines names
This commit is contained in:
parent
56fefb45db
commit
f0690178d1
3 changed files with 53 additions and 29 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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%;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue