如何在服务器上创建 GEF 图的图像



我想在服务器端创建一个Eclipse GEF图的图像,而不必加载整个编辑器环境。

该图是使用基于GEF的eclipse graphiti的eclipse bpmn2-modeler设计的。

这个想法是:

  1. 加载 BPMN 模型
  2. 生成逻辑示意图信息
  3. 将图表导出为图像

此代码段应执行第 1 步,加载 BPMN 模型:

    URI modelUri = URI.createFileURI("D:/temp/data.bpmn");
    ResourceSet resourceSet = new Bpmn2ModelerResourceSetImpl();
    resourceSet.setURIConverter(new ProxyURIConverterImplExtension(modelUri));
    Bpmn2ResourceImpl resource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri, Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);
    ModelHandler modelHandler = ModelHandlerLocator.createModelHandler(modelUri, resource);
  1. 生成我org.eclipse.bpmn2.modeler.core.di.DIImport找到的图表信息.
    这里的问题是构造函数需要一个org.eclipse.graphiti.ui.editor.DiagramEditor,而在服务器上我没有,没有正在运行的 UI 环境。
    是否有其他实用程序或处理程序可以为我生成图表?

  2. 我看了看org.eclipse.graphiti.ui.features.DefaultSaveImageFeatureorg.eclipse.graphiti.ui.internal.util.ui.print.AbstractFigureSelectionDialog (initScaledImage()).
    但是在深入研究这个问题之前,我需要首先通过第 2 步问题。

也许我走错了路,有一种更简单的方法?

您可以在没有编辑器的情况下查看 GMF 如何生成图表图像。但是,该生成仍然依赖于UI,因为您需要SWT和显示线程(您可以在无头Eclipse模式下启动显示线程)。

这个想法是使用 EditPart 工厂为模型元素创建编辑部分,然后在屏幕外创建的命令行管理程序托管的画布上绘制根图形。GC 的图形上下文是 SWT 图像。有一些方法可以在不使用基于 AWT 的 Eclipse UI 或生成 SVG 的情况下生成图表的图像。但是,请记住,当涉及到文本标签时,图形的布局取决于 SWT,因此无论哪种方式,您都需要 SWT 和显示线程。图形的颜色、字体和其他属性也是 SWT 对象。

GMF 中要查看的类将是org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory

Graphiti最近获得了一个增强功能,它允许你在不打开编辑器的情况下导出图表。不过,您仍然需要 eclipse UI 环境。我这里有一个使用下面列出的帮助程序方法的示例。

org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int)

相关内容

  • 没有找到相关文章

最新更新