package org.ovirt.engine.ui.common.widget; import org.gwtbootstrap3.client.ui.Anchor; import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip; import com.google.gwt.core.client.GWT; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Focusable; import com.google.gwt.user.client.ui.Widget; public class UiCommandLink extends AbstractUiCommandButton implements Focusable { interface WidgetUiBinder extends UiBinder<Widget, UiCommandLink> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } @UiField Anchor anchor; @UiField WidgetTooltip tooltip; public UiCommandLink() { initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); } public UiCommandLink(String label) { setLabel(label); } @Override public int getTabIndex() { return anchor.getTabIndex(); } @Override public void setAccessKey(char key) { anchor.setAccessKey(key); } @Override public void setFocus(boolean focused) { anchor.setFocus(focused); } @Override public void setTabIndex(int index) { anchor.setTabIndex(index); } @Override public int setTabIndexes(int nextTabIndex) { setTabIndex(nextTabIndex++); return nextTabIndex; } @Override protected void updateButton() { super.updateButton(); tooltip.setHtml(buildTooltipHtml()); } /** * Use prohibition reasons for tooltip */ protected SafeHtml buildTooltipHtml() { SafeHtmlBuilder tooltipText = new SafeHtmlBuilder(); if (!getCommand().getExecuteProhibitionReasons().isEmpty()) { for (String reason: getCommand().getExecuteProhibitionReasons()) { if (tooltipText.toSafeHtml().asString().length() != 0) { tooltipText.appendHtmlConstant("<br/><br/>"); //$NON-NLS-1$ } tooltipText.appendEscaped(reason); } } return tooltipText.toSafeHtml(); } @Override protected Widget getButtonWidget() { return anchor; } }