GEF 框架中的设计模式
2010-06-07 00:00:00 来源:WEB开发网deactivationListener 是 EditPartListener.Stub 类型的实例,用来观察源 EditPart 的状态。当源 EditPart 的状态由激活变为非激活时,及时通知工具 ConnectionCreationTool 做出停止创建连接的工作。
清单 2. AbstractEditPart 类中部分代码
package org.eclipse.gef.editparts;
public abstract class AbstractEditPart
implements EditPart, RequestConstants, IAdaptable {
... ...
protected void fireDeactivated() {
Iterator listeners = getEventListeners(EditPartListener.class);
while (listeners.hasNext())
((EditPartListener)listeners.next()).
partDeactivated(this);
}
/**
* Adds an EditPartListener.
* @param listener the listener
*/
public void addEditPartListener(EditPartListener listener) {
eventListeners.addListener(EditPartListener.class, listener);
}
public void removeEditPartListener(EditPartListener listener) {
eventListeners.removeListener(EditPartListener.class, listener);
}
}
在这个过程中,EditPart 成为被观察的目标,提供了注册和删除观察者对象的接口。EditPartListener.Stub 类型的实例 deactivationListener 扮演了观察者的角色,在目标 EditPart 的状态变成非激活时,获取更新并通知 ConnectionCreationTool 取消连接的创建。
赞助商链接