GEF实践总结(二)常见基础性问题
2009-09-06 00:00:00 来源:WEB开发网一. 怎么通过model创建对应的EditPart?
EditPartFactory :通过model创建对应EditPart的工厂类。
就和jface.TableView一样,能知道通过model得到TableItem。和jface.TreeViewer一样,能通过model知道要生成对应的TreeItem一样的功效。
Java代码
@Override
public EditPart createEditPart(EditPart context, Object model) {
EditPart part = null;
if (model instanceof DiagramModel) {
part = new DiagramEditPart();
} else if (model instanceof RectModel) {
part = new RectEditPart();
}
part.setModel(model);
return part;
}
二. EditPart怎么创建对应的Figure?
在EditPart中有一个方法必须实现,就是createFigure方法。
Java代码
@Override
protected IFigure createFigure() {
RectFigure figure = new RectFigure();
figure.setModel((BaseModel) this.getModel());
return figure;
}
这样就把EditPart和对应的Figure关联起来了,知道如何通过EditPart创建出一个对应的Figure。
三. Model改变,如果对外通知?
Model中有PropertyChangeSupport,外部可以往model中注册PropertyChangeListener,也就是对模型属性改变的监听器,如果model的属性发生了改变,那么就会对所有的listener通知这个属性变化。通知内容包括改变的属性名称、老的值、新的值。
Java代码
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
changeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
public void setX(int x) {
int oldX = this.x;
this.x = x;
this.firePropertyChange(“X”, oldX, x);
}
更多精彩
赞助商链接