package org.ovirt.engine.ui.webadmin.widget.host;
import java.util.Arrays;
import java.util.Set;
import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
import org.ovirt.engine.ui.webadmin.ApplicationResources;
import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
public class InterfaceLabel extends Composite {
private static final ApplicationTemplates templates = AssetProvider.getTemplates();
private static final ApplicationResources resources = AssetProvider.getResources();
private static final SafeHtml labelImage =
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.tagImage()).getHTML());
private final HTML label;
private WidgetTooltip tooltip;
public InterfaceLabel(VdsNetworkInterface iface) {
label = createInterfaceLabel(iface);
initWidget(label);
}
private HTML createInterfaceLabel(VdsNetworkInterface iface) {
HTML label = null;
if (iface.getLabels() != null && !iface.getLabels().isEmpty()) {
label = new HTML(templates.textImageLabels(iface.getName(), labelImage));
}
else {
label = new HTML(iface.getName());
}
tooltip = new WidgetTooltip(label);
tooltip.setHtml(getTooltip(iface.getLabels()));
return label;
}
private SafeHtml getTooltip(Set<String> labels) {
SafeHtmlBuilder tooltip = new SafeHtmlBuilder();
boolean isFirst = true;
if (labels == null) {
return null;
}
String[] sortedLabels = labels.toArray(new String[] {});
Arrays.sort(sortedLabels, new LexoNumericComparator());
for (String label : sortedLabels) {
if (isFirst) {
isFirst = false;
} else {
tooltip = tooltip.appendHtmlConstant("<BR>"); //$NON-NLS-1$
}
tooltip = tooltip.appendEscaped(label);
}
return tooltip.toSafeHtml();
}
}