我正在维护一些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的方法(特别是ITrimManager
和getAreaTrim()
),所以没有任何东西被添加到工作台窗口的修剪中。我很清楚这段代码依赖于自Indigo以来已经发生变化的未记录的内部API,所以我的问题是是否有更好的方法在Eclipse的工作台窗口底部添加自定义修剪?如果不这样做,是否会有另一种方法将通知图像和标签添加到窗口中,使其在所有视角中保持持久性,基本上等同于旧代码?
答案 0 :(得分:0)
你发现这些内部课程不再做任何事情了。
要添加到窗口,您可能需要编辑Eclipse 4应用程序模型。对于现有的Eclipse,这是LegacyIDE.e4xmi
插件中的org.eclipse.platform
文件。
有关编辑应用程序模型的详细信息,请参阅Eclipse 4 RCP。