Plug-in 首选项
来源:互联网 发布:伊迪芬奇的秘密知乎 编辑:程序博客网 时间:2024/06/11 16:00
Plug-in 首选项
首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。
1、创建首选项
(1) 扩展点【org.eclipse.ui.preferencePages】在【org.eclipse.ui.preferencePages】中添加【page】,"class"指定首选项的类,必须实现IWorkbenchPreferencePage接口,一般会继承PreferencePage类来简化。
<extensionpoint="org.eclipse.ui.preferencePages"><pageclass="com.plugin.blog.demo.preference.HomePreferencePage"id="com.plugin.blog.demo.preference.HomePreferencePage"name="Demo"></page></extension>HomePreferencePage类
public class HomePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {@Overrideprotected Control createContents(Composite parent) {Composite container = new Composite(parent, SWT.NULL);GridLayout containerLayout = new GridLayout();container.setLayout(containerLayout);Label label = new Label(container, SWT.NONE);label.setText("用户配置");label = new Label(container, SWT.NONE);label.setText("这是用户配置的首页");return container;}@Overridepublic void init(IWorkbench workbench) {noDefaultAndApplyButton();}}显示如下
2、FieldEditorPreferencePage类
FieldEditorPreferencePage经常被用来作为首选项的父类来使用,并且定义了多种FieldEditor来方便使用。定义了新的首选项页SamplePreferencePage,继承FieldEditorPreferencePage,并使用多个FieldEditor。
<extensionpoint="org.eclipse.ui.preferencePages"><pagecategory="com.plugin.blog.demo.preference.HomePreferencePage"class="com.plugin.blog.demo.preference.SamplePreferencePage"id="com.plugin.blog.demo.preference.SamplePreferencePage"name="FieldSample"></page></extension>SamplePreferencePage类
public class SamplePreferencePage extends FieldEditorPreferencePageimplements IWorkbenchPreferencePage {private final static String[][] RADIO_ARRAY = new String[][] {{"radio1", "value1"}, {"radio2", "value2"}, {"radio3", "value3"}};public SamplePreferencePage() {super(GRID);setPreferenceStore(Activator.getDefault().getPreferenceStore());setDescription("Field Sample");}@Overridepublic void init(IWorkbench workbench) {}@Overrideprotected void createFieldEditors() {Composite parent = getFieldEditorParent();addField(new BooleanFieldEditor(PreferenceConstants.P_BOOLEAN,"Boolean", parent));addField(new RadioGroupFieldEditor(PreferenceConstants.P_RADIO,"Radio", 1, RADIO_ARRAY, parent, true));addField(new ComboFieldEditor(PreferenceConstants.P_COMBO,"Combo", RADIO_ARRAY, parent));addField(new StringFieldEditor(PreferenceConstants.P_STRING,"String", parent));addField(new IntegerFieldEditor(PreferenceConstants.P_INTEGER,"Integer", parent));addField(new ColorFieldEditor(PreferenceConstants.P_COLOR, "Color", parent));addField(new FontFieldEditor(PreferenceConstants.P_FONT, "Font", parent));addField(new DirectoryFieldEditor(PreferenceConstants.P_DIR, "Directory", parent));}}PreferenceConstants类
public class PreferenceConstants {public static final String P_BOOLEAN = "user_info_booleanPreference";public static final String P_RADIO = "user_info_radioPreference";public static final String P_COMBO = "user_info_comboPreference";public static final String P_STRING = "user_info_stringPreference";public static final String P_INTEGER = "user_info_integerPreference";public static final String P_COLOR = "user_info_colorPreference";public static final String P_FONT = "user_info_fontPreference";public static final String P_DIR = "user_info_dirPreference";public static final String P_SHOW_PREVIEW= "user_info_show_preview";}
3、PreferenceInitializer类初始化
(1) 扩展点【org.eclipse.core.runtime.preferences】在【org.eclipse.core.runtime.preferences】中添加【initializer】,"class"指定了初始化类,继承AbstractPreferenceInitializer
<extensionpoint="org.eclipse.core.runtime.preferences"><initializerclass="com.plugin.blog.demo.preference.PreferenceInitializer"></initializer></extension>PreferenceInitializer类
public class PreferenceInitializer extends AbstractPreferenceInitializer {public void initializeDefaultPreferences() {IPreferenceStore store = Activator.getDefault().getPreferenceStore();store.setDefault(PreferenceConstants.P_BOOLEAN, true);store.setDefault(PreferenceConstants.P_RADIO, "value2");store.setDefault(PreferenceConstants.P_COMBO, "value3");store.setDefault(PreferenceConstants.P_STRING, "This is a String");store.setDefault(PreferenceConstants.P_INTEGER, 17);PreferenceConverter.setDefault(store, PreferenceConstants.P_COLOR,Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE).getRGB());PreferenceConverter.setDefault(store, PreferenceConstants.P_FONT,Display.getCurrent().getSystemFont().getFontData());store.setDefault(PreferenceConstants.P_DIR, "");store.setDefault(PreferenceConstants.P_SHOW_PREVIEW, true);}}显示如下
4、首选项的监听
(1) 添加一个新的首选页,用来配置界面的显示。<extensionpoint="org.eclipse.ui.preferencePages"><pagecategory="com.plugin.blog.demo.preference.HomePreferencePage"class="com.plugin.blog.demo.preference.UserInfoPreferencePage"id="com.plugin.blog.demo.preference.UserInfoPreferencePage"name="UserInfo"></page></extension>UserInfoPreferencePage类,配置在编辑器DemoEditorPart中是否显示预览页。
public class UserInfoPreferencePage extends FieldEditorPreferencePageimplements IWorkbenchPreferencePage {public UserInfoPreferencePage() {super(GRID);setPreferenceStore(Activator.getDefault().getPreferenceStore());setDescription("用户信息配置");}@Overrideprotected void createFieldEditors() {Composite parent = getFieldEditorParent();addField(new BooleanFieldEditor(PreferenceConstants.P_SHOW_PREVIEW, "显示预览分页", parent));}@Overridepublic void init(IWorkbench workbench) {}}显示如下
(2) 在DemoEditorPart添加监听器
private IPreferenceStore mStore;public DemoEditorPart() {mStore = Activator.getDefault().getPreferenceStore();mStore.addPropertyChangeListener(new IPropertyChangeListener() {@Overridepublic void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {if (PreferenceConstants.P_SHOW_PREVIEW.equals(event.getProperty())) {boolean show = (Boolean) event.getNewValue();try {if (show && getPageCount() == 1) {mPreviewFormPage = new UserPreviewFormPage(DemoEditorPart.this);addPage(mPreviewFormPage);} else if (!show && getPageCount() == 2) {setActivePage(0);removePage(1);}}catch (PartInitException e) {}}}});}@Overrideprotected void addPages() {mInfoFormPage = new UserInfoFormPage(this);mPreviewFormPage = new UserPreviewFormPage(this);try {addPage(mInfoFormPage);if (mStore.getBoolean(PreferenceConstants.P_SHOW_PREVIEW))addPage(mPreviewFormPage);} catch (PartInitException e) {}... ...}
阅读全文
0 0
- Plug-in 首选项
- plug-in
- plug-in网址
- C# Plug-in resources
- Eclipse plug-in
- plug in, Basic idea
- ZDA plug-in,删无赦!
- datawindow plug-in
- powerbuilder window plug-in
- Nagios plug-in开发
- 瞎扯plug-in
- PI Achive Plug-In
- Plug-in插件技术
- Plug-In 1.1
- 关于jquery plug-in
- java plug in
- 什么是Java Plug-in
- Codeforce # A Plug-in
- 基于Xposed的一款脱壳神器ZjDroid工具原理解析
- Android 图片人脸识别剪切
- 写一个简单的scala的hello world出现的问题
- Java8 foreach
- Android Action Bar动态改变标题
- Plug-in 首选项
- eclipse c/c++ ubuntu16.04安装
- cocos js 热更新--版本号方法
- spring-cloud logback日志初始化问题
- Java 加密 base64 encode
- 有用的学习网站
- java对象序列化、gzip压缩解压缩、加密解密
- 微信缓存初探
- bitbake