gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:37:30 25 4
gpt4 key购买 nike

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

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

最佳答案

shell 的样式在创建后无法更改, shell 本身在渲​​染器创建后无法更改。但情况并非没有希望。

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

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

默认值:由 WBWRenderer 创建 shell

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

WBWRenderer#createWidget , shell 的创建样式为 SWT.SHELL_TRIM ,这是 SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE 的便利样式:

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

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

新渲染器创建 shell

为了解决上述限制,您可以提供不同的渲染器,使用 WBWRenderer 作为模板。这允许您更改 shell 创建的代码,例如
wbwShell = new Shell(Display.getCurrent(), SWT.CLOSE | SWT.TITLE |
SWT.MIN | rtlStyle);

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

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

可以找到如何编写和注册 WorkbenchRendererFactory 的示例 here .

更好的解决方案?

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

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

关于eclipse-plugin - 如何创建我自己的shell来替换e4 RCP中MTrimmedWindow中创建的shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com