2013-06-10 3 views
1

Я использую Xtext и GMF, и поэтому я хотел бы получить доступ к активному узлу отделения GMF из моего проекта xtext. Из-за этого я думал, что услуга выбора затмения будет хорошим способом решить эту проблему.GMF: присоединяет активный узел gmf через службу выбора

Я попытался реализовать службу выбора, но, похоже, он не присоединился к узлу, связанному с GMF. Скорее, я получаю объект класса xtext, потому что я реализовал IXtextAwareEditPart в GMF. Есть ли способ получить доступ к активному узлу 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

Вместо PartImpl, возвращаемый объект из iStructuredSelection.getFirstElement() будет GMF Редактировать часть (например, PartEditPart). Попробуйте примерно следующее:

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