ItEr15S12RFComportamentoGraficoPlanificadorItEr14S13: Adding columns to left pane tree.

This commit is contained in:
Óscar González Fernández 2009-07-05 17:15:31 +02:00 committed by Javier Moran Rua
parent ff89434f23
commit 9bba8fdcc7
5 changed files with 68 additions and 43 deletions

View file

@ -12,6 +12,8 @@ import org.apache.commons.logging.LogFactory;
import org.zkoss.ganttz.TaskDetail.ITaskDetailNavigator; import org.zkoss.ganttz.TaskDetail.ITaskDetailNavigator;
import org.zkoss.ganttz.util.TaskBean; import org.zkoss.ganttz.util.TaskBean;
import org.zkoss.ganttz.util.TaskContainerBean; import org.zkoss.ganttz.util.TaskContainerBean;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.HtmlMacroComponent; import org.zkoss.zk.ui.HtmlMacroComponent;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
@ -20,10 +22,8 @@ import org.zkoss.zul.SimpleTreeModel;
import org.zkoss.zul.SimpleTreeNode; import org.zkoss.zul.SimpleTreeNode;
import org.zkoss.zul.Tree; import org.zkoss.zul.Tree;
import org.zkoss.zul.TreeModel; import org.zkoss.zul.TreeModel;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treeitem; import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer; import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;
public class ListDetails extends HtmlMacroComponent { public class ListDetails extends HtmlMacroComponent {
@ -31,11 +31,7 @@ public class ListDetails extends HtmlMacroComponent {
public void render(Treeitem item, Object data) throws Exception { public void render(Treeitem item, Object data) throws Exception {
SimpleTreeNode node = (SimpleTreeNode) data; SimpleTreeNode node = (SimpleTreeNode) data;
TaskBean taskBean = (TaskBean) node.getData(); TaskBean taskBean = (TaskBean) node.getData();
Treerow treerow = new Treerow();
treerow.setParent(item);
item.setOpen(isOpened(taskBean)); item.setOpen(isOpened(taskBean));
Treecell treecell = new Treecell();
treecell.setParent(treerow);
final int[] path = tasksTreeModel.getPath(tasksTreeModel.getRoot(), final int[] path = tasksTreeModel.getPath(tasksTreeModel.getRoot(),
node); node);
TaskDetail taskDetail = TaskDetail.create(taskBean, TaskDetail taskDetail = TaskDetail.create(taskBean,
@ -43,9 +39,10 @@ public class ListDetails extends HtmlMacroComponent {
if (taskBean instanceof TaskContainerBean) { if (taskBean instanceof TaskContainerBean) {
expandWhenOpened((TaskContainerBean) taskBean, item); expandWhenOpened((TaskContainerBean) taskBean, item);
} }
taskDetail.setParent(treecell); Component row = Executions.getCurrent().createComponents(
"~./ganttz/zul/taskdetail.zul", item, null);
taskDetail.doAfterCompose(row);
detailsForBeans.put(taskBean, taskDetail); detailsForBeans.put(taskBean, taskDetail);
taskDetail.afterCompose();
} }
private void expandWhenOpened(final TaskContainerBean taskBean, private void expandWhenOpened(final TaskContainerBean taskBean,

View file

@ -11,13 +11,14 @@ import org.apache.commons.logging.LogFactory;
import org.zkoss.ganttz.util.TaskBean; import org.zkoss.ganttz.util.TaskBean;
import org.zkoss.util.Locales; import org.zkoss.util.Locales;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.HtmlMacroComponent;
import org.zkoss.zk.ui.event.KeyEvent; import org.zkoss.zk.ui.event.KeyEvent;
import org.zkoss.zk.ui.ext.AfterCompose; import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Datebox; import org.zkoss.zul.Datebox;
import org.zkoss.zul.Textbox; import org.zkoss.zul.Textbox;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.api.Treerow;
public class TaskDetail extends HtmlMacroComponent implements AfterCompose { public class TaskDetail extends GenericForwardComposer {
public interface ITaskDetailNavigator { public interface ITaskDetailNavigator {
TaskDetail getBelowDetail(); TaskDetail getBelowDetail();
@ -149,7 +150,7 @@ public class TaskDetail extends HtmlMacroComponent implements AfterCompose {
} }
private ListDetails getListDetails() { private ListDetails getListDetails() {
Component current = getParent(); Component current = nameBox;
while (!(current instanceof ListDetails)) { while (!(current instanceof ListDetails)) {
current = current.getParent(); current = current.getParent();
} }
@ -214,9 +215,12 @@ public class TaskDetail extends HtmlMacroComponent implements AfterCompose {
associatedTextBox.setVisible(true); associatedTextBox.setVisible(true);
} }
@Override @Override
public void afterCompose() { public void doAfterCompose(Component component) throws Exception {
super.afterCompose(); super.doAfterCompose(component);
component.setVariable("top", this, true);
findComponents((Treerow) component);
updateComponents(); updateComponents();
taskBean.addFundamentalPropertiesChangeListener(new PropertyChangeListener() { taskBean.addFundamentalPropertiesChangeListener(new PropertyChangeListener() {
@ -227,6 +231,40 @@ public class TaskDetail extends HtmlMacroComponent implements AfterCompose {
}); });
} }
private void findComponents(Treerow row) {
List<Object> rowChildren = row.getChildren();
List<Treecell> treeCells = Planner.findComponentsOfType(Treecell.class,
rowChildren);
assert treeCells.size() == 3;
findComponentsForNameCell(treeCells.get(0));
findComponentsForStartDateCell(treeCells.get(1));
findComponentsForEndDateCell(treeCells.get(2));
}
private static Datebox findDateBoxOfCell(Treecell treecell) {
List<Object> children = treecell.getChildren();
return Planner.findComponentsOfType(Datebox.class, children).get(0);
}
private static Textbox findTextBoxOfCell(Treecell treecell) {
List<Object> children = treecell.getChildren();
return Planner.findComponentsOfType(Textbox.class, children).get(0);
}
private void findComponentsForNameCell(Treecell treecell) {
nameBox = (Textbox) treecell.getChildren().get(0);
}
private void findComponentsForStartDateCell(Treecell treecell) {
startDateTextBox = findTextBoxOfCell(treecell);
startDateBox = findDateBoxOfCell(treecell);
}
private void findComponentsForEndDateCell(Treecell treecell) {
endDateBox = findDateBoxOfCell(treecell);
endDateTextBox = findTextBoxOfCell(treecell);
}
public void updateBean() { public void updateBean() {
if (getEndDateBox().getValue().before(getStartDateBox().getValue())) { if (getEndDateBox().getValue().before(getStartDateBox().getValue())) {
updateComponents(); updateComponents();

View file

@ -26,12 +26,6 @@
<macro-uri>~./ganttz/zul/listdetails.zul</macro-uri> <macro-uri>~./ganttz/zul/listdetails.zul</macro-uri>
</component> </component>
<component>
<component-name>taskdetail</component-name>
<component-class>org.zkoss.ganttz.TaskDetail</component-class>
<macro-uri>~./ganttz/zul/taskdetail.zul</macro-uri>
</component>
<component> <component>
<component-name>ganttpanel</component-name> <component-name>ganttpanel</component-name>
<component-class>org.zkoss.ganttz.GanttPanel</component-class> <component-class>org.zkoss.ganttz.GanttPanel</component-class>

View file

@ -4,8 +4,13 @@
onClick="self.getParent().addTask();" /> onClick="self.getParent().addTask();" />
<button label="Engadir Contedor" <button label="Engadir Contedor"
onClick="self.getParent().addTaskContainer();" /> onClick="self.getParent().addTaskContainer();" />
<n:div id="listdetails_container"> <n:div id="listdetails_container">
<tree id="tasksTree"> <tree id="tasksTree">
<treecols sizable="false">
<treecol label="Name" />
<treecol label="Start Date" />
<treecol label="End Date" />
</treecols>
</tree> </tree>
</n:div> </n:div>
</zk> </zk>

View file

@ -1,22 +1,13 @@
<zk> <treerow sclass="taskdetail_grid">
<zscript><![CDATA[ <treecell>
top = self; <textbox ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" value="" onChange="top.updateBean();" class="task_title"/>
]]> </treecell>
</zscript> <treecell>
<hbox class="taskdetail_grid"> <textbox value="" ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" onChange="top.updateBean();" onOK="top.userWantsDateBox(self);" />
<textbox id="nameBox" ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" value="" onChange="top.updateBean();" class="task_title"/> <datebox compact="true" onChange="top.updateBean();" visible="${false}" onBlur="top.dateBoxHasLostFocus(self);"/>
<textbox id="startDateTextBox" value="" ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" onChange="top.updateBean();" onOK="top.userWantsDateBox(self);" /> </treecell>
<datebox id="startDateBox" compact="true" onChange="top.updateBean();" visible="${false}" onBlur="top.dateBoxHasLostFocus(self);"/> <treecell>
<textbox id="endDateTextBox" ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" value="" onChange="top.updateBean();" onOK="top.userWantsDateBox(self);"/> <textbox ctrlKeys="#down#up#right#left" onCtrlKey="top.userWantsToMove(self,event);" value="" onChange="top.updateBean();" onOK="top.userWantsDateBox(self);"/>
<datebox id="endDateBox" compact="true" onChange="top.updateBean();" visible ="${false}" onBlur="top.dateBoxHasLostFocus(self);" ctrlKeys="#down" onCtrlKey="top.userWantsDateBox(self)"/> <datebox compact="true" onChange="top.updateBean();" visible ="${false}" onBlur="top.dateBoxHasLostFocus(self);" ctrlKeys="#down" onCtrlKey="top.userWantsDateBox(self)"/>
</hbox> </treecell>
</treerow>
<zscript><![CDATA[
top.nameBox = nameBox;
top.startDateBox = startDateBox;
top.endDateBox = endDateBox;
top.startDateTextBox = startDateTextBox;
top.endDateTextBox = endDateTextBox;
]]>
</zscript>
</zk>