如何创建我自己的 shell 来替换 e4 RCP 中 MTrimmedWindow 中创建的 shell?

2024-03-03

有没有办法用用户定义的窗口替换 Eclipse RCP 为 MTrimmedWindow 生成的 shell?

Eclipse 创建一个具有特定样式类型的 shell,该样式类型只能在创建时提供。我想从为 MTrimmedWindow 创建的 shell 元素中删除最大化和调整大小。如果有人有解决上述问题的方法,请回复。


外壳的样式在创建后无法更改,外壳本身在渲​​染器创建后也无法更改。但情况并非毫无希望。

Eclipse 4 使用渲染器从应用程序模型生成 UI 元素。这些渲染器can可以通过使用渲染框架进行交换,这是创建与默认样式不同的 shell 的一种可能方法。

该解决方案涉及为 MWindow 类型的 UIElements 编写自己的渲染器,提供 WorkbenchRendererFactory 来为 MWindows 创建新的 SWT 渲染器,以及向产品注册新工厂。

默认值:由 WBWRenderer 创建外壳

WBWRenderer(工作台窗口渲染器)是 MWindow 类型的 SWT 元素的标准渲染器。

In WBWRenderer#createWidget,外壳是用样式创建的SWT.SHELL_TRIM,这是一种方便的风格SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE:

wbwShell = new Shell(Display.getCurrent(), SWT.SHELL_TRIM | rtlStyle);

这将导致 TrimmedWindow 可以最大化并调整大小,但在创建后无法更改此行为。

通过新渲染器创建外壳

为了解决上述限制,您可以使用 WBWRenderer 作为模板来提供不同的渲染器。这允许您更改 shell 创建的代码,例如

wbwShell = new Shell(Display.getCurrent(), SWT.CLOSE | SWT.TITLE |
                         SWT.MIN | rtlStyle);

该渲染器需要由 WorkbenchRendererFactory 返回,作为用于显示 MWindows 的渲染器。此外,渲染器工厂必须作为产品属性添加到plugin.xml 中。

这些更改将导致 TrimmedWindow 无法最大化或调整大小。

可以找到如何编写和注册 WorkbenchRendererFactory 的示例here http://www.vogella.com/articles/Eclipse4Renderer/article.html#renderer_own.

更好的解决方案?

实际上,可能有更好的方法来设置 SWT shell 的样式,因为 WBWRenderer 已经使用标签来确定 MWindow 行为:shellMaximized and shellMinimized。这些标签可以在应用程序模型编辑器中修剪窗口的补充选项卡中设置。

如果可以以类似的方式设置 swt 样式标签,则它们可以用于设置 shell 样式。这将是对 Eclipse 的功能请求。

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

