package org.ovirt.engine.ui.common.widget.table.header; import java.util.HashSet; import java.util.Set; import org.ovirt.engine.ui.common.widget.table.cell.SafeHtmlCell; import org.ovirt.engine.ui.common.widget.table.column.ColumnWithElementId; import org.ovirt.engine.ui.common.widget.tooltip.ProvidesTooltip; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlUtils; /** * A Header that renders SafeHtml. Supports tooltips. Supports element-id framework. */ public class SafeHtmlHeader extends AbstractHeader<SafeHtml> implements ColumnWithElementId, ProvidesTooltip { private SafeHtml headerText; private SafeHtml tooltipText; public SafeHtmlHeader(SafeHtmlCell safeHtmlCell) { this(null, null, safeHtmlCell); } public SafeHtmlHeader(SafeHtml headerText) { this(headerText, createSafeHtmlCell()); } public SafeHtmlHeader(SafeHtml headerText, SafeHtmlCell safeHtmlCell) { this(headerText, null, safeHtmlCell); } public SafeHtmlHeader(SafeHtml headerText, SafeHtml tooltipText) { this(headerText, tooltipText, createSafeHtmlCell()); } public SafeHtmlHeader(SafeHtml headerText, SafeHtml tooltipText, SafeHtmlCell safeHtmlCell) { super(safeHtmlCell); setValue(headerText); setTooltip(tooltipText); } public static SafeHtmlCell createSafeHtmlCell() { return new SafeHtmlCell() { @Override public Set<String> getConsumedEvents() { Set<String> set = new HashSet<>(super.getConsumedEvents()); set.add(BrowserEvents.CLICK); // for sorting set.add(BrowserEvents.CONTEXTMENU); // for column context menu return set; } }; } public static SafeHtmlHeader fromSafeConstant(String headerText) { return new SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant(headerText)); } @Override public SafeHtmlCell getCell() { return (SafeHtmlCell) super.getCell(); } @Override public SafeHtml getTooltip() { return tooltipText; } /** * Return the SafeHtml to be rendered. * @see com.google.gwt.user.cellview.client.Header#getValue() */ @Override public SafeHtml getValue() { return headerText; } protected void setValue(SafeHtml headerText) { this.headerText = headerText; } protected void setTooltip(SafeHtml tooltipText) { this.tooltipText = tooltipText; } }