package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster;
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.core.compat.PropertyChangedEventArgs;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkModel;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AbstractModelBoundPopupPresenterWidget;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
public class ClusterNewNetworkPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<ClusterNetworkModel, ClusterNewNetworkPopupPresenterWidget.ViewDef> {
public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<ClusterNetworkModel> {
/**
* Set the name of the data center.
*
* @param name the name of the data center that should
* be displayed in the notes area
*/
void setDataCenterName(String name);
/**
* Tell the view to enable/disable the text box for the VLAN tag.
*
* @param flag <code>true</code> to enable, <code>false</code> to
* disable
*/
void setVLanTagEnabled (boolean flag);
}
@Inject
public ClusterNewNetworkPopupPresenterWidget(EventBus eventBus, ViewDef view) {
super(eventBus, view);
}
@Override
public void init(final ClusterNetworkModel model) {
// Let the parent do its work:
super.init(model);
// Set the enabled/disabled status of the VLAN tag field according
// to the initial value in the model:
Boolean hasVLanTagValue = (Boolean) model.getHasVLanTag().getEntity();
getView().setVLanTagEnabled(hasVLanTagValue);
// Listen for changes in the VLAN enable/disable status in order
// to enable/disable the VLAN tag field accordingly:
model.getHasVLanTag().getEntityChangedEvent().addListener(
new IEventListener() {
public void eventRaised(Event ev, Object sender, EventArgs args) {
EntityModel hasVLanTagEntity = (EntityModel) sender;
Boolean hasVLanTagValue = (Boolean) hasVLanTagEntity.getEntity();
getView().setVLanTagEnabled(hasVLanTagValue);
}
}
);
// Listen for changes in the properties of the model in order
// to update the view accordingly:
model.getPropertyChangedEvent().addListener(
new IEventListener() {
public void eventRaised(Event ev, Object sender, EventArgs args) {
if (args instanceof PropertyChangedEventArgs) {
PropertyChangedEventArgs changedArgs = (PropertyChangedEventArgs) args;
if ("DataCenterName".equals(changedArgs.PropertyName)) {
getView().setDataCenterName(model.getDataCenterName());
}
}
}
}
);
}
}