package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider;
import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
import org.ovirt.engine.ui.common.widget.HasUiCommandClickHandlers;
import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderModel;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
public class ProviderPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<ProviderModel, ProviderPopupPresenterWidget.ViewDef> {
private static final String IS_AVAILABLE = "IsAvailable"; //$NON-NLS-1$
public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<ProviderModel> {
HasUiCommandClickHandlers getTestButton();
void setTestResultImage(String errorMessage);
void setAgentTabVisibility(boolean visible);
void setCurrentActiveProviderWidget();
}
@Inject
public ProviderPopupPresenterWidget(EventBus eventBus, ViewDef view) {
super(eventBus, view);
}
@Override
public void init(final ProviderModel model) {
super.init(model);
registerHandler(getView().getTestButton().addClickHandler(event -> model.getTestCommand().execute()));
model.getTestResult().getEntityChangedEvent().addListener((ev, sender, args) ->
getView().setTestResultImage(model.getTestResult().getEntity()));
model.getNeutronAgentModel()
.isPluginConfigurationAvailable()
.getEntityChangedEvent()
.addListener((ev, sender, args) -> getView().setAgentTabVisibility(model.getNeutronAgentModel()
.isPluginConfigurationAvailable()
.getEntity()));
model.getDataCenter().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if (IS_AVAILABLE.equals(args.propertyName)) {
getView().setCurrentActiveProviderWidget();
}
});
model.getKvmPropertiesModel().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if (IS_AVAILABLE.equals(args.propertyName)) {
getView().setCurrentActiveProviderWidget();
}
});
model.getVmwarePropertiesModel().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if (IS_AVAILABLE.equals(args.propertyName)) {
getView().setCurrentActiveProviderWidget();
}
});
model.getXenPropertiesModel().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if (IS_AVAILABLE.equals(args.propertyName)) {
getView().setCurrentActiveProviderWidget();
}
});
}
}