第一步:创建EditPolicy,EditPolicy用于管理一些Command命令。
第二步:在EditPart的createEditPolicies方法中安装创建的EditPolicy。
第三步:创建EditPolicy对应的command命令,将创建的命令设置到EditPolicy对应的命令获取方法中去。
第四步:在模型中设置监听器,用于当模型改变时通知对应的EditPart,例如:
public class AbstractModel {
private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void firePropertyChange(String propName, Object oldVal, Object newVal) {
listeners.firePropertyChange(propName, oldVal, newVal);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
}
具体模型可以从AbstractModel继承而来。
第五步:在EditPart中注册监听器。EditPart需要实现PropertyChangeListener接口,然后可以在EditPart的active()中把自己注册为监听器,在deactivate()中删除监听。
以上五步即完成一个简单的图形操作流程。当操作模型时:①会产生的相应的Request(请求)。②请求发送给EditorPart。③EditPart根据Request请求查找其对应的Policy。④Policy根据请求的类型执行相应的Command命令。⑤Command命令执行后模型发生了变化,EditPart监听到模型的变化后刷新界面,至此图形操作完成。