1

Xtext と GMF を使用しているため、xtext プロジェクトからアクティブな GMF コンパートメント ノードにアクセスしたいと考えています。そこで、eclipseのセレクションサービスはこれを解決する良い方法だと思いました。

セレクションサービスを実装してみましたが、GMF関連のノードにアクセスできないようです。GMF に IXtextAwareEditPart を実装したので、むしろ xtext クラス オブジェクトを取得します。アクティブな 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

PartImpl の代わりに、iStructuredSelection.getFirstElement() から返されるオブジェクトは GMF 編集パーツ (PartEditPart など) になります。次のようなことを試してください。

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