2011-03-02 80 views
1

我通過建設中的共享狀態行Eclipse RCP應用程序和設置文本:閱讀Eclipse的狀態行

IStatusLineManager statusLine = 
    getWindowConfigurer().getActionBarConfigurer().getStatusLineManager(); 

statusLine.setMessage("some status text"); 

我不知道是否有回讀所顯示的當前文本的方式共享狀態行?我注意到你可以使用StatusLineContributionItem來實現,但對於共享狀態行來說似乎不那麼容易。

在此先感謝。

回答

2

討厭的方式: 依賴於狀態行類不改變的執行 - 謹慎,以便繼續進行:

StatusLineManager.getControl()返回一個狀態行(其包受保護的),然而,它的子類複合材料,這意味着你可以調用getChildren(),其中的一個孩子將成爲一個包含該消息的CLabel。

雖然這是可怕的hacky。

更好的方式,但更多的工作:

從StatusLineManager它說,客戶可以繼承,以提供不同的佈局的文檔,所以想必你可以繼承這一點,並提供曝光的最後狀態信息的一種手段。

如果你正在構建你應該繼承WorkbenchWindowAdvisor一個RCP,它有一個構造函數:

public WorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) ... 

從constuctor你可以稱之爲:

configurer.setPresentationFactory(factory); 

注意,從我的javadoc:

Deprecated. the presentation factory is now obtained via extension point and a preference on org.eclipse.ui specifying which one to use; see IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID 

因此,您可能需要調查該擴展點。

工廠對象應該是你自己的AbstractPresentationFactory(或實際上WorkbenchPresentationFactory), 的子類重寫此方法:

public IStatusLineManager createStatusLineManager() { 
    return new StatusLineManager(); 
} 

返回自己StatusLineManager的子類。

注意:我正在使用Eclipse 3.4.2,所以請仔細檢查您正在使用的版本的文檔。

0

恕我直言,從用戶界面讀取是不好的做法。 Eclipse架構是MVC,這意味着您的狀態應該保存在控制器中,如果您以後需要它的話。

如果我是你,我會使用擴展點存儲狀態:

  • org.eclipse.core.variables.dynamicVariables,或
  • org.eclipse.core.variables。valueVariables

我會改變該變量的值,而不是直接改變狀態行,並使用IValueVariableListener至(自動)更新狀態線。