如何创建我自己的 shell 来替换 e4 RCP 中 MTrimmedWindow 中创建的 shell? 的相关文章

  • 如何获取eclipse中的工作空间路径? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在研究PDE Eclipse Plugin Project 我需要获取工作区路径 我的文本小部件 swt 应该设置为当前工作空间路径 如
  • 在 Eclipse 中编写链接特定行的注释

    我正在 Java 中使用 Eclipse 并且处理很长的类 我需要这样的功能 在方法的顶部注释中 例如 有一个由该方法执行的操作列表 对于列出的每个操作 我想将注释的一部分 超链接 到相关代码的特定行 然后使用 Ctrl Click 到该行
  • Mercurial Eclipse 插件

    在哪里可以找到好的 Eclipse Mercurial 插件 MercurialEclipse https bitbucket org mercurialeclipse main 更新站点 https bitbucket org mercu
  • 对 JFace Treeviewer 多列进行排序

    我希望用户能够对TreeViewer只要他想 只要单击列标题即可 但是我不知道正确的方法 我发现我们可以使用ViewerComparator对不同的元素进行排序 但是 我不知道如何设置侦听器以便能够正确进行升序或降序排序 有没有办法让 JF
  • 在 Eclipse Kepler 中安装远程系统资源管理器

    我正在使用 Eclipse Kepler 并且尝试使用存储库安装远程系统资源管理器 当我在开普勒搜索它时 http download eclipse org releases kepler http download eclipse org
  • 从不同的插件执行现有插件的命令/处理程序

    我有一个 RCP 应用程序 其中包含现有命令和处理程序 可以通过编程方式切换视角 我还有现有 RCP 应用程序使用的新插件 我希望这个新插件执行我的 RCP 应用程序的命令 处理程序 可能的解决方案是什么 您可能需要为该命令定义一个处理程序
  • Eclipse 快捷方式查找覆盖某个方法的所有子类

    Is there an Eclipse shortcut to see all class overriding the method m Highlight select put cursor on the method name and
  • org.osgi.framework.BundleException:找不到包:org.eclipse.equinox.console

    命令 eclipse SDK 4 2RC3 win32 x86 64 001 eclipse plugins gt java jar org eclipse osgi 3 8 0 v20120529 1548 jar console 异常
  • Eclipse RCP - 定义依赖项的所有可能性?

    是否有一个包含所有可能性的列表 用于定义 Eclipse RCP 项目中的依赖项 也许被资源过滤了 可能的依赖关系 来自其他 Eclipse RCP 插件 按包 无需明确定义插件 jar libs 正如你所说 你可以在MANIFEST MF
  • 在 Eclipse RCP 应用程序中禁用插件贡献

    我经常遇到这个问题 但尚未找到解决方案 每当我编写一个新的基于 Eclipse RCP 的应用程序并包含来自 Eclipse 平台的插件时 我都会 继承 其中一些插件的 UI 贡献 大多数贡献 菜单项 键盘快捷键 属性页 都很有用 但有时我
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • 在 Eclipse Indigo 中安装 ADT 中未找到存储库错误

    当我尝试安装 ADT 时出现此错误 An error occurred while collecting items to be installed session context was profile epp package jee p
  • 如何在 Eclipse Photon 4.8.x 版本上安装 Atlassian Connector

    我无法下载 Eclipse Photon 4 8 0 版本的 Atlassian 连接器 它支持通过 Eclipse Marketplace 安装 Eclipse 3 7 Indigo 4 2 Juno 4 3 Kepler 4 4 Lun
  • 从 Eclipse Java 编辑器中获取选定的文本

    我正在开发一个 Eclipse 插件 按下按钮后 该插件会在 Java 编辑器中获取选定的文本 并将其放入出现的文本框中 我的代码如下所示 我从这里得到它 http dev eclipse org newslists news eclips
  • 在 Eclipse Juno 上安装 Marketplace 插件

    我下载了Eclipse Juno 4 2 经典捆绑包 http eclipse org downloads 然后看到了Help gt Marketplace 不可用 AFAIK 这是由mpc 插件 在他们的网站上 http eclipse
  • Eclipse Luna 的速度编辑器插件

    我正在寻找 Eclipse Luna 的 Velocity 编辑器插件 但没有找到 我发现了几个编辑器插件 例如 速度月食 http code google com p veloeclipse 速度编辑器 http sourceforge
  • Eclipse 说“更新 Android Developer Toolkit”

    我不知何故弄乱了我的 Eclipse 和 Android 设置 我不知道如何修复它 问题症状如下 在 首选项 gt Android 中 我尝试选择 android sdk linux 的位置 选择时出现错误 此 Android SDK 需要
  • 如何在 ListViewer 中选择一个元素

    我正在尝试查找并选择一个元素ListViewer 我将字符串与中的每个元素进行比较ListViewer 我可以获得元素的索引 但我不知道如何在Listviewer String pattern elementText gettext Str
  • Eclipse 的 CoffeeScript 编辑器插件?

    事情是这样的 我使用 Wro4j 来处理 coffee 文件到 js 文件的转译 构建 现在我想要一个支持CoffeeScript的好的编辑器插件 并且我不想安装Aptana 我只需要CoffeeScript 不需要Python Ruby和
  • 编写自定义 Eclipse 调试器

    EDIT 一定有某种方法可以解决这个问题 而无需编写全新的调试器 我目前正在研究在现有 java 调试器之上构建的方法 如果有人对如何获取 Java 调试器已有的信息 有关堆栈帧 变量 原始数据等 有任何想法 那将非常有帮助 我想要做的是我

