[Bug #791] Fix bug

There were some parts of the hours column logic that had not been
pulled up.

FEA: ItEr67S04BugFixing
This commit is contained in:
Óscar González Fernández 2011-01-05 15:04:58 +01:00
parent db10e8d982
commit e7131a6af5
3 changed files with 28 additions and 52 deletions

View file

@ -61,7 +61,6 @@ import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Constraint;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Textbox;
@ -396,8 +395,6 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
public class OrderElementTreeitemRenderer extends Renderer {
private Map<OrderElement, Intbox> hoursIntBoxByOrderElement = new HashMap<OrderElement, Intbox>();
public OrderElementTreeitemRenderer() {
}
@ -442,7 +439,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
IOrderElementModel model = orderModel
.getOrderElementModel(currentOrderElement);
orderElementController.openWindow(model);
updateOrderElementHours(currentOrderElement);
updateHoursFor(currentOrderElement);
}
protected void addCodeCell(final OrderElement orderElement) {
@ -660,31 +657,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
IOrderElementModel model = orderModel
.getOrderElementModel(currentOrderElement);
orderElementController.openWindow(model);
updateOrderElementHours(currentOrderElement);
}
private void updateOrderElementHours(OrderElement orderElement) {
if ((!readOnly) && (orderElement instanceof OrderLine)) {
Intbox boxHours = (Intbox) getRenderer().hoursIntBoxByOrderElement
.get(orderElement);
boxHours.setValue(orderElement.getWorkHours());
Treecell tc = (Treecell) boxHours.getParent();
setReadOnlyHoursCell(orderElement, boxHours, tc);
boxHours.invalidate();
}
}
private void setReadOnlyHoursCell(OrderElement orderElement,
Intbox boxHours, Treecell tc) {
if ((!readOnly) && (orderElement instanceof OrderLine)) {
if (orderElement.getHoursGroups().size() > 1) {
boxHours.setReadonly(true);
tc.setTooltiptext(_("Not editable for containing more that an hours group."));
} else {
boxHours.setReadonly(false);
tc.setTooltiptext("");
}
}
getRenderer().updateHoursFor(currentOrderElement);
}
public Treeitem getTreeitemByOrderElement(OrderElement element) {
@ -753,18 +726,6 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
}
}
@Override
protected void refreshHoursBox(OrderElement node) {
List<OrderElement> parentNodes = getModel().getParents(node);
// Remove the last element because it's an
// Order node, not an OrderElement
parentNodes.remove(parentNodes.size() - 1);
for (OrderElement parent : parentNodes) {
getRenderer().hoursIntBoxByOrderElement.get(parent)
.setValue(parent.getWorkHours());
}
}
@Override
protected IHoursGroupHandler<OrderElement> getHoursGroupHandler() {
return new IHoursGroupHandler<OrderElement>() {

View file

@ -37,7 +37,6 @@ import org.zkoss.zul.Button;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
/**
* Controller for template element tree <br />
@ -189,7 +188,7 @@ public class TemplatesTreeController extends
}
@Override
public TreeitemRenderer getRenderer() {
public TemplatesTreeRenderer getRenderer() {
return new TemplatesTreeRenderer();
}
@ -221,11 +220,6 @@ public class TemplatesTreeController extends
return tooltipText.toString();
}
@Override
protected void refreshHoursBox(OrderElementTemplate node) {
// we do nothing, since there isn't an hours box in this tree
}
@Override
protected IHoursGroupHandler<OrderElementTemplate> getHoursGroupHandler() {
return new IHoursGroupHandler<OrderElementTemplate>() {

View file

@ -86,7 +86,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
private final Class<T> type;
public abstract TreeitemRenderer getRenderer();
public abstract Renderer getRenderer();
protected TreeController(Class<T> type) {
this.type = type;
@ -203,7 +203,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
T node = getSelectedNode();
getModel().addElementAt(node, name.getValue(),
hours.getValue());
refreshHoursBox(node);
getRenderer().refreshHoursValueForThisNodeAndParents(node);
} else {
getModel().addElement(name.getValue(), hours.getValue());
}
@ -217,8 +217,6 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
name.focus();
}
protected abstract void refreshHoursBox(T node);
protected abstract void filterByPredicateIfAny();
protected static class TreeViewStateSnapshot {
@ -771,6 +769,29 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
};
}
public void updateHoursFor(T element) {
if (!readOnly && isLine(element)) {
Intbox boxHours = (Intbox) hoursIntBoxByElement.get(element);
Treecell tc = (Treecell) boxHours.getParent();
setReadOnlyHoursCell(element, boxHours, tc);
boxHours.invalidate();
refreshHoursValueForThisNodeAndParents(element);
}
}
public void refreshHoursValueForThisNodeAndParents(T node) {
List<T> parentNodes = getModel().getParents(node);
for (T parent : parentNodes) {
Intbox intbox = hoursIntBoxByElement.get(parent);
// For the Order node there is no associated intbox
if (intbox != null) {
Integer currentHours = getHoursGroupHandler()
.getWorkHoursFor(parent);
intbox.setValue(currentHours);
}
}
}
private Constraint getHoursConstraintFor(final T line) {
return new Constraint() {
@Override