在Eclipse工作台窗口中添加自定义修剪在Kepler 4.3中不起作用

时间:2014-08-11 13:42:06

标签: java eclipse

我正在维护一些Eclipse插件的预先存在的代码,该插件构成了一个更大的项目的一部分。此代码应该通过使用名为NotificationTrim的自定义修剪在右下角的Eclipse工作台窗口中显示通知的图标。该代码在Indigo中完美运行,但在Kepler中它不再起作用,并且图标永远不会出现。代码如下,通知处理程序调用{​​{1}}:

createTrim()

据我所知,调用private NotificationTrim createTrim() { IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows(); if (windows == null || windows.length < 1) { return null; } IWorkbenchWindow main = windows[0]; if (!(main instanceof WorkbenchWindow)) { return null; } WorkbenchWindow window = (WorkbenchWindow)main; ITrimManager manager = window.getTrimManager(); if (manager.getTrim(getClass().getName()) == null) { int height = getBottomTrimHeight(manager); trim = new NotificationTrim(main.getShell(), height); manager.addTrim(ITrimManager.BOTTOM, trim); manager.forceLayout(); return trim; } return null; } private int getBottomTrimHeight (ITrimManager manager) { List<IWindowTrim> items = manager.getAreaTrim(SWT.BOTTOM); int height = -1; if (items != null) { for (IWindowTrim item : items) { int itemHeight = item.getControl().getSize().y; if (itemHeight > height) { height = itemHeight; } } } return height; } 会返回一个准系统window.getTrimManager(),它不执行任何ITrimManager的方法(特别是ITrimManagergetAreaTrim()),所以没有任何东西被添加到工作台窗口的修剪中。我很清楚这段代码依赖于自Indigo以来已经发生变化的未记录的内部API,所以我的问题是是否有更好的方法在Eclipse的工作台窗口底部添加自定义修剪?如果不这样做,是否会有另一种方法将通知图像和标签添加到窗口中,使其在所有视角中保持持久性,基本上等同于旧代码?

1 个答案:

答案 0 :(得分:0)

你发现这些内部课程不再做任何事情了。

要添加到窗口,您可能需要编辑Eclipse 4应用程序模型。对于现有的Eclipse,这是LegacyIDE.e4xmi插件中的org.eclipse.platform文件。

有关编辑应用程序模型的详细信息,请参阅Eclipse 4 RCP