Я создаю свой собственный графический редактор на основе GEF.Он создает маркеры ошибок при сбое проверки, и в редакторе есть метод gotoMarker для поиска и активации маркера.Это все работает.
Единственная проблема в том, что я получаю исключение RuntimeException при двойном щелчке по маркеру (при нажатии «Перейти» в контекстном меню проблем нет) Сообщение выглядит следующим образом:
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 ...?!
Я не вижу отношениямежду действием «Печать» и переходом к соответствующему объекту после нажатия на маркер.Разумеется, отключение действия «Печать» не является решением.
Итак, что я могу сделать, чтобы сохранить действие «Печать» и предотвратить эти исключения RuntimeExceptions?