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

Reply via email to