错误日志视图 - 在 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
}
}
这可能是一个奇怪的问题,但是.. 我如何从代码中知道 '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
}
}