锁定老帖子 主题:年底发表一点对GEF的感觉
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-21
最后修改:2011-01-21
GEF 是图形编辑框架,它实现允许开发人员以图形化的方式展示和编辑模型,提升用户体验。它提供标准的MVC结构,但是和web的MVC框架略有不同。 1、模型:模型只与控制器打交道,模型改变时触发相应的事件给控制器,控制器负责通知视图更新。典型的模型包含PropertyChangeSupport类型的成员变量,用来维护监听器成员即控制器。 public abstract class AbstractMode implements Cloneable, Serializable { private static final long serialVersionUID = 7796529230959678337L; PropertyChangeSupport listeners = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener l) { listeners.addPropertyChangeListener(l); }
public void firePropertyChange(String prop, Object oldValue, Object newValue) { listeners.firePropertyChange(prop, oldValue, newValue); }
public void fireStructureChange(String prop, Object child) { listeners.firePropertyChange(prop, null, child); }
public void removePropertyChangeListener(PropertyChangeListener l) { listeners.removePropertyChangeListener(l); } } 2、控制器:EditPart对象,所有的EditPart共同组成了GEF的控制器这部分,每个模型对应一个EditPart。你的应用中需要一个EditPartFactory对象复制控制给定模型对象创建对应的EditPart对象,这个工厂类将被视图利用。 EditPart控制实现,而实现的具体操作GEF交给了command,每个command做自己应该执行的操作,比如创建,移动,删除等,command都放在EditDomain堆栈里,每个command具有撤销和回退功能。一组command由EditPolicy控制。 在EditPolicy里可以控制可编辑的图元的handler句柄,创建自定义的Handler,自定义的图元的结构。 public class MainModeEditPart extends AbstractGraphicalEditPart implements PropertyChangeListener { private GefLayoutEditpolicy gefLayoutEditpolicy = new GefLayoutEditpolicy();
private ModeDirectEditManager manager;
// IEditorInput input = (IEditorInput) PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput();
// DiagramEditor editor = (DiagramEditor) PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
protected List getModelChildren() { PeopleActivePropertyDialog.modelArray = ((MainMode) getModel()) .getModes(); ChooseActivityDialog.modelArray2 = (ArrayList) ((MainMode) getModel()) .getModes(); return ((MainMode) getModel()).getModes(); }
// @Override // public IFigure getContentPane() { // return ((MainFigure) getFigure()).getAttributeFigure(); // } public void activate() { super.activate(); ((MainMode) getModel()).addPropertyChangeListener(this); }
/** * ˢ�¡äӶԻ�� 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-01-21
/**
* ˢ�¡äӶԻ�� |
|
返回顶楼 | |
发表时间:2011-01-21
有乱码 为什么发布上去?
|
|
返回顶楼 | |
发表时间:2011-02-25
qq123zhz 写道 有乱码 为什么发布上去?
|
|
返回顶楼 | |
浏览 2416 次