1

我正在使用 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?
    }
}
4

1 回答 1

1

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

PartEditPart editPart = (PartEditPart) iStructuredSelection.getFirstElement();
ShapeImpl shapeImpl = (ShapeImpl) editPart.getModel();
PartImpl partImpl = (PartImpl) shapeImpl.getElement();
于 2014-06-11T15:38:41.023 回答