Eclipse、EMF、および GEF を使用して実装しているビジュアル プログラミング言語のインタープリターを開発しています。現在、ダイアグラムのインタープリターを作成しています。
ダイアグラムを実行するために、ランチャー構成を実装することにしました。構成が実行されると、アクティブなエディターから EMF モデルを読み取って解釈したいと考えています。私が抱えている問題は、アクティブなエディターに UI スレッドからしかアクセスできないことです。長いプロセスになる可能性があるため、インタープリターを UI トレッドで実行したくありません。これは機能しますが、使用すべきではないコードです。
@Override
public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
throws CoreException {
final IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
IEditorPart activeEditor = workbench.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
OPMGraphicalEditor editor = (OPMGraphicalEditor) activeEditor;
OPMObjectProcessDiagram opd = editor.getOPD();
Interpreter.INSTANCE.interpret(opd);
}
});
}
これを行う適切な方法があると確信していますが、見つけられませんでした。インターネットで見つけた起動構成の例では外部プログラムを使用していますが、(現在) ワークベンチの一部としてインタープリターを実装しています。
助けてくれてありがとう。