构建eclipse plugin 的Preferences

本文介绍如何在Eclipse RCP应用中创建自定义偏好设置页面,并演示密码策略配置的具体实现方式,包括如何使用RadioGroupFieldEditor等组件简化UI开发。
现在正在做一个rcp软件,刚刚做好了Preferences,总结一下。此方法也适用eclipse plugin。在作ipass的时候,没有发现有这么简便的方法。
以一个配置密码策略的页面为例:
public class PreferencePassPolicyPage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
public static final String PASSWORD_CHARS = "passgate.password.chars";
public static final String ALPHABETIC = "alphabetic";
public static final String ALPHANUMERIC = "alphanumeric";
public static final String NUMERIC = "numeric";
public static final String PASSWORD_CASE = "passgate.password.case";
public static final String UPPER = "uppercase";
public static final String LOWER = "lowercase";
public static final String MIXED = "mixed";
public static final String PASSWORD_LENGTH = "passgate.password.length";
public PreferencePassPolicyPage() {
super(GRID);
setTitle("Password Policy");
setImageDescriptor(ImageShop.getDescriptor("category_obj"));
setPreferenceStore(PwdgatePlugin.getDefault().getPreferenceStore());
}
public void init(IWorkbench workbench) {
}
protected void createFieldEditors() {
// characters
String[][] choose = new String[][] {
new String[] { "Use alphabetic only", ALPHABETIC },
new String[] { "Use numberic only", NUMERIC },
new String[] { "Use alphanumeric only", ALPHANUMERIC } };
FieldEditor charcterEditor = new RadioGroupFieldEditor(PASSWORD_CHARS,
"Characters", 1, choose, getFieldEditorParent(), true);
addField(charcterEditor);
// case
choose = new String[][] { new String[] { "Lower case", LOWER },
new String[] { "Upper case", UPPER },
new String[] { "Mixed", MIXED } };
FieldEditor caseEditor = new RadioGroupFieldEditor(PASSWORD_CASE,
"Case", 1, choose, getFieldEditorParent(), true);
addField(caseEditor);
FieldEditor lengthEditor = new IntegerFieldEditor(PASSWORD_LENGTH,
"Password length", getFieldEditorParent());
addField(lengthEditor);
}
}
页面继承了FieldEditorPreferencePage,只需要实现createFieldEditors()即可构建自己的Preference结构;实现了IWorkbenchPreferencePage接口,这样eclipse才能够通过plugin.xml中定义的extension point="org.eclipse.ui.preferencePages"加载本页。程序开始的静态常量是本页要用到的key,用来保存相应的属性值。在createFieldEditors()方法中,RadioGroupFieldEditor是一组Radio Button,省去了自己一个一个的常见控件。相应的还有IntegerFieldEditor,BooleanFieldEditor,StringFieldEditor等等可以使用,使用方法十分简单,参考api即可。实现的效果如下:
在plugin.xml文件中加入如下内容:
<extension
point="org.eclipse.ui.preferencePages">
<page
class="com.mi.pwdgate.dialog.PreferenceEditorPage"
id="com.mi.pwdgate.dialog.PreferenceEditorPage"
name="PassGate"/>
<page
category="com.mi.pwdgate.dialog.PreferenceEditorPage"
class="com.mi.pwdgate.dialog.PreferencePassPolicyPage"
id="com.mi.pwdgate.dialog.PreferencePassPolicyPage"
name="Password Policy"/>
</extension>
class为自己编写的preference页面的类,id可以任意取,但必须要使唯一的,一般都用类名,name是用来显示在界面上的名字,category是当前的Preference属于哪个Preference,就填写哪个Preferenceid。本例中Password Policy的父节点是PassGate
设定Preference的默认值
编写PreferenceInitializer.java,在这里设定preference的默认值,必须要继承AbstractPreferenceInitializer类。
public class PreferenceInitializer extends AbstractPreferenceInitializer {
public void initializeDefaultPreferences() {
IPreferenceStore store = PwdgatePlugin.getDefault()
.getPreferenceStore();
// for PassPolicy Preference
store.setDefault(PreferencePassPolicyPage.PASSWORD_CHARS,
PreferencePassPolicyPage.ALPHANUMERIC);
store.setDefault(PreferencePassPolicyPage.PASSWORD_CASE,
PreferencePassPolicyPage.LOWER);
store.setDefault(PreferencePassPolicyPage.PASSWORD_LENGTH, 8);
// for interaction preference
store.setDefault(PreferenceInteractionPage.DELETE_COMFIRM, true);
store.setDefault(PreferenceInteractionPage.DELETE_TO_BIN, true);
}
}
在plugin.xml文件中加入如下内容:
<extension
point="org.eclipse.core.runtime.preferences">
<initializerclass="com.mi.pwdgate.dialog.PreferenceInitializer"/>
</extension>
再给一张截图
我喜欢里面自动完成的功能,HOHO 本软件CnPlugin是Allround Automations公司PL/SQL Developer工具的插件,支持PL/SQL Developer 7.0以上版本。增加了PL/SQL Developer工具本身所没有的一些小功能,功能基本一些已有官方插件的整合,以方便Oracle编程开发。 1.5.400现有功能简要说明: 主菜单功能 所有主菜单可在PL/SQL中设置工具栏按钮,以方便调用 CnPlugin / Comment /&Commnet Lines 以“--”注释当前选中的代码 CnPlugin / Comment /&Uncommnet Lines 去除当前选中以“--”注释的代码 CnPlugin / &ReConnect 重连中断的数据库连接 CnPlugin / &ExPaste 对当前选中或剪贴板内空格式化为IN 字符串,如格式化字符串AA,BB,CC为('AA','BB',CC') CnPlugin / &ExCreate 建表时插入COMMENT的字段说明,如CREATE TABLE tt(ID NUMBER --编号);语句,除执行当前建表语句外,会自动生成comment on column TT.ID is '编号'注释语句 CnPlugin / Script / Load From MDB 以列表窗口形式读取已保存在Access数据库中的SQL语句 CnPlugin / Script / Save To MDB 保存当前SQL语句至Access数据库 CnPlugin / Script / Save As To MDB 另存为当前SQL语句至Access数据库 CnPlugin / Toggle Read Only 设置/取消设置当前SQL窗口为直读。 CnPlugin / Find All... 对当前窗口内空查找指定的字符串,列出全部匹配内容,支持正则表达式查找 CnPlugin / &Preferences CnPlugin插件属性设置窗口 CnPlugin / &About' CnPlugin关于窗口 右键菜单功能 Query data using alias 以字段注释字符作为字段名拼出查询SQL语句(选中表名出现) Open in new SQL Window 复制当前窗口选中的SQL语句到新窗口中(选中字符串是出现) Execute in new SQL Window 复制当前窗口选中的SQL语句到新窗口中并执行语句(选中字符串是出现) Generate Word Documentation 导出当前表结构内容至Word文档(选中表名出现) 无菜单功能 快捷键输入功能:如输入s空格,带出'select * from ',支持光标定位 登录时打开或执行指定SQL文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值