package org.ovirt.engine.ui.webadmin.widget.host; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.constants.IconType; import org.ovirt.engine.ui.common.css.OvirtCss; import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver; import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget; import org.ovirt.engine.ui.uicommonweb.models.hosts.FenceProxyModel; import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.HasValueChangeHandlers; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; 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.HasEnabled; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class HostProxySourceWidget extends AbstractModelBoundPopupWidget<FenceProxyModel> implements HasValueChangeHandlers<FenceProxyModel>, HasEnabled { interface Driver extends UiCommonEditorDriver<FenceProxyModel, HostProxySourceWidget> { } public interface WidgetUiBinder extends UiBinder<Widget, HostProxySourceWidget> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } private final Driver driver = GWT.create(Driver.class); @UiField Button up; @UiField Button down; @UiField @Path(value = "entity.value") Label proxyLabel; @UiField @Ignore Label orderLabel; FenceProxyModel model; public HostProxySourceWidget() { initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); up.setIcon(IconType.ARROW_UP); down.setIcon(IconType.ARROW_DOWN); driver.initialize(this); } @Override public void edit(FenceProxyModel object) { driver.edit(object); this.model = object; } @Override public FenceProxyModel flush() { return driver.flush(); } @Override public void cleanup() { driver.cleanup(); } @Override public HandlerRegistration addValueChangeHandler(ValueChangeHandler<FenceProxyModel> handler) { return addHandler(handler, ValueChangeEvent.getType()); } @Override public void setEnabled(boolean enabled) { if (enabled) { orderLabel.removeStyleName(OvirtCss.LABEL_DISABLED); proxyLabel.removeStyleName(OvirtCss.LABEL_DISABLED); } else { orderLabel.addStyleName(OvirtCss.LABEL_DISABLED); proxyLabel.addStyleName(OvirtCss.LABEL_DISABLED); } } @Override public boolean isEnabled() { return up.isEnabled(); } public void setOrder(int order) { orderLabel.setText(String.valueOf(order)); } public void enableUpButton(boolean enable) { up.setEnabled(enable); } public void enableDownButton(boolean enable) { down.setEnabled(enable); } public void addUpClickHandler(ClickHandler handler) { up.addClickHandler(handler); } public void addDownClickHandler(ClickHandler handler) { down.addClickHandler(handler); } public FenceProxyModel getModel() { return model; } }