Eclipse 4 RCP应用程序支持浮动编辑器窗口.
使用兼容层,我将一组RCP应用程序从Eclipse 3.8移植到Eclipse 4.4.这些应用程序不是为浮动编辑器设计的.我想将重新设计的成本推迟到以后.
注释40中的浮动编辑器窗口的Eclipse增强请求提到了控制编辑器窗口策略的可取性:
在e4中,我们理想地能够"托管"当前编辑器或布局中任何位置的视图.选择将其位置限制在编辑区域应该通过一些"政策"来强制执行.
请注意,实际上并非如此简单,主要是由于编辑器处理菜单/ TB的方式根本不同(即托管编辑器的任何地方都需要 - 托管编辑器工具的"主要"工具栏.
问题:
我有一个解决方案,但它并不漂亮,而且有一些问题。
此解决方案需要复制 Eclipse DnDAddon 的整个包,并在 DetachedDropAgent 中进行少量更改。(在 @greg-449 的最初评论和一些初步研究之后,我希望用我自己的安装了 DnDManager 子类的类替换 DndAddon。但是,DnDManager 和其他关键类是受包保护的。)
这个工作想法来自 Eclipse e4 的开发主管 Eric Moffat,响应我的增强请求禁用浮动编辑器。他在那里列出了另外两个选项,其中之一类似于 @christoph.keimel 的选项a。
以下是一些细节。这至少适用于 Eclipse 4.4。
首先,您需要一个应用程序模型文件。如果您还没有该文件,请LegacyIDE.e4xmi从 Eclipse 插件org.eclipse.ui.workbench*.jar中提取该文件。使用新名称将其复制到您自己的插件(在本例中为myApp.e4xmi)。applicationXMI然后通过向应用程序的plugin.xml 文件中的产品扩展添加属性来使用它。
<扩展名
id=“产品”
点=“org.eclipse.core.runtime.products”>
<产品
应用程序=“com.mycompany.myapp”
名称=“我的应用程序名称”>
...
<属性
名称=“应用程序XMI”
值=“com.my.plugin/myApp.e4xmi”>
</属性>
</产品>
</扩展名>
org.eclipse.e4.ui.workbench.addons.dndaddon接下来,将插件org.eclipse.e4.ui.workbench.addons.swt*.jar中的整个包复制到您自己的包中*.ui.workbench.addons.dndaddon。
该包名称的后缀很重要。不要更改附加类的名称也很重要DnDAddon。如果您更改其中任何一个,您会发现除了您修改过的 DnDAddOn 之外,还添加了标准 DnDAddOn,这要归功于org.eclipse.e4.ui.workbench.addons.swt.DnDProcessor,并且编辑器可能仍然是浮动的。
接下来,在myApp.e4xmi中,修改“DnD Addon”行以指向您的版本。tributionURI 包括包含您的 DnDAddon 版本的插件的名称及其类路径。例如:
<addons xmi:id="_bqcWME2EEd-DfN2vYY4Lew" elementId="DnD Addon"tributionURI="bundleclass://com.one.of.my.plugins/com.mypackage.e4.ui.workbench.addons.dnaddon.DnDAddon" />
最后,在 DetachedDropAgent 类中,修改 canDrop() 方法,使其对于兼容性编辑器失败。(我在下面编写了添加的代码。)
public class DetachedDropAgent extends DropAgent {
...
@Override
public boolean canDrop(MUIElement dragElement, DnDInfo info) {
if (info.curElement != null)
return false;
// Add this code to disable floating of editors using the compatibility layer.
String elementId = dragElement.getElementId();
if ( "org.eclipse.e4.ui.compatibility.editor".equals( elementId )) {
return false;
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |