ItEr22S12CUVistaRecursosTempoPorProxectoItEr21S07: DependencyAdded listeners handling is only at TaskList now.

This commit is contained in:
Óscar González Fernández 2009-08-18 12:26:56 +02:00
parent e1016b8107
commit f68dc9f411
2 changed files with 33 additions and 52 deletions

View file

@ -2,11 +2,6 @@ package org.zkoss.ganttz;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.UUID;
import java.util.regex.Matcher;
@ -177,8 +172,6 @@ public class TaskComponent extends Div implements AfterCompose {
private String _color;
private List<WeakReference<IDependencyAddedListener>> dependencyListeners = new LinkedList<WeakReference<IDependencyAddedListener>>();
private boolean isTopLevel;
private final Task task;
@ -196,31 +189,6 @@ public class TaskComponent extends Div implements AfterCompose {
return null;
}
public void addDependencyListener(IDependencyAddedListener listener) {
dependencyListeners.add(new WeakReference<IDependencyAddedListener>(
listener));
}
private void fireDependenceAdded(DependencyComponent dependencyComponent) {
ArrayList<IDependencyAddedListener> active = new ArrayList<IDependencyAddedListener>();
synchronized (this) {
ListIterator<WeakReference<IDependencyAddedListener>> iterator = dependencyListeners
.listIterator();
while (iterator.hasNext()) {
WeakReference<IDependencyAddedListener> next = iterator.next();
IDependencyAddedListener listener = next.get();
if (listener == null) {
iterator.remove();
} else {
active.add(listener);
}
}
}
for (IDependencyAddedListener listener : active) {
listener.dependenceAdded(dependencyComponent);
}
}
public Command getCommand(String cmdId) {
Command c = null;
@ -246,11 +214,8 @@ public class TaskComponent extends Div implements AfterCompose {
}
void doAddDependency(String destinyTaskId) {
DependencyComponent dependencyComponent = new DependencyComponent(this,
getTaskList().addDependency(this,
((TaskComponent) getFellow(destinyTaskId)));
if (getPlanner().canAddDependency(dependencyComponent.getDependency())) {
fireDependenceAdded(dependencyComponent);
}
}
public String getColor() {

View file

@ -32,8 +32,6 @@ public class TaskList extends XulElement implements AfterCompose {
private static final int HEIGHT_PER_ROW = 20; /* 30 */
private List<WeakReference<IDependencyAddedListener>> listeners = new LinkedList<WeakReference<IDependencyAddedListener>>();
private IZoomLevelChangedListener zoomLevelChangedListener;
private Menupopup contextMenu;
@ -88,16 +86,6 @@ public class TaskList extends XulElement implements AfterCompose {
addContextMenu(taskComponent);
addListenerForTaskComponentEditForm(taskComponent);
ListIterator<WeakReference<IDependencyAddedListener>> iterator = listeners
.listIterator();
while (iterator.hasNext()) {
IDependencyAddedListener listener = iterator.next().get();
if (listener != null) {
taskComponent.addDependencyListener(listener);
} else {
iterator.remove();
}
}
taskComponent.afterCompose();
if (relocate) {
response(null, new AuInvoke(taskComponent,
@ -232,10 +220,8 @@ public class TaskList extends XulElement implements AfterCompose {
}
public void addDependencyListener(IDependencyAddedListener listener) {
listeners.add(new WeakReference<IDependencyAddedListener>(listener));
for (TaskComponent taskComponent : getTaskComponents()) {
taskComponent.addDependencyListener(listener);
}
dependencyListeners.add(new WeakReference<IDependencyAddedListener>(
listener));
}
@Override
@ -306,4 +292,34 @@ public class TaskList extends XulElement implements AfterCompose {
}
}
public void addDependency(TaskComponent source, TaskComponent destination) {
DependencyComponent dependencyComponent = new DependencyComponent(
source, destination);
if (getPlanner().canAddDependency(dependencyComponent.getDependency())) {
fireDependenceAdded(dependencyComponent);
}
}
private List<WeakReference<IDependencyAddedListener>> dependencyListeners = new LinkedList<WeakReference<IDependencyAddedListener>>();
private void fireDependenceAdded(DependencyComponent dependencyComponent) {
ArrayList<IDependencyAddedListener> active = new ArrayList<IDependencyAddedListener>();
synchronized (this) {
ListIterator<WeakReference<IDependencyAddedListener>> iterator = dependencyListeners
.listIterator();
while (iterator.hasNext()) {
WeakReference<IDependencyAddedListener> next = iterator.next();
IDependencyAddedListener listener = next.get();
if (listener == null) {
iterator.remove();
} else {
active.add(listener);
}
}
}
for (IDependencyAddedListener listener : active) {
listener.dependenceAdded(dependencyComponent);
}
}
}