Eclipse:OSGI 首选项与 PreferenceStore

2023-11-23

我正在开发一个 Eclipse 插件(或者实际上是基于 Eclipse 的应用程序的插件),它需要用户输入一些配置。

从文档来看,似乎有两种首选 API - 一种是org.eclipse.core.runtime.preferences,扩展/实施OSGI 首选项 API,另一个是 JFace 特定的,在org.eclipse.jface.preference。然后我们有org.eclipse.ui.preferences, too.

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

JFace API 没有这样的层次结构,只有一个平面IPreferenceStore对于每个插件。但它提供了首选项编辑器页面,然后可以通过实现将其包含在通常的首选项对话框(窗口/首选项)中IWorkbenchPreferencePage and 使用“org.eclipse.ui.preferencePages”扩展点。 (我仍然需要自己实现部分首选项页面,但这个 API 似乎为此提供了良好的基础。)

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

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


似乎在首选项页面级别,它希望与首选项存储一起工作。大多数插件从提供的默认值中获取其首选项存储org.eclipse.ui.plugin.AbstractUIPlugin.getPreferenceStore()。这可以松散地转换为带有 InstanceScope 的 ScopedPreferenceStore 以及与其bundle.id 匹配的节点。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eclipse:OSGI 首选项与 PreferenceStore 的相关文章

随机推荐

  • 批量删除文件名中的字符

    我在 Windows 资源管理器中有 3 个主文件夹 其中包含命名类似于 ALB 01 00000 intsect d kml 或 Baxters Creek AL intsect d kml 的文件 尽管第一个名称发生了变化 但我想从所有
  • HTML5 Canvas:缩放

    有没有简单的方法可以在画布 JavaScript 中放大和缩小 基本上我有一个 400x400px 的画布 我希望能够使用 mousedown 2x 放大并使用 mouseup 返回 过去两天用谷歌搜索 但到目前为止还没有运气 基于使用 d
  • 等待背景图像(css)加载完毕

    假设我们有一个图片幻灯片 这些图片的缩略图显示在带有滑块的 div 包装器中 我用 Jquery 创建的 并且每个图像都包含在 li 带有 CSS 背景集 它当然代表图像 我选择使用背景图像来进行布局 因为它们的大小和纵横比都不同 图像来自
  • 有哪些方法可以在 AngularJS 中显示“分块”响应?

    目前 我在显示从 Web 服务 Node js 服务器 localhost 3000 发送到 Node js 服务器 localhost 3001 上运行的模拟客户端的响应 块 时遇到问题 编辑 当前实现仅使用 Angular 的 http
  • 我可以从 popen() 流打开 bash 吗?

    根据 popen 的手册页 我正在打开 bin sh 有没有办法可以重载此行为以打开 bin bash shell 并与 BASH shell 脚本交互 或者我是否需要打开 pty 风格的连接才能做到这一点 如果您想在传递给的代码片段中使用
  • Android 警报对话框并设置肯定按钮

    这是用于滑块拼图的 我想在拼图完成时显示一个带有 确定 按钮的对话框 当按下 确定 按钮时 我使用Intent通过 Android 浏览器加载网站 唯一的问题是 使用当前代码 当拼图完成时 它不会加载盒子 当我使用null 它没有任何作用
  • 如何将 istream 与字符串一起使用

    我想将文件读入字符串 我正在寻找不同的方法来有效地做到这一点 使用固定大小的 char 缓冲区 我收到了answer来自 Tony 的内容创建了一个 16 kb 缓冲区并读取该缓冲区并追加该缓冲区 直到没有更多内容可读取 我了解它是如何工作
  • 在 XSLT 中使用 fn:sum 以及包含空值的节点集

    我正在尝试使用 XSLT 和 XPath 函数 fn sum 对 XML 中的一组值求和 只要值非空 这种方法就可以正常工作 但事实并非如此 为了说明我的问题 我举了一个例子
  • 使用 ReactiveX for Java 进行 Http 调用

    我是 ReactiveX for Java 的新手 我有以下代码块可以进行外部 http 调用 但它不是异步的 我们使用 rxjava 1 2 和 Java 1 8 private ResponseEntity
  • 如何使用 jQuery 自动跳到下一个字段?

    在 jQuery 中 如何触发用户切换到下一个输入字段的行为 我试过这个 var e jQuery Event keydown e which 9 Key code for the Tab key input trigger e 但触发事件
  • Visual Studio 2022 Xamarin Android SDK 安装模拟器“操作失败:安装 Android Emulatorv31.2.10”

    我目前正在尝试通过 Android SDK 和工具对话框安装 Android 模拟器 但我收到错误消息 操作失败 安装 Android Emulatorv31 2 10 指定的参数超出了有效值的范围 我到目前为止删除了所有设置的设备仍然没有
  • 从命令行运行 jar 时出现 MessageBodyProviderNotFoundException

    我正在使用 Java Jersey 框架 带有 Maven 并使用 IntelliJ 作为我的 IDE 我遇到过这个运行时异常 仅当我尝试从命令行运行代码时才会发生 使用 maven 进行编译 然后使用 java jar 但在 Intell
  • Xcode 9 - 无法为应用程序包 ID 创建 IXPlaceholder

    更新到 Xcode 9 并在模拟器上编译的 启动 阶段时 我收到错误 无法为应用程序包 ID 创建 IXPlaceholder 重点强调此问题仅在尝试启动模拟器时发生 因为我的实际 iPhone 6s 启动时没有任何问题 尝试 确保 inf
  • 如何在 PLAYWRIGHT 上使用选择器进行条件语句? [复制]

    这个问题在这里已经有答案了 我需要一些帮助来使用剧作家测试做出条件语句 我有一个给定的选择器 比如说一个按钮 我需要编写如下的条件语句 if selector is not present visible do nothing and pr
  • 无法在 OSX 上使用 RVM 运行 Ruby 2.2.3

    我有两台 MacBook 一台在 Mavericks 上 另一台在 Yosemite 上 并且两台 MacBook 上都会发生同样的情况 使用 RVM 安装 Ruby 2 2 3 后 出现以下错误 rvm rubies ruby 2 2 3
  • Cakephp 3 带有语言参数的路由

    我正在尝试将 cakephp 2 x 转换为 3 x 我正在使用Router connect 规则 但我尝试将它们转换为范围版本 关于 myold 路由规则 在config routes php我添加了这个 Router defaultRo
  • 测试选择器是否与给定元素匹配

    有什么方法可以测试选择器是否匹配给定的 DOM 元素 最好不使用 Sizzle 等外部库 这是针对一个库的 我想最大限度地减少 核心 库所需的第三方插件的数量 如果它最终需要 Sizzle 我会将其作为插件添加到库中 以供那些想要它启用该功
  • 角度 2 中的材料组件波斯日期选择器

    Angular2 Material 组件有一个 DatePicker 它以默认格式显示日期 并且仅支持将本地更改为 fa IR 如何格式化它以显示波斯日期 以下步骤应该有所帮助 1 在 module ts 中加载所有需要的模块 import
  • 同一级别的多个元素上的框阴影但没有重叠?

    I want to create something like the following screenshot but I can t figure out any z index value for which the shadow d
  • Eclipse:OSGI 首选项与 PreferenceStore

    我正在开发一个 Eclipse 插件 或者实际上是基于 Eclipse 的应用程序的插件 它需要用户输入一些配置 从文档来看 似乎有两种首选 API 一种是org eclipse core runtime preferences 扩展 实施