独自の GEF ベースのグラフィカル エディターを作成しています。検証が失敗したときにエラー マーカーを作成し、エディターにはマーカーを見つけてアクティブにする gotoMarker メソッドがあります。これはすべて機能します。
唯一の問題は、マーカーをダブルクリックすると RuntimeException が発生することです (コンテキスト メニューから [GoTo] をクリックしても問題ありません)。メッセージは次のとおりです。
java.lang.RuntimeException: WARNING: Prevented recursive attempt to activate part org.eclipse.ui.views.ProblemView while still in the middle of activating part namespace.myEditorID`
対応するスタック トレースの一部は次を示します。
at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3586)
...
at org.eclipse.swt.widgets.Display.eventProc(Display.java:1245)
at org.eclipse.swt.internal.gtk.OS._gtk_enumerate_printers(Native Method)
at org.eclipse.swt.internal.gtk.OS.gtk_enumerate_printers(OS.java:9296)
at org.eclipse.swt.printing.Printer.getPrinterList(Printer.java:98)
at org.eclipse.gef.ui.actions.PrintAction.calculateEnabled(PrintAction.java:45)
at org.eclipse.gef.ui.actions.WorkbenchPartAction.isEnabled(WorkbenchPartAction.java:123)
...
完全なスタック トレースは少し長いので、pastebin で入手できます。
これにより、次を削除してActionBarContributor .declareGlobalActionKeysの印刷アクションを無効にするというアイデアが得られました。
addGlobalActionKey(ActionFactory.PRINT.getId());
これにより、RuntimeException が解決されます...?!
印刷アクションと、マーカーをクリックした後の対応するオブジェクトへの移動との関係がわかりません。もちろん、印刷アクションを無効のままにしておくことは解決策ではありません。
では、Printing アクションを利用可能にし、これらの RuntimeExceptions を防ぐにはどうすればよいでしょうか?