ItEr33S14CUCreacionUnidadesPlanificacion: When a task constraint is violated, it's notified to the task component
This commit is contained in:
parent
94be25b58c
commit
0164f1dd60
3 changed files with 37 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue