package org.ovirt.engine.ui.webadmin.widget.provider; import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties.BrokerType; 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.EntityModelWidgetWithInfo; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelPasswordBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxOnlyEditor; import org.ovirt.engine.ui.common.widget.label.EnableableFormLabel; 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.NeutronAgentModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationTemplates; 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 NeutronAgentWidget extends AbstractModelBoundPopupWidget<NeutronAgentModel> { interface Driver extends UiCommonEditorDriver<NeutronAgentModel, NeutronAgentWidget> { } private final Driver driver = GWT.create(Driver.class); interface ViewUiBinder extends UiBinder<FlowPanel, NeutronAgentWidget> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } interface ViewIdHandler extends ElementIdHandler<NeutronAgentWidget> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } private static final ApplicationTemplates templates = AssetProvider.getTemplates(); private static final ApplicationConstants constants = AssetProvider.getConstants(); @UiField(provided = true) EntityModelWidgetWithInfo mappings; @Path(value = "interfaceMappingsLabel.entity") @WithElementId("interfaceMappingsLabel") EnableableFormLabel mappingsLabel; @Path(value = "interfaceMappings.entity") @WithElementId("interfaceMappings") StringEntityModelTextBoxOnlyEditor interfaceMappings; @UiField(provided = true) @Path("brokerType.selectedItem") @WithElementId("brokerType") ListModelListBoxEditor<BrokerType> brokerTypeEditor; @UiField @Path(value = "messagingServer.entity") @WithElementId("messagingServer") StringEntityModelTextBoxEditor messagingServer; @UiField @Path(value = "messagingServerPort.entity") @WithElementId("messagingServerPort") StringEntityModelTextBoxEditor messagingServerPort; @UiField @Path(value = "messagingServerUsername.entity") @WithElementId("messagingServerUsername") StringEntityModelTextBoxEditor messagingServerUsername; @UiField @Path(value = "messagingServerPassword.entity") @WithElementId("messagingServerPassword") StringEntityModelPasswordBoxEditor messagingServerPassword; @Inject public NeutronAgentWidget() { brokerTypeEditor = new ListModelListBoxEditor<>(new EnumRenderer<BrokerType>()); mappingsLabel = new EnableableFormLabel(); interfaceMappings = new StringEntityModelTextBoxOnlyEditor(); mappings = new EntityModelWidgetWithInfo(mappingsLabel, interfaceMappings); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); ViewIdHandler.idHandler.generateAndSetIds(this); brokerTypeEditor.setLabel(constants.messagingBrokerType()); messagingServer.setLabel(constants.messagingServer()); messagingServerPort.setLabel(constants.messagingServerPort()); messagingServerUsername.setLabel(constants.messagingServerUsername()); messagingServerPassword.setLabel(constants.messagingServerPassword()); driver.initialize(this); } @Override public void edit(final NeutronAgentModel model) { driver.edit(model); mappings.setExplanation(templates.italicText(model.getInterfaceMappingsExplanation().getEntity())); model.getInterfaceMappingsExplanation().getEntityChangedEvent().addListener((ev, sender, args) -> mappings.setExplanation(templates.italicText(model.getInterfaceMappingsExplanation() .getEntity()))); } @Override public NeutronAgentModel flush() { return driver.flush(); } @Override public void cleanup() { driver.cleanup(); } }