package org.ovirt.engine.ui.webadmin.section.main.presenter.popup;
import org.ovirt.engine.ui.common.presenter.AbstractTabbedModelBoundPopupPresenterWidget;
import org.ovirt.engine.ui.common.widget.UiCommandButton;
import org.ovirt.engine.ui.uicommonweb.models.HasValidatedTabs;
import org.ovirt.engine.ui.uicommonweb.models.datacenters.NetworkModel;
import com.google.gwt.event.shared.EventBus;
public class AbstractNetworkPopupPresenterWidget<T extends NetworkModel & HasValidatedTabs,
V extends AbstractNetworkPopupPresenterWidget.ViewDef<T>>
extends AbstractTabbedModelBoundPopupPresenterWidget<T, V> {
public interface ViewDef<T extends NetworkModel> extends AbstractTabbedModelBoundPopupPresenterWidget.ViewDef<T> {
void setMessageLabel(String label);
void updateVisibility();
void toggleSubnetVisibility(boolean visible);
void toggleProfilesVisibility(boolean visible);
UiCommandButton getQosButton();
void addMtuEditor();
}
public AbstractNetworkPopupPresenterWidget(EventBus eventBus, V view) {
super(eventBus, view);
}
@Override
public void init(final T model) {
// Let the parent do its work
super.init(model);
// Listen to Properties
model.getPropertyChangedEvent().addListener((ev, sender, args) -> {
NetworkModel senderModel = (NetworkModel) sender;
String propertyName = args.propertyName;
if ("Message".equals(propertyName)) { //$NON-NLS-1$
getView().setMessageLabel(senderModel.getMessage());
}
});
getView().toggleSubnetVisibility(model.getExport().getEntity());
model.getExport().getEntityChangedEvent().addListener((ev, sender, args) ->
getView().toggleSubnetVisibility(model.getExport().getEntity()));
getView().toggleProfilesVisibility(model.getProfiles().getIsAvailable());
model.getProfiles().getPropertyChangedEvent().addListener((ev, sender, args) -> {
if ("IsAvailable".equals(args.propertyName)) { //$NON-NLS-1$
getView().toggleProfilesVisibility(model.getProfiles().getIsAvailable());
}
});
getView().getQosButton().setCommand(model.getAddQosCommand());
getView().getQosButton().addClickHandler(event -> getView().getQosButton().getCommand().execute());
getView().addMtuEditor();
}
@Override
protected void onReveal() {
super.onReveal();
getView().updateVisibility();
}
}