我正在使用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?
}
}
答案 0 :(得分:1)
而不是PartImpl,从iStructuredSelection.getFirstElement()返回的对象将是GMF编辑部件(例如PartEditPart)。尝试以下内容:
PartEditPart editPart = (PartEditPart) iStructuredSelection.getFirstElement();
ShapeImpl shapeImpl = (ShapeImpl) editPart.getModel();
PartImpl partImpl = (PartImpl) shapeImpl.getElement();