package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host;
import org.ovirt.engine.ui.common.presenter.AbstractTabbedModelBoundPopupPresenterWidget;
import org.ovirt.engine.ui.uicommonweb.models.hosts.HostModel;
import org.ovirt.engine.ui.webadmin.section.main.view.popup.host.HostPopupView;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
public class HostPopupPresenterWidget extends AbstractTabbedModelBoundPopupPresenterWidget<HostModel, HostPopupPresenterWidget.ViewDef> {
public interface ViewDef extends AbstractTabbedModelBoundPopupPresenterWidget.ViewDef<HostModel> {
HasClickHandlers getUpdateHostsButton();
/**
* Switch to the power management tab.
*/
void showPowerManagement();
void setHostProviderVisibility(boolean visible);
HasClickHandlers getKernelCmdlineResetButton();
}
@Inject
public HostPopupPresenterWidget(EventBus eventBus, ViewDef view) {
super(eventBus, view);
}
@Override
public void init(final HostModel model) {
super.init(model);
addUpdateHostsListener(model);
addPowerManagementListener(model);
addHostProviderListener(model);
addRadioButtonsListeners(model);
addKernelCmdlineResetListener(model);
}
private void addKernelCmdlineResetListener(final HostModel model) {
registerHandler(getView().getKernelCmdlineResetButton().addClickHandler(event -> model.resetKernelCmdline()));
}
private void addRadioButtonsListeners(final HostModel model) {
registerHandler(
((HostPopupView)getView()).rbDiscoveredHost.asRadioButton().addClickHandler(event -> {
if (((HostPopupView)getView()).rbDiscoveredHost.asRadioButton().getValue()) {
model.getIsDiscoveredHosts().setEntity(true);
}
}));
registerHandler(
((HostPopupView)getView()).rbProvisionedHost.asRadioButton().addClickHandler(event -> {
if (((HostPopupView)getView()).rbProvisionedHost.asRadioButton().getValue()) {
model.getIsDiscoveredHosts().setEntity(false);
}
}));
}
private void addPowerManagementListener(final HostModel model) {
model.getPropertyChangedEvent().addListener((ev, sender, args) -> {
String propName = args.propertyName;
if (!"IsPowerManagementTabSelected".equals(propName)) { //$NON-NLS-1$
return;
}
if (model.getIsPowerManagementTabSelected()) {
getView().showPowerManagement();
}
});
}
private void addUpdateHostsListener(final HostModel model) {
registerHandler(getView().getUpdateHostsButton().addClickHandler(event -> model.getUpdateHostsCommand().execute()));
}
private void addHostProviderListener(final HostModel model) {
model.getProviderSearchFilter().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if ("IsAvailable".equals(args.propertyName)) { //$NON-NLS-1$
getView().setHostProviderVisibility(model.getProviderSearchFilter().getIsAvailable());
}
});
}
}