GMF中,如何不打开editor得到此editor的模型对象

         在前面的博客中,我介绍了一些如何获得activie editor里面图元属性的方法。

         但如果我们要进行一些比较高级的定制,比如需要分析每个图与每个图之间、或者每个图中的图元与另一个图中的图元有什么关系,则这时我们便会遇到一个麻烦:如何不打开editor而通过此editor对应的文件得到此editor的模型对象(可以通过此模型对象获得diagram的属性,比如图的name,author,drawDate),或者得到此editor里面图元的模型对象?

         在我的项目里便遇到这样的问题。解决办法如下:

        URI fileUri = URI.createFileURI(modelFilePath);  // 这里的modelFilePath指model文件路径,而不是diagram文件路径,因为diagram文件存储的是图形的类型、位置等信息,而model文件存储的是图形的属性信息。

        ResourceSet resourceSet  = new ResourceSetImpl(); 

        Resource resource = resourceSet.getResource(fileUri, true); // 通过文件路径获得对应的资源(内存模型)

        EList<EObject> eList = resource.getContents();

        EObject eObject = eList.get(0); // 得到此图(或者说此editor)对应的EObject对象

        String s = ((XXXDiagramImpl) eObject).getAuthor(); // 得到此图的作者信息

        String s =  ((XXXDiagramImpl) eObject).getXXX().get(0).getName(); // 得到此图中某个图元的名称

posted @ 2012-02-29 18:17  supermmao  阅读(216)  评论(0编辑  收藏  举报