java插件获取首选项_Eclipse RCP 中创建自定义首选项,并能读取首选项中的值
Eclipse RCP的插件中若想自己定義首選項需要擴展擴展點:
org.eclipse.core.runtime.preferences //該擴展點用于初始化首選項中的值
org.eclipse.ui.preferencePages//該擴展點用于定義自己的首選項頁面
plugin.xml中內容如:
Database Preferences掛在WorkFlowBase下,需要在category中填寫workFlowBase的ID
WorkFlowPreferenceInitializer類,用于初始化首選項中的值
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import mydesigner.WorkFlowActivator;
/**
* Class used to initialize default preference values.
* 首選項的初始化
*/
public class WorkFlowPreferenceInitializer extends AbstractPreferenceInitializer {
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
*/
public void initializeDefaultPreferences() {
IPreferenceStore store = WorkFlowActivator.getDefault().getPreferenceStore();
store.setDefault(WorkFlowPreferenceConstants.P_BOOLEAN, true);
store.setDefault(WorkFlowPreferenceConstants.P_CHOICE, "choice2");
store.setDefault(WorkFlowPreferenceConstants.P_STRING,"Default value");
store.setDefault(WorkFlowPreferenceConstants.USER_NAME, "admin");
store.setDefault(WorkFlowPreferenceConstants.PASSWORD, "123456");//頁面上的初始值
}
}WorkFlowPreferenceConstants 該類定義了首選項中的常量
public class WorkFlowPreferenceConstants {
public static final String P_PATH = "pathPreference";
public static final String P_BOOLEAN = "booleanPreference";
public static final String P_CHOICE = "choicePreference";
public static final String P_STRING = "stringPreference";
public static final String USER_NAME ="userName";
public static final String PASSWORD = "passWord";
}WorkFlowBasePreferencePage該類定義了首選項中的workFlow頁面
import mydesigner.WorkFlowActivator;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.workflow.preferences.WorkFlowPreferenceConstants;
/**
* 首選項中的workFlow頁面
* @author lww
*
*/
public class WorkFlowBasePreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
private Text userName; //用戶名
private Text password; //密碼框
public WorkFlowBasePreferencePage() {
super();
setPreferenceStore(WorkFlowActivator.getDefault().getPreferenceStore());
setDescription("This is a workflowBase PreferencePage!");
}
@Override
public void init(IWorkbench workbench) {
}
//該方法為必須實現的方法,在此方法中創建頁面上的各種控件
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));
//獲取保存此頁面的PreferenceStore對象
IPreferenceStore preferenceStore = getPreferenceStore();
new Label(composite, SWT.LEFT).setText("登錄用戶名:");
userName = new Text(composite, SWT.BORDER);
userName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//設置用戶名為保存在文件中的值
userName.setText(preferenceStore.getString(WorkFlowPreferenceConstants.USER_NAME));
new Label(composite, SWT.LEFT).setText("登錄密碼:");
password = new Text(composite, SWT.BORDER);
password.setEchoChar('*'); //設置密碼用*顯示
password.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//設置密碼為保存在文件中的值
password.setText(preferenceStore.getString(WorkFlowPreferenceConstants.PASSWORD));
return composite;
}
/*
* 覆蓋父類中的方法,但單擊“恢復默認值”按鈕時調用該方法
*/
protected void performDefaults() {
IPreferenceStore preferenceStore = getPreferenceStore();
userName.setText( preferenceStore.getDefaultString(WorkFlowPreferenceConstants.USER_NAME));
password.setText( preferenceStore.getDefaultString(WorkFlowPreferenceConstants.PASSWORD));
}
/*
* 覆蓋父類中的方法,但單擊“應用”按鈕時調用該方法
*/
public boolean performOk() {
IPreferenceStore preferenceStore = getPreferenceStore();
if (userName != null)
preferenceStore.setValue(WorkFlowPreferenceConstants.USER_NAME, userName.getText());
if (password != null)
preferenceStore.setValue(WorkFlowPreferenceConstants.PASSWORD, password.getText());
return true;
}
@Override//用于擴展自己的按鈕
protected void contributeButtons(Composite parent) {
// super.contributeButtons(parent);
Button bt1 = new Button(parent, SWT.NONE);
bt1.setText("按鈕一");
((GridLayout) parent.getLayout()).numColumns++;
Button bt2 = new Button(parent, SWT.NONE);
bt2.setText("按鈕二");
((GridLayout) parent.getLayout()).numColumns++;
}
}DBPreferencePage該類定義了DB的首選項頁面
import org.eclipse.jface.preference.*;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbench;
import com.workflow.preferences.WorkFlowPreferenceConstants;
import mydesigner.WorkFlowActivator;
public class DBPreferencePage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
public DBPreferencePage() {
super(GRID);
setPreferenceStore(WorkFlowActivator.getDefault().getPreferenceStore());
setDescription("A demonstration of a preference page implementation");
}
/**
* Creates the field editors. Field editors are abstractions of
* the common GUI blocks needed to manipulate various types
* of preferences. Each field editor knows how to save and
* restore itself.
*/
public void createFieldEditors() {
addField(new DirectoryFieldEditor(WorkFlowPreferenceConstants.P_PATH,
"&Directory preference:", getFieldEditorParent()));
addField(
new BooleanFieldEditor(
WorkFlowPreferenceConstants.P_BOOLEAN,
"&An example of a boolean preference",
getFieldEditorParent()));
addField(new RadioGroupFieldEditor(
WorkFlowPreferenceConstants.P_CHOICE,
"An example of a multiple-choice preference",
1,
new String[][] { { "&Choice 1", "choice1" }, {
"C&hoice 2", "choice2" }
}, getFieldEditorParent()));
addField(
new StringFieldEditor(WorkFlowPreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent()));
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
}
}執行結果如圖:
設置的值會保存到
runtime-myDesigner.product\.metadata\.plugins\org.eclipse.core.runtime\.settings中會生成文件
MyDesigner.prefs(MyDesigner是當前的插件名)
若要讀取該文件中的值:
//獲取首選項中的值
IPreferenceStore store = WorkFlowActivator.getDefault().getPreferenceStore();
System.out.println("用戶名:" + store.getString(WorkFlowPreferenceConstants.USER_NAME));
System.out.println("密碼:" + store.getString(WorkFlowPreferenceConstants.PASSWORD));//頁面上的初始值
原文:http://blog.csdn.net/luoww1/article/details/34425305
總結
以上是生活随笔為你收集整理的java插件获取首选项_Eclipse RCP 中创建自定义首选项,并能读取首选项中的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中语法分析器_语法分析器(jav
- 下一篇: 大白话系列之java_大白话系列之——J