From 28d642376a9d9e8324e0adb6cf1e9d49eec7d7e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 5 May 2011 18:39:27 +0200 Subject: [PATCH] [Bug #1045] Fix bug Avoid to execute some constraint violations when they are not in a ZK context. FEA: ItEr74S04BugFixing --- .../org/zkoss/ganttz/DependencyComponent.java | 5 +++-- .../java/org/zkoss/ganttz/TaskComponent.java | 5 +++-- .../ganttz/data/constraint/Constraint.java | 22 +++++++++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index 30b0b8ca8..0434dfdae 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -64,7 +64,8 @@ public class DependencyComponent extends XulElement implements AfterCompose { this.source = source; this.destination = destination; this.dependency = dependency; - violationListener = new IConstraintViolationListener() { + violationListener = Constraint + .onlyOnZKExecution(new IConstraintViolationListener() { @Override public void constraintViolated(Constraint constraint, @@ -80,7 +81,7 @@ public class DependencyComponent extends XulElement implements AfterCompose { response("constraintViolated", new AuInvoke( DependencyComponent.this, "setCSSClass", "dependency")); } - }; + }); this.dependency.addConstraintViolationListener(violationListener); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index 0757d1590..ee5555b32 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -197,7 +197,8 @@ public class TaskComponent extends Div implements AfterCompose { setId(UUID.randomUUID().toString()); this.disabilityConfiguration = disabilityConfiguration; - taskViolationListener = new IConstraintViolationListener() { + taskViolationListener = Constraint + .onlyOnZKExecution(new IConstraintViolationListener() { @Override public void constraintViolated(Constraint constraint, @@ -210,7 +211,7 @@ public class TaskComponent extends Div implements AfterCompose { GanttDate value) { // TODO mark graphically dependency as not violated } - }; + }); this.task.addConstraintViolationListener(taskViolationListener); reloadResourcesTextRequested = new IReloadResourcesTextRequested() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java index 7b3b07e4c..b0b644cc3 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java @@ -27,6 +27,7 @@ import java.util.List; import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; +import org.zkoss.zk.ui.Executions; /** * @author Óscar González Fernández @@ -91,6 +92,27 @@ public abstract class Constraint { public void constraintSatisfied(Constraint constraint, T value); } + public static IConstraintViolationListener onlyOnZKExecution( + final IConstraintViolationListener original) { + return new IConstraintViolationListener() { + + @Override + public void constraintViolated(Constraint constraint, T value) { + if (Executions.getCurrent() != null) { + original.constraintViolated(constraint, value); + } + } + + @Override + public void constraintSatisfied(Constraint constraint, T value) { + if (Executions.getCurrent() != null) { + original.constraintSatisfied(constraint, value); + } + } + }; + + } + public static class ConstraintBuilder { private final T value;