TASKPM/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyComponent.java

109 lines
2.7 KiB
Java
Raw Normal View History

2009-04-14 17:51:03 +02:00
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.zkoss.ganttz;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.zkoss.ganttz.data.Dependency;
import org.zkoss.ganttz.data.DependencyType;
2009-04-14 17:51:03 +02:00
import org.zkoss.zk.au.out.AuInvoke;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.impl.XulElement;
/**
*
2009-04-14 17:51:03 +02:00
* @author Francisco Javier Moran Rúa
*
2009-04-14 17:51:03 +02:00
*/
public class DependencyComponent extends XulElement implements AfterCompose {
2009-04-14 17:51:03 +02:00
private TaskComponent source;
2009-04-14 17:51:03 +02:00
private TaskComponent destination;
2009-04-14 17:51:03 +02:00
public DependencyComponent() {
2009-04-14 17:51:03 +02:00
2009-04-14 17:51:03 +02:00
}
public DependencyComponent(TaskComponent source, TaskComponent destination) {
2009-04-14 17:51:03 +02:00
this();
if (source == null)
throw new IllegalArgumentException("source cannot be null");
if (destination == null)
throw new IllegalArgumentException("destination cannot be null");
this.source = source;
this.destination = destination;
}
@Override
public void afterCompose() {
PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
redrawDependency();
}
};
this.source.getTask().addFundamentalPropertiesChangeListener(listener);
this.destination.getTask().addFundamentalPropertiesChangeListener(listener);
2009-04-14 17:51:03 +02:00
}
/**
* @return the idTaskOrig
*/
public String getIdTaskOrig() {
return source.getUuid();
}
public void setIdTaskOrig(String idTaskOrig) {
this.source = findTaskComponent(idTaskOrig);
2009-04-14 17:51:03 +02:00
}
private TaskComponent findTaskComponent(String idTaskOrig) {
return (TaskComponent) getFellow(idTaskOrig);
2009-04-14 17:51:03 +02:00
}
/**
* @return the idTaskEnd
*/
public String getIdTaskEnd() {
return destination.getUuid();
}
public void setIdTaskEnd(String idTaskEnd) {
this.destination = findTaskComponent(idTaskEnd);
2009-04-14 17:51:03 +02:00
}
public void zoomChanged() {
redrawDependency();
}
public void redrawDependency() {
response("zoomChanged", new AuInvoke(this, "draw"));
}
public boolean contains(TaskComponent taskComponent) {
return getSource().equals(taskComponent) || getDestination().equals(taskComponent);
2009-04-14 17:51:03 +02:00
}
public TaskComponent getSource() {
return source;
}
public TaskComponent getDestination() {
return destination;
}
public Dependency getDependency() {
return new Dependency(source.getTask(), destination
.getTask(), DependencyType.END_START);
}
2009-04-14 17:51:03 +02:00
}