package org.ovirt.engine.ui.webadmin.widget.provider;
import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
import org.ovirt.engine.ui.common.idhandler.WithElementId;
import org.ovirt.engine.ui.common.widget.PatternFlyCompatible;
import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer;
import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget;
import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalSubnetModel;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.inject.Inject;
public class ExternalSubnetWidget extends AbstractModelBoundPopupWidget<ExternalSubnetModel> implements PatternFlyCompatible {
interface Driver extends UiCommonEditorDriver<ExternalSubnetModel, ExternalSubnetWidget> {
}
interface ViewUiBinder extends UiBinder<FlowPanel, ExternalSubnetWidget> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
interface ViewIdHandler extends ElementIdHandler<ExternalSubnetWidget> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
private static final ApplicationConstants constants = AssetProvider.getConstants();
@UiField
@Path("name.entity")
@WithElementId("name")
StringEntityModelTextBoxEditor nameEditor;
@UiField
@Path("cidr.entity")
@WithElementId("cidr")
StringEntityModelTextBoxEditor cidrEditor;
@UiField(provided = true)
@Path("ipVersion.selectedItem")
@WithElementId("ipVersion")
ListModelListBoxEditor<IpVersion> ipVersionEditor;
@UiField
@Path("gateway.entity")
@WithElementId("gateway")
StringEntityModelTextBoxEditor gatewayEditor;
@UiField
@Ignore
public DnsServersWidget dnsServersEditor;
private final Driver driver = GWT.create(Driver.class);
@Inject
public ExternalSubnetWidget() {
ipVersionEditor = new ListModelListBoxEditor<>(new EnumRenderer<IpVersion>());
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
localize();
ViewIdHandler.idHandler.generateAndSetIds(this);
driver.initialize(this);
}
private void localize() {
nameEditor.setLabel(constants.nameExternalSubnet());
cidrEditor.setLabel(constants.cidrExternalSubnet());
ipVersionEditor.setLabel(constants.ipVersionExternalSubnet());
gatewayEditor.setLabel(constants.gatewayExternalSubnet());
}
@Override
public void focusInput() {
nameEditor.setFocus(true);
}
@Override
public void edit(final ExternalSubnetModel subnet) {
driver.edit(subnet);
dnsServersEditor.edit(subnet.getDnsServers());
}
@Override
public ExternalSubnetModel flush() {
dnsServersEditor.flush();
return driver.flush();
}
@Override
public void cleanup() {
driver.cleanup();
}
@Override
public void setUsePatternFly(boolean use) {
dnsServersEditor.setUsePatternFly(use);
}
@Override
public int setTabIndexes(int nextTabIndex) {
nextTabIndex = nameEditor.setTabIndexes(nextTabIndex);
nextTabIndex = cidrEditor.setTabIndexes(nextTabIndex);
nextTabIndex = ipVersionEditor.setTabIndexes(nextTabIndex);
nextTabIndex = gatewayEditor.setTabIndexes(nextTabIndex);
nextTabIndex = dnsServersEditor.setTabIndexes(nextTabIndex);
return nextTabIndex;
}
}