随机推荐

  • Haskell 中的验证

    我有一些需要验证的嵌套记录 我想知道惯用的 Haskell 方法是什么 简化一下 data Record Record recordItemsA ItemA recordItemB ItemB deriving Show data Item
  • 打开 JSX 文件时如何使 VS Code 将语言更改为 JavaScript React

    目前 当我打开一个 jsx文件的默认语言是纯 JavaScript 有没有办法设置编辑器根据文件扩展名更改语言 理想情况下 我可以将此设置放入本地设置配置文件或工作区特定配置文件中 我使用的版本是Version 1 15 0 insider
  • 更改 API 级别 Android Studio

    我想将 Android Studio 中的最低 SDK 版本从 API 12 更改为 API 14 我尝试在清单文件中更改它 即
  • Eclipse 中的“Android Private Libraries”文件夹是什么?

    我最初以为它是专门用于像支持库这样的官方库的 然而 每当我使用 添加到构建路径 菜单项添加自定义 JAR 时 它都会自动显示在 引用库 和 Android 私有库 中 其中之一是多余的 因为在构建时导出两者是没有意义的 此外 Android
  • 命令不同步,您现在无法运行此命令

    我正在尝试使用 mysqldb 创建一些表 问题是当执行python脚本时db pymysql 抛出错误 mysql exceptions ProgrammingError 2014 命令不同步 您现在无法运行此命令 db py impor
  • 如何使用 Dagger2 将 Activity 范围内的依赖项替换为模拟

    我的 Activity 中有范围依赖项 我想用一些模拟来测试该 Activity 我读过有关建议在测试期间用测试组件替换应用程序组件的不同方法 但我想要的是替换活动组件 例如 我想在 MVP 设置中针对模拟演示者测试活动 我相信通过在 Ac
  • PHP:如何将无穷大或 NaN 数字编码为 JSON?

    显然 无穷大和 NaN 不是 JSON 规范的一部分 因此这个 PHP 代码 numbers array numbers positive infinity INF numbers negative infinity INF numbers
  • 大数组上的分段错误

    以下代码在 2GB 机器上运行时出现分段错误 但在 4GB 机器上运行 int main int c 1000000 cout lt lt done n return 0 数组的大小仅为 4Mb C 中可以使用的数组的大小是否有限制 您可能
  • Ehcache - 找不到生成器的缓存名称

    我已经浏览了这里提出的很多类似问题 但我仍然无法找到解决方案 所以这是我的问题 我正在尝试在 Spring Boot 中设置 Ehcache Spring 2 2 6 RELEASE Ehcache 3 8 1 缓存服务 I ve got
  • data-* 属性可以包含 HTML 标签吗?

    I E img src world jpg 据我了解 它基本上是有效的 但最好使用 HTML 实体 来自HTML 4 参考 http www w3 org TR WD html40 970708 charset html 您还应该在属性值中
  • 如何显示外部 PostgreSQL 连接的 WORK_MEM?

    我知道我可以使用SHOW WORK MEM 在psql中查看当前使用的连接的值 但其他连接呢 我有一个应用程序可以打开许多连接并动态更改WORK MEM基于上下文 我想监控这些WORK MEM进行更改以确保它们得到应用 换句话说 我想 调整
  • 有效的 MFC ID 范围

    这让我很困惑 我正在读这个技术说明 https learn microsoft com en gb cpp mfc tn020 id naming and numbering conventions它指出 Prefix Resource t
  • 如何在 .xib 文件上创建的 UIViewController 中设置 UITableView

    我有一堂这样的课 interface ExerciseLogDetails UIViewController
  • AVURLAsset获取视频大小

    这真是令人沮丧 我正在尝试获取 AVURLasset 的大小 但尽量避免naturalSize因为 Xcode 告诉我 这在 iOS5 中已被弃用 但是 替代品是什么 我找不到任何关于如何在不使用 naturalsize 的情况下获取视频尺
  • CRT 库类型

    我试图更好地掌握 Visual Studio 2013 中的 CRT 库选项 C gt 代码生成 gt 运行时库 以及如何知道选择哪个选项 以及何时更改默认值 From MSDN http support microsoft com en
  • 如何在java应用程序中使用webRTC特定模块

    我有一个简单的java应用程序应用程序客户端可以向服务器发送 接收纯音频 UDP 数据包 服务器将音频数据包转发给除发送者之外的所有人 现在我该如何使用webRTC 回声消除我的应用程序端的模块或其他功能模块 我发现可以使用 JNI 和 w
  • .htaccess 拒绝子文件夹中的文件

    我想阻止对 sub folder index php 的访问 但不阻止对其他任何地方的 index php 的访问
  • 在 Jade 视图中使用 javascript 代码 - if(variable) 显示未定义而不是传递

    所以这是一个反复出现的问题 我还没有找到另一个例子 所以这里是 渲染 Jade 模板时我得到 variableName undefined即使在使用时 if variableName 在模板中 示例 我使用它作为 信息 闪存消息的一部分 i
  • 具有不同 ID 的列的总和?

    我有一个包含多个 ID 的表 需要一个查询来返回每个 ID 的列之和 Calls 表看起来像这样 EmployeeID TypeOfCall InvoiceAmount John NC 50 john NC 100 Joe NC 76 Jo
  • 如何创建我自己的 shell 来替换 e4 RCP 中 MTrimmedWindow 中创建的 shell?

    有没有办法用用户定义的窗口替换 Eclipse RCP 为 MTrimmedWindow 生成的 shell Eclipse 创建一个具有特定样式类型的 shell 该样式类型只能在创建时提供 我想从为 MTrimmedWindow 创建的