【问题标题】:GEF editor functionality to view用于查看的 GEF 编辑器功能
【发布时间】:2012-06-09 08:51:38
【问题描述】:

我创建了一个包含 GEF 编辑器的小型 GEF 项目。现在我想将除 GEF 调色板之外的所有功能都转换为 View。有可能吗?因为当我尝试执行编辑策略时,一切都不起作用。我可以使用 GEF Rectangle 部件和模型绘制一个矩形。它工作正常。但现在我想将调整大小、删除、撤消功能添加到我的视图中。在 GEF 编辑器中,这些功能运行良好。 这些功能是否仅适用于编辑器?有人可以建议怎么做吗?

【问题讨论】:

  • 您是如何将其转换为视图的? GEF 是基于编辑器的...
  • 不,我不想将视图转换为编辑器。我希望所有可以在编辑器中完成的功能也可以在视图中完成,除了调色板。那可能吗。但是我可以实现一些功能,比如放大、缩小、编辑 poliy.etc。在这种情况下可以添加。
  • 我不确定我是否理解正确。您想用View 替换Editor 吗?或者您也想通过视图来操作编辑器中正在发生的事情?
  • View 的想法从何而来?我知道Dan Rubel et al. 在转向 Zest 和编辑器的东西之前会经历构建 GEF 视图的动作。

标签: eclipse-rcp eclipse-gef draw2d


【解决方案1】:

您可以将一些 GEF 功能添加到您的视图中。为此,您的视图必须被实现 方式如下。

// Use a standard Viewer for the Draw2d canvas
    private ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer();
    // Use standard RootEditPart as holder for all other edit parts
    // private RootEditPart rootEditPart = new ScalableFreeformRootEditPart();

    private ScalableRootEditPart rootEditPart = new ScalableRootEditPart();

// parts for model elements
private EditPartFactory editPartFactory = new MyEditPartFactory();

例如,您可以将 GEF 编辑策略添加到您的视图中。

public void createPartControl(Composite parent) {

        // Initialize the viewer, 'parent' is the
        // enclosing RCP windowframe
        viewer.createControl(parent);
        viewer.setRootEditPart(rootEditPart);
        viewer.setEditPartFactory(editPartFactory);

        viewer.setContents(ModelFactory.createRegionLayerModel());

                 viewer.setEditDomain(new DefaultEditDomain(new GraphicalEditor() {



                @Override
                public void doSave(IProgressMonitor monitor) {
                    // TODO Auto-generated method stub

                }

                @Override
                protected void initializeGraphicalViewer() {
                    GraphicalViewer viewer = getGraphicalViewer();

                }

                @Override
                protected void configureGraphicalViewer() {
                    super.configureGraphicalViewer();
                    super.configureGraphicalViewer();
                    GraphicalViewer viewer = getGraphicalViewer();
                }

            }));
}

希望对你有帮助!!!

【讨论】:

    【解决方案2】:

    您想要的在当前的 GEF 实施中是不可能的。所有图形编辑器都是 Eclipse 编辑器,所以我看不到如何将它们放在视图中。您可以实现此功能,但需要大量布线...

    【讨论】:

    • 其实我的疑惑是,我在图形编辑器中实现了缩放、图形移动、调整图形大小等所有功能。但是我可以在一个视图中使用所有相同的功能吗?
    【解决方案3】:

    如果我理解正确,您基本上只是想摆脱调色板,同时保留完整的编辑功能?

    这很容易实现。让你的编辑器类扩展 org.eclipse.gef.ui.parts.GraphicalEditor (API) 而不是 org.eclipse.gef.ui.parts.GraphicalEditorWithPalette 或 org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette,这样你就摆脱了调色板:

    本课程可作为新客户的快速入门 全球环境基金。它将创建一个包含单个 GraphicalViewer 的编辑器 它的控制权。

    但是,请注意 Javadoc 注释说

    IMPORTANT 此类仅应用作创建的参考 您自己的 EditorPart 实现。这个班不适合 每个人的需求,并且将来可能会改变。客户可以复制 实施。

    理想情况下,您应该设置自己的org.eclipse.ui.part.EditorPart 实现,但我认为GraphicalEditor 可能会这样做:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多