GWT CellTable标头和正文的不同ContextMenus

时间:2018-06-01 07:33:40

标签: gwt contextmenu gwt-celltable

我一直在浏览Stackoverflow一小时,我找不到答案,这正是我需要的。

目前我们正在使用CellTable来显示一些数据。当然,表格的第一行是标题。右键单击此表的任何位置时,将打开上下文菜单。我的客户现在希望在此上下文菜单中有一些其他选项,但仅在单击标题时。我目前仍在努力弄清楚右键是否来自标题或表格主体。

if ( contextMenu == null )
        {
            contextMenu = new ContextMenu();

            table.sinkEvents(Event.ONCONTEXTMENU);
            table.addHandler(new ContextMenuHandler()
            {

                @Override
                public void onContextMenu(ContextMenuEvent event)
                {
                    //here I'd like to check if the clicked row index == 0 and display a different context menu
                    event.preventDefault();
                    event.stopPropagation();
                    contextMenu.setPopupPosition(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY());
                    contextMenu.setAutoHideEnabled(true);
                    contextMenu.show();
                }
            }, ContextMenuEvent.getType());
        }

1 个答案:

答案 0 :(得分:0)

使用HeaderBuilder的{​​{3}}方法:

public void onContextMenu(ContextMenuEvent event) {

    // ...

    EventTarget eventTarget = event.getNativeEvent().getEventTarget();
    Element element = eventTarget.cast();
    if(table.getHeaderBuilder().isHeader(element))
        // display context menu for header
    else
        // display context menu for body
}