java – Eclipse:OSGI首选项与PreferenceStore

前端之家收集整理的这篇文章主要介绍了java – Eclipse:OSGI首选项与PreferenceStore前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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).

原文链接:https://www.f2er.com/java/124761.html

猜你在找的Java相关文章