簡體   English   中英

在Kepler 4.3中,無法向Eclipse工作台窗口添加自定義修剪

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM