【问题标题】:Is it possible to use the Presentation Model Pattern for a GEF-based RCP app with an EMF domain model?是否可以将 Presentation Model Pattern 用于具有 EMF 域模型的基于 GEF 的 RCP 应用程序?
【发布时间】:2012-07-04 21:25:26
【问题描述】:
我正在开发一个 Eclipse RCP 应用程序,使用基于 EMF 的第三方域模型和 GEF 编辑器进行编辑。
GEF uses the MVC pattern,如果我不必使用特定布局在编辑器视图上绘制模型图,这将是公平的。我使用的域模型不包含任何视觉信息(这本身就是一个好主意),但我希望能够在他们的EditParts 中为Figures 分配坐标。这将使我更容易计算图形在布局中的位置。
现在我偶然发现了 Martin Fowler 的 Presentation Model Pattern,这似乎正是我正在寻找的东西。我还发现了一个 - old-ish - tutorial on RCP UI testing(仅限德语),它在 Eclipse RCP 上下文中使用了这种模式。
现在我想知道:看到 GEF 明确使用 MVC,通常是否可以在 GEF 上下文中使用 PM? MVVM 是替代品吗?
请注意,出于多种原因,我无法使用 GMF。
非常感谢!
【问题讨论】:
标签:
model-view-controller
mvvm
eclipse-emf
eclipse-gef
presentation-model
【解决方案1】:
是的,这绝对是可能的,而且您有两个选择。
首先 - 实现您自己的图形符号模型。我建议您使用 appreach,例如:
modelElement : ModelElement 1..1
x : int 1..1
y : int 1..1
然后在 EditingDomain 中加载两个模型(EMF 将为您解析跨文档引用),创建所有缺少的 Graphical Notation Elements e.t.c...
另一种选择是使用 GMF 或 Graphiti。他们有您正在寻找的开箱即用的模型,这将大大简化您的生活。以学习另一个怪物框架为代价(在 GMF 的情况下)。 Graphiti,很容易(相对于 GEF/GMF),但 IMO 不太灵活。顺便说一句,GMF 将为您提供一个“免费”的 TransactionalEditingDomain,它将为您处理所有命令、撤消和重做。所以,就像在 cmets 给你 previous question 一样,我建议你使用 GMF。
哦,抱歉,我没注意到你写的关于 GMF 的内容。
然后,第二个选项是让图形模型继承自领域模型,然后针对此模型编写 GEF 编辑器。