加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Eclipse:OSGI首选项与PreferenceStore

发布时间:2020-12-14 16:37:51 所属栏目:Java 来源:网络整理
导读:我正在使用 Eclipse插件(或实际上是一个基于Eclipse的应用程序的插件),需要用户输入一些配置. 从文档看,似乎有两个偏好的API – 一个在 org.eclipse.core.runtime.preferences ,一个在 org.eclipse.jface.preference 扩展/实现OSGI prefererence API,另一个,
我正在使用 Eclipse插件(或实际上是一个基于Eclipse的应用程序的插件),需要用户输入一些配置.

从文档看,似乎有两个偏好的API – 一个在org.eclipse.core.runtime.preferences,一个在org.eclipse.jface.preference扩展/实现OSGI prefererence API,另一个,JFace具体,在org.eclipse.jface.preference.然后我们也有org.eclipse.ui.preferences.

OSGI API具有层次结构树 – 首选项节点(Preferences或IEclipsePreferences)可以具有多个子节点,它们本身可以包含单个名称 – 值对以及更多子节点.这似乎是适合我的用例 – 我有一个动态数量的“首选项组”,每个都有大约三个字符串属性(名称,描述,命令),它很好地映射到这些节点.

JFace API没有这样的层次结构,每个插件只有一个平均的IPreferenceStore.但是它提供了首选编辑器页面,然后可以通过实现IWorkbenchPreferencePage和using the “org.eclipse.ui.preferencePages” extension point将它们包含在通常的首选项对话框(Window / Preferences)中.(我仍然需要自己实现一部分偏好页面,但是这个API为此提供了一个很好的基础,它似乎.)

看来,org.eclipse.ui.preferences API通过提供基于IEclipsePreferences的IPreferenceStore实现,以某种方式桥接这两个API,但我仍然看不到如何使用它.

所以这里我的问题:如何在首选项对话框中使用分级OSGI首选项?我只需要一个级别,但我需要用户能够动态添加新的节点(每个约有三个首选项). (这些节点不一定要有新的首选页面.)

解决方法

看来,在首选页面级别,它想要使用偏好存储.大多数插件从org.eclipse.ui.plugin.AbstractUIPlugin.getPreferenceStore()提供的默认值中获取他们的偏好存储.这可以轻松地转换为具有与其bundle.id匹配的节点的InstanceScope的ScopedPreferenceStore.

相当于获取匹配的IEclipsePreferences对象将是InstanceScope.INSTANCE.getNode(“bundle.id”).这将允许您在其下方添加更多节点,但是它们将无法从您的IPreferenceStore访问.但是,您的偏好页面可以将其首选存储设置为插件的主要存储,并仍然使用IEclipsePreferences或辅助IPreferenceStore来访问额外的首选项(您只需要自己编码,类似于org.eclipse.ui.internal.dialogs .EditorsPreferencePage).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读