package org.ovirt.engine.ui.common.widget.action;
import org.gwtbootstrap3.client.ui.constants.Placement;
import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ToggleButton;
/**
* Base class used to implement action button widgets.
* <p>
* Subclasses are free to style the UI, given that they declare:
* <ul>
* <li>{@link #button} widget representing the action button
* </ul>
*/
public abstract class AbstractActionButton extends Composite implements ActionButton {
@UiField
public ToggleButton button;
@UiField
public WidgetTooltip buttonTooltip;
@Override
public void setEnabledHtml(SafeHtml html) {
button.getUpFace().setHTML(html);
}
@Override
public void setDisabledHtml(SafeHtml html) {
button.getUpDisabledFace().setHTML(html);
button.getDownDisabledFace().setHTML(html);
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return button.addClickHandler(handler);
}
@Override
public boolean isEnabled() {
return button.isEnabled();
}
@Override
public void setEnabled(boolean enabled) {
button.setEnabled(enabled);
}
@Override
public void setTooltip(SafeHtml tooltip) {
buttonTooltip.setHtml(tooltip);
}
@Override
public void setTooltip(SafeHtml tooltip, Placement placement) {
buttonTooltip.setHtml(tooltip);
buttonTooltip.setPlacement(placement);
}
@Override
public ToggleButton asToggleButton() {
return button;
}
}