Java Eclipse插件首选项页面属性在启动时被默认值覆盖
我似乎不知道是什么原因导致eclipse在启动时覆盖了我的插件首选项。 一切似乎都很正常,除了重新启动eclipse时,文件被默认值覆盖。 更新首选项时,我可以看到保存到正确文件中的值: pluginWorkspace.metadata.plugins\org.eclipse.core.runtime.settings\asdfplugin.prefs 另一个奇怪的事实是,当我右键单击plugin.xml文件并作为eclipse应用程序运行时,它似乎可以工作。eclipse实例似乎保留了它的值。 但是当我编译插件并使用它时,每次eclipse加载时,它都会不断替换.prefs文件。 我错过了什么?如何阻止eclipse覆盖prefs文件 谢谢Java Eclipse插件首选项页面属性在启动时被默认值覆盖,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我似乎不知道是什么原因导致eclipse在启动时覆盖了我的插件首选项。 一切似乎都很正常,除了重新启动eclipse时,文件被默认值覆盖。 更新首选项时,我可以看到保存到正确文件中的值: pluginWorkspace.metadata.plugins\org.eclipse.core.runtime.settings\asdfplugin.prefs 另一个奇怪的事实是,当我右键单击plugin.xml文件并作为eclipse应用程序运行时,它似乎可以工作。eclipse实例似乎保留了它的值。
<extension point="org.eclipse.ui.preferencePages">
<page
id="com.wfa.ASDF.ui.preferences.Page1"
class="com.wfa.ASDF.ui.preferences.ASDFPreferencesPage"
name="ASDF" >
</page>
<page
id="LoggingPreferencePage"
name="Logging"
class="com.wfa.ASDF.ui.preferences.ASDFLoggingPreferencesPage"
category="ASDFPreferencesPage">
</page>
</extension>
public类ASDFPreferencesPage扩展了ASDFPreferencesBase{
私有文本文本字段_工作区;
私有文本文本字段_ziplocation;
专用按钮复选框\u调试;
@凌驾
public void init(IWorkbench arg0){
试一试{
ASDFPlugin.getInstance().logProperties();
setPreferenceStore(ASDFPlugin.getInstance().getPreferenceStore());
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
受保护的控件createContents(复合父级){
//composite_textField似乎默认存储适用于所有工作空间。
在扩展AbstractUIPlugin的类中,我重写了“getPreferenceStore”方法,以确保它正在检索实例范围存储
public IPreferenceStore getPreferenceStore(){
IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, ConstantsWFA.PLUGIN_ID+"_store");
return store;
}
public class ASDFPreferencesPage extends ASDFPreferencesBase{
private Text textField_workspace;
private Text textField_ziplocation;
private Button checkBox_debug;
@Override
public void init(IWorkbench arg0) {
try{
ASDFPlugin.getInstance().logProperties();
setPreferenceStore(ASDFPlugin.getInstance().getPreferenceStore());
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected Control createContents(Composite parent) {
//composite_textField << parent
Composite composite_textField = createComposite(parent, 2);
Label label_textField = createLabel(composite_textField, "Workspace");
textField_workspace = createTextField(composite_textField);
//pushButton_textField = createPushButton(composite_textField, MessageUtil.getString("Change"));
createDirectoryDialogButton(textField_workspace);
createLabel(composite_textField, "Zip File(s) Location");
textField_ziplocation = createTextField(composite_textField);
createDirectoryDialogButton(textField_ziplocation);
Composite composite_checkBox = createComposite(parent, 1);
checkBox_debug = createCheckBox(composite_checkBox, "Debug");
initializeValues();
return new Composite(parent, SWT.NULL);
}
@Override
public void modifyText(ModifyEvent arg0) {
//System.out.println("modify text");
// TODO Auto-generated method stub
}
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
//System.out.println("widgetDefaultSelected");
}
@Override
public void widgetSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
//System.out.println("widgetSelected");
}
/**
* Initializes states of the controls from the preference store.
*/
private void initializeValues() {
IPreferenceStore store = getPreferenceStore();
PropertiesWFA properties = ASDFPlugin.getInstance().getPropertiesWFA();
ConsoleUtil.getInstance().debug("InitalizeValues Load workspace as ("+store.getString(ConstantsWFA.STORE_WORKSPACE)+") ");
ConsoleUtil.getInstance().debug("InitalizeValues Load zip location as ("+store.getString(ConstantsWFA.STORE_ZIP_LOCATION)+") ");
ConsoleUtil.getInstance().debug("InitalizeValues Load debug as ("+store.getBoolean(ConstantsWFA.STORE_DEBUG)+") ");
textField_workspace.setText(store.getString(ConstantsWFA.STORE_WORKSPACE));
if(isFieldEmpty(textField_workspace)){
textField_workspace.setText(properties.getWorkspace());
}
textField_ziplocation.setText(store.getString(ConstantsWFA.STORE_ZIP_LOCATION));
if(isFieldEmpty(textField_ziplocation)){
textField_ziplocation.setText(properties.getZipLocation());
}
checkBox_debug.setSelection(store.getBoolean(ConstantsWFA.STORE_DEBUG));
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performOk()
* You may override performApply if you have additional processing when the user selects Apply. The default implementation is to call performOk.
*/
public boolean performOk() {
storeValues();
ASDFPlugin.getInstance().savePluginPreferences();
ASDFPlugin.getInstance().refreshProperties();
return super.performOk();
}
private void storeValues() {
//http://alvinalexander.com/java/jwarehouse/eclipse/org.eclipse.ui.examples.readmetool/Eclipse-UI-Examples-Readme-Tool/org/eclipse/ui/examples/readmetool/ReadmePreferencePage.java.shtml
ConsoleUtil.getInstance().debug("Save workspace as ("+textField_workspace.getText()+") ");
ConsoleUtil.getInstance().debug("Save zip location as ("+textField_ziplocation.getText()+") ");
ConsoleUtil.getInstance().debug("Save debug as ("+checkBox_debug.getSelection()+") ");
updateStoreValue(ConstantsWFA.STORE_WORKSPACE, textField_workspace.getText());
updateStoreValue(ConstantsWFA.STORE_ZIP_LOCATION, textField_ziplocation.getText());
updateStoreValue(ConstantsWFA.STORE_DEBUG, checkBox_debug.getSelection());
ASDFPlugin.getInstance().logProperties();
}
private void updateStoreValue(String key, String value){
IPreferenceStore store = getPreferenceStore();
store.setValue(key, value);
//store.setDefault(key, value);
}
private void updateStoreValue(String key, Boolean value){
IPreferenceStore store = getPreferenceStore();
store.setValue(key, value);
store.setDefault(key, value);
}
}
public IPreferenceStore getPreferenceStore(){
IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, ConstantsWFA.PLUGIN_ID+"_store");
return store;
}