Lior Vernia has uploaded a new change for review. Change subject: webadmin: Added connectivity test to provider popup ......................................................................
webadmin: Added connectivity test to provider popup Added test button to add/edit provider popup, when pressed a connectivity check is initiated and the user is informed whether the input URL works. Change-Id: Id0856c12d016c283a90c35622441fadc785c5d9c Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.ui.xml 5 files changed, 121 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/14920/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java index 4927732..65c170c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java @@ -30,6 +30,7 @@ public class ProviderModel extends Model { private static final String CMD_SAVE = "OnSave"; //$NON-NLS-1$ + private static final String CMD_TEST = "OnTest"; //$NON-NLS-1$ private static final String CMD_CANCEL = "Cancel"; //$NON-NLS-1$ private final SearchableListModel sourceListModel; @@ -43,6 +44,8 @@ private EntityModel privateRequiresAuthentication; private EntityModel privateUsername; private EntityModel privatePassword; + private UICommand privateTestCommand; + private EntityModel privateTestResult; public EntityModel getName() { return privateName; @@ -100,6 +103,22 @@ privatePassword = value; } + public UICommand getTestCommand() { + return privateTestCommand; + } + + private void setTestCommand(UICommand value) { + privateTestCommand = value; + } + + public EntityModel getTestResult() { + return privateTestResult; + } + + private void setTestResult(EntityModel value) { + privateTestResult = value; + } + public ProviderModel(SearchableListModel sourceListModel, VdcActionType action, Provider provider) { this.sourceListModel = sourceListModel; this.action = action; @@ -123,6 +142,7 @@ setUsername(new EntityModel(provider.getUsername())); setPassword(new EntityModel(provider.getPassword())); getRequiresAuthentication().setEntity(provider.isRequiringAuthentication()); + setTestResult(new EntityModel()); List<ProviderType> allTypes = Arrays.asList(ProviderType.values()); getType().setItems(allTypes); @@ -136,6 +156,7 @@ tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); tempVar2.setIsCancel(true); getCommands().add(tempVar2); + setTestCommand(new UICommand(CMD_TEST, this)); } private boolean validate() { @@ -159,11 +180,7 @@ sourceListModel.setWindow(null); } - private void onSave() { - if (!validate()) { - return; - } - + private void flush() { provider.setName((String) privateName.getEntity()); provider.setType((ProviderType) privateType.getSelectedItem()); provider.setDescription((String) privateDescription.getEntity()); @@ -171,7 +188,14 @@ provider.setRequiringAuthentication((Boolean) privateRequiresAuthentication.getEntity()); provider.setUsername((String) privateUsername.getEntity()); provider.setPassword((String) privatePassword.getEntity()); + } + private void onSave() { + if (!validate()) { + return; + } + + flush(); startProgress(null); Frontend.RunAction(action, new ProviderParameters(provider), new IFrontendActionAsyncCallback() { @@ -189,12 +213,30 @@ }); } + private void onTest() { + flush(); + startProgress(null); + Frontend.RunAction(VdcActionType.TestProviderConnectivity, + new ProviderParameters(provider), + new IFrontendActionAsyncCallback() { + + @Override + public void executed(FrontendActionAsyncResult result) { + stopProgress(); + VdcReturnValueBase res = result.getReturnValue(); + getTestResult().setEntity(res != null && res.getSucceeded()); + } + }); + } + @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (StringHelper.stringsEqual(command.getName(), CMD_SAVE)) { onSave(); + } else if (StringHelper.stringsEqual(command.getName(), CMD_TEST)) { + onTest(); } else if (StringHelper.stringsEqual(command.getName(), CMD_CANCEL)) { cancel(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 9cbb1a9..4aabb20 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -2638,6 +2638,9 @@ @DefaultStringValue("URL") String urlProvider(); + @DefaultStringValue("Test") + String testProvider(); + @DefaultStringValue("Requires Authentication") String requiresAuthenticationProvider(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java index 78ee7ee..7768121 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java @@ -1,14 +1,22 @@ package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.common.widget.HasUiCommandClickHandlers; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderModel; +import org.ovirt.engine.ui.uicompat.Event; +import org.ovirt.engine.ui.uicompat.EventArgs; +import org.ovirt.engine.ui.uicompat.IEventListener; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; public class ProviderPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<ProviderModel, ProviderPopupPresenterWidget.ViewDef> { public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<ProviderModel> { + HasUiCommandClickHandlers getTestButton(); + void setTestResultImage(boolean succeeded); } @Inject @@ -16,4 +24,25 @@ super(eventBus, view); } + @Override + public void init(final ProviderModel model) { + super.init(model); + + registerHandler(getView().getTestButton().addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + model.getTestCommand().execute(); + } + })); + + model.getTestResult().getEntityChangedEvent().addListener(new IEventListener() { + + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + getView().setTestResultImage((Boolean) model.getTestResult().getEntity()); + } + }); + } + } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java index 43b34b1..4059a14 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java @@ -4,6 +4,8 @@ import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; import org.ovirt.engine.ui.common.widget.Align; +import org.ovirt.engine.ui.common.widget.HasUiCommandClickHandlers; +import org.ovirt.engine.ui.common.widget.UiCommandButton; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor; import org.ovirt.engine.ui.common.widget.editor.EntityModelPasswordBoxEditor; @@ -21,6 +23,7 @@ import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Image; import com.google.inject.Inject; public class ProviderPopupView extends AbstractModelBoundPopupView<ProviderModel> implements ProviderPopupPresenterWidget.ViewDef { @@ -57,6 +60,12 @@ @WithElementId EntityModelTextBoxEditor urlEditor; + @UiField + UiCommandButton testButton; + + @UiField + Image testResultImage; + @UiField(provided = true) @Path(value = "requiresAuthentication.entity") @WithElementId @@ -75,6 +84,8 @@ @UiField Style style; + private ApplicationResources resources; + @SuppressWarnings({ "rawtypes", "unchecked" }) @Inject public ProviderPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { @@ -83,6 +94,7 @@ typeEditor = new ListModelListBoxEditor<Object>(new EnumRenderer()); requiresAuthenticationEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + this.resources = resources; initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); ViewIdHandler.idHandler.generateAndSetIds(this); localize(constants); @@ -95,6 +107,7 @@ typeEditor.setLabel(constants.typeProvider()); descriptionEditor.setLabel(constants.descriptionProvider()); urlEditor.setLabel(constants.urlProvider()); + testButton.setLabel(constants.testProvider()); requiresAuthenticationEditor.setLabel(constants.requiresAuthenticationProvider()); usernameEditor.setLabel(constants.usernameProvider()); passwordEditor.setLabel(constants.passwordProvider()); @@ -121,5 +134,17 @@ interface Style extends CssResource { String contentStyle(); + String testResultImageStyle(); + } + + @Override + public HasUiCommandClickHandlers getTestButton() { + return testButton; + } + + @Override + public void setTestResultImage(boolean succeeded) { + testResultImage.setResource(succeeded ? resources.logNormalImage() : resources.logErrorImage()); + testResultImage.setStyleName(style.testResultImageStyle()); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.ui.xml index bc0702a..4e7e61f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.ui.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> -<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" - xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" + xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" + xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ProviderPopupView.Style"> .contentStyle { @@ -9,6 +10,16 @@ .sectionStyle { margin-top: 20px; + } + + .testButtonStyle { + float: right; + margin-right: 10px; + } + + .testResultImageStyle { + float: right; + margin-top: 3px; } </ui:style> @@ -20,6 +31,10 @@ <e:ListModelListBoxEditor ui:field="typeEditor" /> <e:EntityModelTextBoxEditor ui:field="descriptionEditor" /> <e:EntityModelTextBoxEditor ui:field="urlEditor" /> + <g:FlowPanel> + <w:UiCommandButton ui:field="testButton" addStyleNames="{style.testButtonStyle}" /> + <g:Image ui:field="testResultImage" /> + </g:FlowPanel> </g:FlowPanel> <g:FlowPanel addStyleNames="{style.sectionStyle}"> <e:EntityModelCheckBoxEditor ui:field="requiresAuthenticationEditor" /> -- To view, visit http://gerrit.ovirt.org/14920 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id0856c12d016c283a90c35622441fadc785c5d9c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
