[英]Adding custom trim to Eclipse workbench window does not work in Kepler 4.3
我正在維護Eclipse插件的一些現有代碼,該Eclipse插件是較大項目的一部分。 該代碼應該通過使用名為NotificationTrim
的自定義修飾在右下角的Eclipse工作台窗口中顯示通知圖標。 該代碼在Indigo中可完美運行,但在開普勒中不再起作用,該圖標也永遠不會出現。 代碼如下,通知處理程序將調用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()
和addTrim()
)的實現均不執行任何操作,因此不會在工作台窗口的裝飾中添加任何內容。 我很清楚,這段代碼依賴於自Indigo以來發生變化的未公開文檔的內部API,所以我的問題是是否存在一種更好的向Eclipse工作台窗口底部添加自定義修飾的方法? 如果不這樣做,是否會有另一種方法將通知圖像和標簽添加到窗口,以使其在所有角度上都保持不變,基本上等同於舊代碼?
正如您發現的那樣,這些內部類不再起作用。
要添加到窗口中,您可能需要編輯Eclipse 4應用程序模型。 對於現有的Eclipse,這是org.eclipse.platform
插件中的LegacyIDE.e4xmi
文件。
有關編輯應用程序模型的更多詳細信息,請參見Eclipse 4 RCP 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.