【问题标题】: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 编辑器。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2015-05-11
      • 2023-03-04
      • 1970-01-01
      • 2021-07-19
      相关资源
      最近更新 更多