如何使用 ISecurePreferences 初始化首选项页面字段?
How to initialize preference page fields using ISecurePreferences?
我想使用 ISecurePreferences 而不是普通的 IPreferenceStore,当我尝试使用存储值更新字段时出现问题。
除了 performOk、performApply、performDefaults、performCancel 和 performHelp 之外,我没有找到在 UI 线程中运行以使用存储值更新字段的方法。
目前我在创建字段后使用 asyncExec 执行此操作。
代码:
@Override
protected void createFieldEditors() {
// TODO Auto-generated method stub
usernameField = new StringFieldEditor("username","Username:",getFieldEditorParent());
addField(usernameField);
//Create password field
passwordField = new StringFieldEditor("password","Password:",getFieldEditorParent()){
@Override
protected void doFillIntoGrid(Composite parent, int numColumns) {
super.doFillIntoGrid(parent, numColumns);
getTextControl().setEchoChar('*');
}
};
addField(passwordField);
try{
ISecurePreferences root = SecurePreferencesFactory.getDefault();
final ISecurePreferences node = root.node("nodeName");
System.out.println("Username initialized: "+node.get("username",""));
System.out.println("Password initialized: "+node.get("password",""));
Display.getCurrent().asyncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
usernameField.setStringValue(node.get("username", ""));
passwordField.setStringValue(node.get("password", ""));
} catch (StorageException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
catch(StorageException ex)
{
System.out.println("Exception storage...");
ex.printStackTrace();
}
}
我正在寻找正确的解决方案以更新创建的字段。是否有在 UI 线程中运行并在 createFieldEditors 之后调用的方法?
字段编辑器不支持 ISecurePreferences
。他们会尝试在正常的首选项存储中加载和保存首选项值,这可能会导致错误(特别是如果您没有设置)。
因此,使用现场编辑器不会给您带来任何好处。使用普通的首选项页面而不是字段编辑器首选项页面并使用像 Text
、Button
、....
这样的普通控件可能更简单
我想使用 ISecurePreferences 而不是普通的 IPreferenceStore,当我尝试使用存储值更新字段时出现问题。
除了 performOk、performApply、performDefaults、performCancel 和 performHelp 之外,我没有找到在 UI 线程中运行以使用存储值更新字段的方法。
目前我在创建字段后使用 asyncExec 执行此操作。
代码:
@Override
protected void createFieldEditors() {
// TODO Auto-generated method stub
usernameField = new StringFieldEditor("username","Username:",getFieldEditorParent());
addField(usernameField);
//Create password field
passwordField = new StringFieldEditor("password","Password:",getFieldEditorParent()){
@Override
protected void doFillIntoGrid(Composite parent, int numColumns) {
super.doFillIntoGrid(parent, numColumns);
getTextControl().setEchoChar('*');
}
};
addField(passwordField);
try{
ISecurePreferences root = SecurePreferencesFactory.getDefault();
final ISecurePreferences node = root.node("nodeName");
System.out.println("Username initialized: "+node.get("username",""));
System.out.println("Password initialized: "+node.get("password",""));
Display.getCurrent().asyncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
usernameField.setStringValue(node.get("username", ""));
passwordField.setStringValue(node.get("password", ""));
} catch (StorageException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
catch(StorageException ex)
{
System.out.println("Exception storage...");
ex.printStackTrace();
}
}
我正在寻找正确的解决方案以更新创建的字段。是否有在 UI 线程中运行并在 createFieldEditors 之后调用的方法?
字段编辑器不支持 ISecurePreferences
。他们会尝试在正常的首选项存储中加载和保存首选项值,这可能会导致错误(特别是如果您没有设置)。
因此,使用现场编辑器不会给您带来任何好处。使用普通的首选项页面而不是字段编辑器首选项页面并使用像 Text
、Button
、....