2012-10-26 36 views
0

我在我的RCP應用程序中有一個View,它繪製了一些內容,當用戶點擊某個Toolbar動作時創建它。 View影響ISelectionProvider,當視圖中的某些對象被點擊時,它們的屬性顯示在屬性視圖中。選擇監聽器何時在視圖中註冊?

問題是,當我以編程方式顯示view通過getActivePage.showView("viewid")中似乎沒有listeners註冊所以沒有顯示在屬性視圖的動作run()方法。

作爲一個隱藏的視圖通過按其他view出現,然後我再次打開監聽器註冊和屬性顯示。

那麼在什麼方法下這些listeners註冊不是用showView命令調用的?

回答

0

我相信如果視圖有焦點,選擇會被宣佈,請嘗試在顯示焦點之前以編程方式設置焦點。

+0

相同的行爲...註冊表未註冊 – user847988

+0

您正在使用「註冊」這個詞,這個問題有點令人困惑。你是否真的說過這個觀點並沒有把自己註冊爲選擇提供者?我懷疑情況可能如此。 – Link19

+0

另外,我確定你已經嘗試了不同順序的東西,但對我來說,通常會提供屬性的第一個視圖總是不能這樣做,這不是因爲聽衆不在那裏,而是因爲它發送了錯誤的適配器鍵入,如果我點擊不同的視圖並重新顯示,它將開始工作。我從來沒有得到答案,爲什麼它這樣做。 – Link19

0

當零件被激活時它被觸發。嘗試

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("myViewId", null, IWorkbenchPage.VIEW_ACTIVATE) 
+0

它產生相同的行爲 – user847988