package org.ovirt.engine.ui.common.widget; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.constants.IconType; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogButton; 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.HasEnabled; import com.google.gwt.user.client.ui.Widget; public class UiCommandButton extends AbstractUiCommandButton implements Focusable, HasEnabled { interface WidgetUiBinder extends UiBinder<Widget, UiCommandButton> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } @UiField SimpleDialogButton button; @UiField WidgetTooltip tooltip; public UiCommandButton() { initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); } public UiCommandButton(String label) { this(label, null); } public UiCommandButton(IconType iconType) { this("", iconType); //$NON-NLS-1$ } public UiCommandButton(String label, IconType iconType) { this(); setLabel(label); getButtonWidget().setIcon(iconType); } @Override protected Button getButtonWidget() { return button; } public void setIcon(IconType iconType) { button.setIcon(iconType); } public void setCustomContentStyle(String customStyle) { button.setCustomContentStyle(customStyle); } @Override public int getTabIndex() { return getButtonWidget().getTabIndex(); } @Override public void setAccessKey(char key) { getButtonWidget().setAccessKey(key); } @Override public void setFocus(boolean focused) { getButtonWidget().setFocus(focused); } @Override public void setTabIndex(int index) { getButtonWidget().setTabIndex(index); } @Override public int setTabIndexes(int nextTabIndex) { setTabIndex(nextTabIndex++); return nextTabIndex; } @Override public void setEnabled(boolean enabled) { getButtonWidget().setEnabled(enabled); } @Override public boolean isEnabled() { return getButtonWidget().isEnabled(); } @Override protected void updateButton() { super.updateButton(); tooltip.setHtml(buildTooltipHtml()); } public void setAsPrimary() { button.setAsPrimary(); } /** * 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(); } }