[英]Returning a SWT/JFace view
我已經使用SWT / JFace實現了一個復雜的視圖,但是不幸的是,我一直在為不同的元素使用很多靜態成員。 現在,我想將這些元素重構為實例變量,但是很多外部類和方法都依賴於這些元素。
例如,此View中的TreeViewer
被聲明為靜態的,而我實現了一個簡單的靜態getTreeViewer
方法,該方法例如由JFace Action再次靜態調用。 工作正常。
所以我正在考慮為擴展org.eclipse.ui.part.ViewPart
視圖類實現一種getter方法。 我希望以此方式,如果需要,我可以將運行時Eclipse中此View的實例返回給外部類,並以此方式可以訪問以前靜態的now實例字段的實際值。 。
但是現在,如果沒有靜態字段和方法,我要么必須使用new關鍵字才能調用非靜態方法,否則顯然會導致NPE,因為不會調用任何createPartControl()
方法。 或者我應該能夠以某種方式返回已經實例化的視圖? 這是我缺少的地方嗎? 整個View的返回方法應如何,以便可以在其實際狀態下訪問其內部? 有沒有簡單的方法可以做到這一點? 謝謝!
您可以這樣獲得視圖:
ExampleView view = (ExampleView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("viewId");
if (view != null) {
view.getTreeViewer();
}
現在,您可以訪問視圖的所有公共方法。
如果您在其他視圖或編輯器中,請使用:
ExampleView view = (ExampleView) getSite().getWorkbenchWindow().getActivePage().findView("viewId");
if (view != null) {
view.getTreeViewer();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.