From 8c7077ac467cbc5f72743518a95d31d83ea6bf6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 11 Jan 2010 16:49:51 +0100 Subject: [PATCH] ItEr43S09ImplantacionAplicacionItEr42S13: Adding reloadComponent method. This method invalidates the associated zk component for a task. Invalidating the parent, otherwise the task dissapears. --- .../java/org/zkoss/ganttz/TaskComponent.java | 14 +++++++++++ .../main/java/org/zkoss/ganttz/data/Task.java | 25 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index fea70860b..0955ab037 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -34,6 +34,7 @@ import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.Milestone; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.data.TaskContainer; +import org.zkoss.ganttz.data.Task.IReloadComponentRequested; import org.zkoss.ganttz.data.constraint.Constraint; import org.zkoss.ganttz.data.constraint.Constraint.IConstraintViolationListener; import org.zkoss.lang.Objects; @@ -175,6 +176,8 @@ public class TaskComponent extends Div implements AfterCompose { return asTaskComponent(task, taskList, true); } + private IReloadComponentRequested reloadComponentRequested; + public TaskComponent(Task task, IDisabilityConfiguration disabilityConfiguration) { setHeight(HEIGHT_PER_TASK + "px"); @@ -192,6 +195,16 @@ public class TaskComponent extends Div implements AfterCompose { } }; this.task.addConstraintViolationListener(taskViolationListener); + reloadComponentRequested = new IReloadComponentRequested() { + + @Override + public void reloadComponentRequested() { + // TODO can't call to invalidate because the task was + // disappearing. Fix the problem and just invalidate this task + getParent().invalidate(); + } + }; + this.task.addReloadListener(reloadComponentRequested); } protected String calculateClass() { @@ -441,6 +454,7 @@ public class TaskComponent extends Div implements AfterCompose { protected void remove() { this.detach(); + task.removeReloadListener(reloadComponentRequested); } public boolean isTopLevel() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index 465d5e971..91b88756e 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -23,9 +23,11 @@ package org.zkoss.ganttz.data; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import org.apache.commons.lang.Validate; import org.zkoss.ganttz.data.constraint.Constraint; import org.zkoss.ganttz.data.constraint.DateConstraint; import org.zkoss.ganttz.data.constraint.Constraint.IConstraintViolationListener; @@ -38,6 +40,12 @@ import org.zkoss.ganttz.util.ConstraintViolationNotificator; */ public abstract class Task implements ITaskFundamentalProperties { + public interface IReloadComponentRequested { + public void reloadComponentRequested(); + } + + private List reloadRequestedListeners = new ArrayList(); + private PropertyChangeSupport fundamentalPropertiesListeners = new PropertyChangeSupport( this); @@ -271,4 +279,21 @@ public abstract class Task implements ITaskFundamentalProperties { violationNotificator.addConstraintViolationListener(listener); } + public void addReloadListener( + IReloadComponentRequested reloadComponentRequested) { + Validate.notNull(reloadComponentRequested); + this.reloadRequestedListeners.add(reloadComponentRequested); + } + + public void removeReloadListener( + IReloadComponentRequested reloadComponentRequested) { + this.reloadRequestedListeners.remove(reloadComponentRequested); + } + + public void reloadComponent() { + for (IReloadComponentRequested each : reloadRequestedListeners) { + each.reloadComponentRequested(); + } + } + }