2012-01-26 44 views
0

我正在創建自己的基於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?

+0

你有一個更完整的堆棧跟蹤?你打電話給addGlobalAction密鑰在哪裏? – katsharp

+0

我目前無法訪問更完整的堆棧跟蹤,我明天將發佈。但基本上看起來(所有)操作正在檢查是否需要啓用。在'ActionBarContributor.declareGlobalActionKeys'中調用'addGlobalActionKey' – Veger

+0

@katsharp我添加了一個[link](http://pastebin.com/vGK1khan)完整的堆棧跟蹤 – Veger

回答

1

作爲測試,我指的是網址:https://bugs.eclipse.org/bugs/show_bug.cgi?id=154112 和我overrid我的EditorPart的SetFocus方法,如:

@Override 
public void setFocus() { 
    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setFocus(); 
} 

,然後它工作得很好。

+0

哇...非常好!我已經放棄希望,我的錯誤會得到修復......但你釘了它!非常感謝。 – Veger