package org.ovirt.engine.ui.webadmin.widget;
import org.ovirt.engine.core.compat.Event;
import org.ovirt.engine.core.compat.EventArgs;
import org.ovirt.engine.core.compat.IEventListener;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.webadmin.widget.dialog.SimpleDialogButton;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class UiCommandButton extends Composite implements HasUiCommandClickHandlers, HasLabel {
interface WidgetUiBinder extends UiBinder<Widget, UiCommandButton> {
WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
}
private UICommand command;
@UiField
SimpleDialogButton button;
public UiCommandButton() {
initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
}
public UiCommandButton(String label) {
this();
setLabel(label);
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return button.addClickHandler(handler);
}
@Override
public UICommand getCommand() {
return command;
}
@Override
public void setCommand(UICommand command) {
this.command = command;
command.getPropertyChangedEvent().addListener(new IEventListener() {
@Override
public void eventRaised(Event ev, Object sender, EventArgs args) {
updateButton();
}
});
updateButton();
}
@Override
public String getLabel() {
return button.getText();
}
@Override
public void setLabel(String label) {
button.setText(label);
}
void updateButton() {
button.setVisible(command.getIsAvailable());
button.setEnabled(command.getIsExecutionAllowed());
}
}