2016-08-31 11 views
0

這可能是一個奇怪的問題,但是..我怎麼能從代碼中知道'激活新事件'屬性值,使得錯誤日誌視圖彈出時有錯誤顯示?我正在RCP應用程序中工作。錯誤日誌視圖 - 在RCP中新事件的屬性值上激活

我試圖用這個

IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, "org.eclipse.ui.views.log"); 
Boolean activateOnNewEvents = store.getBoolean("activate"); 

即使這樣:

Preferences preferences = InstanceScope.INSTANCE.getNode("org.eclipse.ui.logs.view.prefs"); 
Boolean activateOnNewEvents = preferences.getBoolean("activate", true); 

但問題是,當我關閉我只得到正確的值,然後重新打開Eclipse中/的產品。如果我從錯誤日誌視圖右側頂部菜單(從UI)更改值,我的代碼仍會返回舊值直到重新啓動,所以我只在eclipse/rcp關閉時猜測,新屬性值存儲在首選項中。

編輯:

所以我想通了,從「org.eclipse.ui.logs.view.prefs」此偏好值不獲取正確的信息。當用戶更改錯誤日誌菜單中的「激活新事件」值時,它不會更新。所以問題是: 如何確定用戶何時點擊「在新事件上激活」並檢查/取消選中此值?

回答

0

這兩個代碼片段只是給你當前的設置,並且如果首選項已更改,則不會更新。

對於IPreferenceStore方法,您可以使用addPropertyChangeListener調用來向首選項存儲區添加偵聽程序,只要首選項發生更改就會調用該首選項存儲區。

IPropertyChangeListener您可以檢查關鍵你有興趣在不斷變化:

public void propertyChange(PropertyChangeEvent event) { 
    String key = event.getProperty(); 

    if (key.equals(""activate"") { 
     // TODO get the new value from the preference store 
    } 
} 
+0

謝謝你的答案,我想這一點,分配一個PropertyChange,我想通了,從優先值不當用戶選中/取消選中「在新evets上激活」時更改。我也編輯了我的帖子。所以問題是: 如何確定用戶何時點擊「在新事件上激活」並檢查/取消選中此值? – IoanaC

+0

如果您的意思是錯誤日誌視圖菜單中的菜單項,我不認爲有任何方法來設置它,因爲它存儲在屬於視圖的紀念品中,並且沒有用於更改它們的API。 –

+0

好的,謝謝!這是我想知道的,如果有任何方法的話 – IoanaC