我正在創建自己的基於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的...?!
我沒有看到打印動作和單擊標記後轉到相應的對象之間的關係。當然,保持禁用打印操作不是一個解決方案。
那麼我能做些什麼來保持打印操作可用並防止這些RuntimeException?
你有一個更完整的堆棧跟蹤?你打電話給addGlobalAction密鑰在哪裏? – katsharp
我目前無法訪問更完整的堆棧跟蹤,我明天將發佈。但基本上看起來(所有)操作正在檢查是否需要啓用。在'ActionBarContributor.declareGlobalActionKeys'中調用'addGlobalActionKey' – Veger
@katsharp我添加了一個[link](http://pastebin.com/vGK1khan)完整的堆棧跟蹤 – Veger