ItEr33S14CUCreacionUnidadesPlanificacion: When a task constraint is violated, it's notified to the task component

This commit is contained in:
Óscar González Fernández 2009-11-09 01:00:46 +01:00
parent 94be25b58c
commit 0164f1dd60
3 changed files with 37 additions and 4 deletions

View file

@ -22,6 +22,7 @@ package org.zkoss.ganttz;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import java.util.regex.Matcher;
@ -33,6 +34,8 @@ 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.constraint.Constraint;
import org.zkoss.ganttz.data.constraint.Constraint.IConstraintViolationListener;
import org.zkoss.lang.Objects;
import org.zkoss.xml.HTMLs;
import org.zkoss.zk.au.AuRequest;
@ -176,6 +179,15 @@ public class TaskComponent extends Div implements AfterCompose {
setColor(STANDARD_TASK_COLOR);
setId(UUID.randomUUID().toString());
this.disabilityConfiguration = disabilityConfiguration;
taskViolationListener = new IConstraintViolationListener<Date>() {
@Override
public void constraintViolated(Constraint<Date> constraint,
Date value) {
// TODO mark graphically task as violated
}
};
this.task.addConstraintViolationListener(taskViolationListener);
}
protected String calculateClass() {
@ -212,6 +224,8 @@ public class TaskComponent extends Div implements AfterCompose {
private final Task task;
private transient PropertyChangeListener propertiesListener;
private IConstraintViolationListener<Date> taskViolationListener;
public Task getTask() {
return task;
}

View file

@ -28,6 +28,8 @@ import java.util.List;
import org.zkoss.ganttz.data.constraint.Constraint;
import org.zkoss.ganttz.data.constraint.DateConstraint;
import org.zkoss.ganttz.data.constraint.Constraint.IConstraintViolationListener;
import org.zkoss.ganttz.util.ConstraintViolationNotificator;
/**
* This class contains the information of a task. It can be modified and
@ -46,6 +48,9 @@ public abstract class Task implements ITaskFundamentalProperties {
private boolean visible = true;
private ConstraintViolationNotificator<Date> violationNotificator = ConstraintViolationNotificator
.create();
public Task(ITaskFundamentalProperties fundamentalProperties) {
this.fundamentalProperties = fundamentalProperties;
}
@ -56,7 +61,8 @@ public abstract class Task implements ITaskFundamentalProperties {
@Override
public List<Constraint<Date>> getStartConstraints() {
return fundamentalProperties.getStartConstraints();
return violationNotificator.withListener(fundamentalProperties
.getStartConstraints());
}
public Task(String name, Date beginDate, long lengthMilliseconds) {
@ -164,11 +170,13 @@ public abstract class Task implements ITaskFundamentalProperties {
}
public Constraint<Date> getCurrentLengthConstraint() {
return DateConstraint.biggerOrEqualThan(getEndDate());
return violationNotificator.withListener(DateConstraint
.biggerOrEqualThan(getEndDate()));
}
public Constraint<Date> getEndDateBiggerThanStartDate() {
return DateConstraint.biggerOrEqualThan(getBeginDate());
return violationNotificator.withListener(DateConstraint
.biggerOrEqualThan(getBeginDate()));
}
public String getNotes() {
@ -229,4 +237,9 @@ public abstract class Task implements ITaskFundamentalProperties {
return fundamentalProperties.getDeadline();
}
public void addConstraintViolationListener(
IConstraintViolationListener<Date> listener) {
violationNotificator.addConstraintViolationListener(listener);
}
}

View file

@ -48,11 +48,16 @@ public class ConstraintViolationNotificator<T> {
public List<Constraint<T>> withListener(List<Constraint<T>> constraints) {
for (Constraint<T> each : constraints) {
each.addConstraintViolationListener(bridge);
withListener(each);
}
return constraints;
}
public Constraint<T> withListener(Constraint<T> constraint) {
constraint.addConstraintViolationListener(bridge);
return constraint;
}
private void fireConstraintViolated(final Constraint<T> constraint,
final T value) {
constraintViolationListeners
@ -71,4 +76,5 @@ public class ConstraintViolationNotificator<T> {
constraintViolationListeners.addListener(listener);
}
}