package org.ovirt.engine.ui.common.widget.table.header; import org.ovirt.engine.ui.common.widget.table.NativeContextMenuHandler; import org.ovirt.engine.ui.common.widget.table.cell.Cell; import org.ovirt.engine.ui.common.widget.table.column.ColumnWithElementId; import org.ovirt.engine.ui.common.widget.tooltip.ProvidesTooltip; import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.cellview.client.Header; /** * A {@link Header}. Supports tooltips. Supports element-id framework. * <em>All oVirt table headers should extend this.</em> * * @param <H> Cell data type. */ public abstract class AbstractHeader<H> extends Header<H> implements ColumnWithElementId, ProvidesTooltip { private NativeContextMenuHandler contextMenuHandler; public AbstractHeader(Cell<H> cell) { super(cell); } @Override public Cell<H> getCell() { return (Cell<H>) super.getCell(); } /** * Override to inject the tooltip content into the cell. */ @Override public void onBrowserEvent(Context context, Element elem, NativeEvent event) { super.onBrowserEvent(context, elem, event); if (BrowserEvents.CONTEXTMENU.equals(event.getType()) && contextMenuHandler != null) { contextMenuHandler.onContextMenu(event); } } @Override public void configureElementId(String elementIdPrefix, String columnId) { getCell().setElementIdPrefix(elementIdPrefix); getCell().setColumnId(columnId); } public void setContextMenuHandler(NativeContextMenuHandler contextMenuHandler) { this.contextMenuHandler = contextMenuHandler; } }