Eclipse 4 RCP应用程序支持浮动编辑器窗口。
使用兼容层,我将一组RCP应用程序从Eclipse 3.8移植到Eclipse 4.4。这些应用程序不是为浮动编辑器设计的。我想将重新设计的成本推迟到以后。
评论40中的Eclipse enhancement request for floating editor windows提到了控制编辑窗口政策的可取性:
在e4中,我们理想情况下能够“主持”当前编辑器或布局中任何位置的视图。选择将其位置限制在编辑区域应该通过一些“政策”来强制执行。
请注意,实际上并非如此简单,主要是由于编辑器处理菜单/ TB的方式存在根本差异(即托管编辑器的任何地方都需要 - 托管编辑器工具的“主要”工具栏。< / p>
问题:
答案 0 :(得分:2)
我有一个解决方案,但它并不漂亮,并且有一些问题。
此解决方案需要复制Eclipse DnDAddon的整个包,并在DetachedDropAgent中进行小的更改。 (在@greg-449的初步评论和一些初步研究之后,我曾希望将DndAddon替换为我自己安装了DnDManager子类的类。但是,DnDManager和其他关键类都是受包保护的。)
这个工作思路来自Eclipse e4的开发负责人Eric Moffat,以回应我的增强请求Disabling floating editors。他在那里列出了另外两个选项,其中一个类似于@ christoph.keimel的选项 a 。
以下是一些细节。这至少适用于Eclipse 4.4。
首先,您需要一个应用程序模型文件。如果您还没有,请从Eclipse插件 org.eclipse.ui.workbench * .jar 中提取文件LegacyIDE.e4xmi
。使用新名称将其复制到您自己的插件(在此示例中为 myApp.e4xmi )。然后通过向应用程序的plugin.xml文件中的产品扩展添加属性applicationXMI
来使用它。
<extension id="product" point="org.eclipse.core.runtime.products"> <product application="com.mycompany.myapp" name="MyApplicationName"> ... <property name="applicationXMI" value="com.my.plugin/myApp.e4xmi"> </property> </product> </extension>
接下来,将整个包org.eclipse.e4.ui.workbench.addons.dndaddon
从插件 org.eclipse.e4.ui.workbench.addons.swt * .jar 复制到您自己的包{{1}中}。
该包名称的后缀很重要。同样重要的是不要更改加载项*.ui.workbench.addons.dndaddon
的名称。如果你改变了,你会发现标准的DnDAddOn除了你修改过的版本之外还会被添加,感谢DnDAddon
,编辑器可能仍然会被浮动。
接下来,在 myApp.e4xmi 中,修改“DnD Addon”行以指向您的版本。 contribURI包含包含您的DnDAddon版本的插件的名称,以及它的类路径。例如:
&lt; addons xmi:id =“_ bqcWME2EEd-DfN2vYY4Lew”elementId =“DnD Addon” contributionURI = “bundleclass://com.one.of.my.plugins/com.mypackage.e4.ui.workbench.addons.dndaddon.DnDAddon”/&GT;
最后,在DetachedDropAgent类中,修改canDrop()方法以使兼容性编辑器失败。 (我在下面写了添加的代码。)
org.eclipse.e4.ui.workbench.addons.swt.DnDProcessor