错误日志视图 - 在 RCP 中激活新事件的 属性 值

Error Log View - Activate on new events' property value in RCP

这可能是一个奇怪的问题,但是.. 我如何从代码中知道 'Activate on new events' 属性 值,当有错误显示时弹出错误日志视图?我在 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/the 产品时才能获得正确的值。如果我从错误日志视图右上角菜单(从 UI)更改值,我的代码仍然 returns 旧值直到重新启动,所以我猜测只有当 eclipse/rcp 是关闭,新的 属性 值存储在首选项中。

编辑:

所以我发现 'org.eclipse.ui.logs.view.prefs' 中的这个偏好值没有检索到正确的信息。当用户从错误日志菜单更改 "Activate on new events" 值时,它不会更新。所以问题是: 如何确定用户何时点击 "Activate on new events" 和 checks/unchecks 这个值?

这两个代码片段只为您提供当前设置,如果首选项发生更改则不会更新。

对于 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
    }
}