【发布时间】:2014-12-11 17:25:14
【问题描述】:
我在eclipse中创建了一个偏好页面,偏好页面有两个字段
- 服务器网址
- 店铺位置
如果用户打开此首选项对话框,更改 url 的值并应用它,产品将重新启动,重新启动后,当我检查 url 字段中的值时,它会按预期更改。当我更改 url 和 directory 的值时,只有其中一个会更新,这取决于稍后更改哪一个。 这是我初始化首选项的 init 方法
public class DataStorePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
public static final String SERVER_URL = "prefs_server_url";
public static final String WORKSPACE_DIR = "prefs_workspace_dir";
public static final String KEEP_LOCKS = "prefs_keep_locks";
//public static final String RELEASE = "prefs_release";
public DataStorePreferencePage() {
super(GRID);
}
@Override
public void init(IWorkbench workbench) {
setPreferenceStore(Activator.getDefault().getPreferenceStore());
getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
System.setProperty("datastoreserver_url", property);
if (property.equals(DataStorePreferencePage.WORKSPACE_DIR) ||
property.equals(DataStorePreferencePage.SERVER_URL)) {
if(MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Information", "New settings will be applied after a restart.\nRestart now?"))
PlatformUI.getWorkbench().restart();
}
}
});
}
@Override
protected void createFieldEditors() {
StringFieldEditor urlEditor = new StringFieldEditor(SERVER_URL, "DataStore Server URL", getFieldEditorParent());
StringFieldEditor workspaceDirEditor = new DirectoryFieldEditor(WORKSPACE_DIR, "Workspace directory:", getFieldEditorParent());
BooleanFieldEditor keepLocksEditor = new BooleanFieldEditor(KEEP_LOCKS, "Keep locks (default setting):", getFieldEditorParent());
//BooleanFieldEditor releaseEditor = new BooleanFieldEditor(RELEASE, "Release (default setting):", getFieldEditorParent());
addField(workspaceDirEditor);
addField(urlEditor);
addField(keepLocksEditor);
//addField(releaseEditor);
}
@Override
public boolean performOk() {
return super.performOk();
}
}
问题:
新值存储在哪里? eclipse 从哪里获得任何 .ini 文件中的更改值?
如何同时更改这两个属性?
谢谢
【问题讨论】:
-
您需要等到
performOK或performApply被调用后再尝试重新启动。 -
当我执行 performOk 或 performApply 这些新值存储在哪里?
-
我无法确定,因为您没有向我们展示足够的代码
-
重启是出于测试目的还是您的应用程序的一部分?如果是应用程序的一部分,为什么?
-
我刚刚删除了重启它不需要更改即使没有重启也能生效
标签: java eclipse-rcp preferences rcp