PreferencePage 和 PropertyPage

本文深入探讨Eclipse中PreferencePage的工作原理,包括PreferencePage的定义、设置及获取值的方法,以及如何通过PreferencePage通知其他组件值的变化。同时,文章还介绍了PropertyPage的实现方式,并讨论了其作为PreferencePage使用的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PreferencePage

 

扩展org.eclipse.ui.preferencePagesorg时,Eclispe会额外地自动扩展eclipse.core.runtime.preferences。后者用于设置PreferencePage的默认值。

 

一、定义PreferencePage

public class FavoritesPreferencePage

      extends FieldEditorPreferencePage
      implements IWorkbenchPreferencePage{}

初始化过程:

FieldEditorPreferencePage.createContent主要执行了以下三个操作:

  1. 调用虚函数createFieldEditors(), 此方法在FavoritesPreferencePage必须实现,用于创建FieldEditor
  2. 调用函数initialize(),此方法在FieldEditorPreferencePage有具体实现:配置1所创建的FieldEditor,注册属性改变监听器(FieldEditorPreferencePage本身)是其中之一
  3. 调用checkState(),此方法FieldEditorPreferencePage有具体实现:调用每个FieldEdior.isValid, 如果有个无效,则设置applyButton为disable.

checkState 还会在一下几种情况下调用:

  1. performDefault
  2. PropertyChanged中调用,即 每个EditorField值发生变化的时候

每个FieldEditor值发生变化时,会通过调用FieldEditorPreferencePage.propertyChange来通知监听器

实现复杂的PerferencePage 需要直接实现PreferencePage

 

二、设置和获取PreferencePage的值

 

PreferencePage的值都存贮在pref file中,除了defaut value

设置的三种方式

  1. 通过IPreferenceStore初始化:org.eclipse.core.runtime.preference的initializer节点用于初始化PreferencePage的fieldEditor的值。setter和getter通过name关联到对应的fieldEditor.
    • 在程序实现上,所有控件如BooleanFieldEditor的值存放在IPreferenceStore中的Properties(string2string) 类型的成员中两种方式存储,从而将表现层与实体层区分开
      • 默认方式存储在defaultProperties, 通过defaultIPreferenceStore.setDefault() 在initializer中调用
      • 自定义方式存储在properties,通过IPreferenceStore.setValue 在performOK中调用
  2. 将值写入ini文件(等同于pref文件)

三、将FieldEditor值的变化通知其他部件

  1. 通过IPreferenceStore.addPropertyChangeListener(IPropertyChangeListener listener)注册被通知的监听器
  2. 在注册的监听器中IPreferenceStore.getXXX获取FieldEditor的值,PropertyChangeEvent.getProperty返回的是发生改变的FieldEditor的name

Property page

一、扩展org.eclipse.ui.propertyPages

  1. 在 createContents 中创建相应控件
  2. 通过getElement()获取属性需要设置的资源 IResource提供了getPersistentProperty 和 setPersistentProperty可以跨session获取和设置属性,即,及时eclipse重启,这些属性信息还可以能够保留,在FavoriteItemPropertyPage例子中,comment使用了上述方法,重启后comment信息依然存在,颜色属性就不可以做到这点

二、Property view中显示选中对象

  1. 需要显示对象的类型需要实现IPropertySource(2)接口或实现getAdapter方法,只要此方法返回的类型实现IPropertySource
  2. IPropertyDescriptor表示呗选中对象需要显示的一个属性值,一般多个IPropertyDescriptor实例组成了被选中对象需要显示的所有属性值,每个属性值的读取和设置分别在getPropertyValue和setPropertyValue中实现,都通过objectID判断出读取和设置哪个属性

三、PropertyPage作为PreferencePage来使用

PropertyPage 实现了PreferencePage因此可以将它作为PreferencePage来使用,只需要在plugin.xml将PreferencePage的class指向PropertyPage对应的类即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值