GEF 框架中的设计模式
2010-06-07 00:00:00 来源:WEB开发网需要注意的是,上图关于 Tool 的继承层次部分并不是严格按照 GEF 框架进行描述,本文作者为了描述方便做了某种程度的简化。具体层次请参考 GEF 框架代码。
示例代码描述了 EditDomain 是如何将与视图输入相关的请求委托给它的 Tool 实例 activeTool。
清单 5. EditDomain 类中部分代码
package org.eclipse.gef;
public class EditDomain {
......
private Tool activeTool;
private void handlePaletteToolChanged() {
PaletteViewer paletteViewer = getPaletteViewer();
if (paletteViewer != null) {
ToolEntry entry = paletteViewer.getActiveTool();
if (entry != null)
setActiveTool(entry.createTool());
else
setActiveTool(getDefaultTool());
}
}
public void setActiveTool(Tool tool) {
if (activeTool != null)
activeTool.deactivate();
activeTool = tool;
if (activeTool != null) {
activeTool.setEditDomain(this);
activeTool.activate();
}
}
}
工具会执行某些操作,这些操作可能包括:
要求 editparts 显示或隐藏反馈
从 editparts 获得命令
在命令栈执行命令
更新鼠标光标
后记
GEF 出现的模式远不止我们列出来的这么多。我们只是列出了对 GEF 框架理解有帮助的一些模式。本文作者从事 Eclipse RCP 开发多年,通过这篇文章,希望能将在 GEF 中体会到的一些设计思想与大家分享。
更多精彩
赞助商链接