GMF:通过选择服务访问活动的gmf节点

时间:2013-06-10 15:14:02

标签: service selection xtext eclipse-gmf

我正在使用Xtext和GMF,因此我想从我的xtext项目中访问活动的GMF隔离专区节点。因此,我认为eclipse的选择服务将是解决这个问题的好方法。

我尝试实现选择服务,但似乎没有访问GMF相关节点。而是我得到了一个xtext类对象,因为我在GMF中实现了一个IXtextAwareEditPart。有没有办法访问活动的GMF节点? 到目前为止,此代码对我无效:

   ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
   ISelection selection = selectionService.getSelection();
   if (selection instanceof IStructuredSelection) {
     IStructuredSelection iStructuredSelection = (IStructuredSelection) selection;
     if (iStructuredSelection.getFirstElement() instanceof PartImpl) {
        PartImpl partImpl = (PartImpl) iStructuredSelection;  // <------ The xtext class?
    }
}

1 个答案:

答案 0 :(得分:1)

而不是PartImpl,从iStructuredSelection.getFirstElement()返回的对象将是GMF编辑部件(例如PartEditPart)。尝试以下内容:

PartEditPart editPart = (PartEditPart) iStructuredSelection.getFirstElement();
ShapeImpl shapeImpl = (ShapeImpl) editPart.getModel();
PartImpl partImpl = (PartImpl) shapeImpl.getElement();