簡體   English   中英

返回SWT / JFace視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM