Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: webadmin: Add warning to Setup networks dialog
......................................................................

webadmin: Add warning to Setup networks dialog

Add warning line to Setup networks dialog adn use it to display the warning
on changing displiay network.

Change-Id: I35f0e019b6f77ab90fec89f614b49db589602353
Bug-Url: https://bugzilla.redhat.com/1078836
Signed-off-by: Yevgeny Zaspitsky <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanelsStyle.java
4 files changed, 180 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/63/27463/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java
index 7d510a3..65f08ea 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java
@@ -65,6 +65,13 @@
             };
         }
 
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+
+            final BondNetworkInterfaceModel bondNetworkInterfaceModel = 
(BondNetworkInterfaceModel) op1;
+            return 
isDisplayNetworkAttached(bondNetworkInterfaceModel.getItems());
+        }
+
     },
     DETACH_NETWORK {
 
@@ -92,6 +99,14 @@
                     detachNetwork(allNics, networkToDetach);
                 }
             };
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+
+            final LogicalNetworkModel logicalNetworkModel = 
(LogicalNetworkModel) op1;
+            return isDisplayNetworkAttached(logicalNetworkModel.getItems());
         }
 
     },
@@ -138,6 +153,12 @@
             };
         }
 
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            LogicalNetworkModel networkToBeAttached = (LogicalNetworkModel) 
op1;
+            return networkToBeAttached.getEntity().getCluster().isDisplay();
+        }
+
     },
     BOND_WITH {
 
@@ -175,6 +196,13 @@
                     nic2.getEntity().setBondName(bondName);
                 }
             };
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            return isDisplayNetworkAttached(op1.getItems()) ||
+                    isDisplayNetworkAttached(op2.getItems());
         }
 
     },
@@ -217,6 +245,15 @@
             };
         }
 
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            final BondNetworkInterfaceModel bondNetworkInterfaceModel1 = 
(BondNetworkInterfaceModel) op1;
+            final BondNetworkInterfaceModel bondNetworkInterfaceModel2 = 
(BondNetworkInterfaceModel) op2;
+
+            return 
isDisplayNetworkAttached(bondNetworkInterfaceModel1.getItems()) ||
+                    
isDisplayNetworkAttached(bondNetworkInterfaceModel2.getItems());
+        }
+
     },
     ADD_TO_BOND {
 
@@ -254,6 +291,15 @@
             };
         }
 
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            final NetworkInterfaceModel nicToBeAddedToBond = 
(NetworkInterfaceModel) op1;
+            final BondNetworkInterfaceModel bondNetworkInterfaceModel = 
(BondNetworkInterfaceModel) op2;
+
+            return isDisplayNetworkAttached(nicToBeAddedToBond.getItems()) ||
+                    
isDisplayNetworkAttached(bondNetworkInterfaceModel.getItems());
+        }
+
     },
     EXTEND_BOND_WITH {
 
@@ -269,9 +315,14 @@
                 protected void executeNetworkCommand(NetworkItemModel<?> op1,
                         NetworkItemModel<?> op2,
                         List<VdsNetworkInterface> allNics, Object... params) {
-                    NetworkOperation.ADD_TO_BOND.getCommand(op2, op1, 
allNics).execute();
+                    ADD_TO_BOND.getCommand(op2, op1, allNics).execute();
                 }
             };
+        }
+
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            return ADD_TO_BOND.isDisplayNetworkToBeChanged(op2, op1);
         }
 
     },
@@ -305,6 +356,11 @@
                     }
                 }
             };
+        }
+
+        @Override
+        public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+            return BREAK_BOND.isDisplayNetworkToBeChanged(op1, null);
         }
 
     },
@@ -603,4 +659,24 @@
     public boolean isNullOperation(){
         return false;
     }
+
+    @SuppressWarnings("unused")
+    public boolean isDisplayNetworkToBeChanged(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2) {
+        return false;
+    }
+
+    public boolean isErroneousOperation() {
+        return isNullOperation() && this != NULL_OPERATION;
+    }
+
+    private static boolean isDisplayNetworkAttached(final 
Iterable<LogicalNetworkModel> logicalNetworkInterfaces) {
+        for (LogicalNetworkModel logicalNetworkModel : 
logicalNetworkInterfaces) {
+
+            if (logicalNetworkModel.getEntity().getCluster().isDisplay()) {
+                return true;
+            }
+        }
+
+        return false;
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java
index 9a70cbd..932124a 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java
@@ -21,15 +21,14 @@
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
-import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.HostSetupNetworksPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.ExternalNetworkPanel;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.ExternalNetworksPanel;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.InternalNetworkPanel;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.InternalNetworksPanel;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.NetworkGroup;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.NetworkPanel;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.InternalNetworkPanel;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.NetworkPanelsStyle;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels.InternalNetworksPanel;
 import org.ovirt.engine.ui.webadmin.widget.editor.AnimatedVerticalPanel;
 import org.ovirt.engine.ui.webadmin.widget.footer.StatusLabel;
 
@@ -43,15 +42,14 @@
 
 public class HostSetupNetworksPopupView extends 
AbstractModelBoundPopupView<HostSetupNetworksModel> implements 
HostSetupNetworksPopupPresenterWidget.ViewDef {
 
+    private static final String EMPTY_WARNING = "";
+
     interface Driver extends SimpleBeanEditorDriver<HostSetupNetworksModel, 
HostSetupNetworksPopupView> {
     }
 
     interface ViewUiBinder extends UiBinder<SimpleDialogPanel, 
HostSetupNetworksPopupView> {
         ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
     }
-
-    private static ApplicationConstants constants = 
ClientGinjectorProvider.getApplicationConstants();
-    private static final String EMPTY_STATUS = 
constants.dragToMakeChangesSetupNetwork();
 
     @UiField
     InternalNetworksPanel internalNetworkList;
@@ -68,9 +66,16 @@
     @UiField
     SimplePanel statusPanel;
 
+    @UiField
+    SimplePanel warningPanel;
+
     @UiField(provided = true)
     @Ignore
     StatusLabel status;
+
+    @UiField(provided = true)
+    @Ignore
+    StatusLabel warning;
 
     @UiField
     NetworkPanelsStyle style;
@@ -93,17 +98,31 @@
 
     private boolean rendered = false;
 
+    private final ApplicationConstants constants;
+    private final String emptyStatus;
+
     @Inject
-    public HostSetupNetworksPopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants, ApplicationTemplates templates) {
+    public HostSetupNetworksPopupView(
+            EventBus eventBus,
+            ApplicationResources resources,
+            ApplicationConstants constants,
+            ApplicationTemplates templates) {
         super(eventBus, resources);
-        status = new StatusLabel(EMPTY_STATUS);
+
+        this.constants = constants;
+
+        this.emptyStatus = constants.dragToMakeChangesSetupNetwork();
+
+        status = new StatusLabel(emptyStatus);
+        warning = new StatusLabel(EMPTY_WARNING);
         checkConnectivity = new EntityModelCheckBoxEditor(Align.RIGHT);
         commitChanges = new EntityModelCheckBoxEditor(Align.RIGHT);
         externalNetworksInfo = new 
InfoIcon(templates.italicText(constants.externalNetworksInfo()), resources);
         checkConnInfo = new 
InfoIcon(templates.italicTwoLines(constants.checkConnectivityInfoPart1(), 
constants.checkConnectivityInfoPart2()), resources);
         commitChangesInfo = new 
InfoIcon(templates.italicTwoLines(constants.commitChangesInfoPart1(), 
constants.commitChangesInfoPart2()), resources);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
-        setStatusStyle(true);
+        setValidStatusStyle();
+        turnWarningOff();
         checkConnectivity.setContentWidgetStyleName(style.checkCon());
         commitChanges.setContentWidgetStyleName(style.commitChanges());
         initUnassignedNetworksPanel();
@@ -117,18 +136,31 @@
     }
 
     private void localize(){
-        checkConnectivity.setLabel(constants.checkConHostPopup()); 
//$NON-NLS-1$
+        checkConnectivity.setLabel(constants.checkConHostPopup());
         commitChanges.setLabel(constants.saveNetConfigHostPopup());
     }
 
-    private void setStatusStyle(boolean valid) {
-        if (valid) {
-            statusPanel.setStylePrimaryName(style.statusPanel());
-            status.setStylePrimaryName(style.statusLabel());
-        } else {
-            statusPanel.setStylePrimaryName(style.errorPanel());
-            status.setStylePrimaryName(style.errorLabel());
-        }
+    private void setErrorStatusStyle() {
+        statusPanel.setStylePrimaryName(style.errorPanel());
+        status.setStylePrimaryName(style.errorLabel());
+        turnWarningOff();
+    }
+
+    private void setValidStatusStyle() {
+        statusPanel.setStylePrimaryName(style.statusPanel());
+        status.setStylePrimaryName(style.statusLabel());
+    }
+
+    private void turnWarningOn(String warningText) {
+        warningPanel.setStylePrimaryName(style.warningPanel());
+        warning.setStylePrimaryName(style.warningLabel());
+        warning.setFadeText(warningText);
+    }
+
+    private void turnWarningOff() {
+        warningPanel.setStylePrimaryName(style.statusPanel());
+        warning.setStylePrimaryName(style.statusLabel());
+        warning.setFadeText(EMPTY_WARNING);
     }
 
     @Override
@@ -141,7 +173,8 @@
                 HostSetupNetworksModel model = (HostSetupNetworksModel) sender;
                 List<LogicalNetworkModel> networks = model.getNetworks();
                 List<NetworkInterfaceModel> nics = model.getNics();
-                status.setFadeText(EMPTY_STATUS);
+                status.setFadeText(emptyStatus);
+                turnWarningOff();
                 updateNetworks(networks);
                 updateNics(nics);
                 // mark as rendered
@@ -156,11 +189,30 @@
                 NetworkOperation candidate = evtArgs.getCandidate();
                 NetworkItemModel<?> op1 = evtArgs.getOp1();
                 NetworkItemModel<?> op2 = evtArgs.getOp2();
-                boolean drop = evtArgs.isDrop();
-                if (!drop) {
-                    status.setFadeText(candidate != null ? 
candidate.getMessage(op1, op2) : constants.noValidActionSetupNetwork());
+
+                if (evtArgs.isDrop()) {
+                    setValidStatusStyle();
+                    turnWarningOff();
+                } else {
+                    if (candidate == null) {
+                        
status.setFadeText(constants.noValidActionSetupNetwork());
+                        setErrorStatusStyle();
+                    } else {
+                        status.setFadeText(candidate.getMessage(op1, op2));
+
+                        if (candidate.isErroneousOperation()) {
+                            setErrorStatusStyle();
+                        } else {
+                            setValidStatusStyle();
+
+                            if (candidate.isDisplayNetworkToBeChanged(op1, 
op2)) {
+                                
turnWarningOn(constants.changeDisplayNetworkWarning());
+                            } else {
+                                turnWarningOff();
+                            }
+                        }
+                    }
                 }
-                setStatusStyle(!drop || !candidate.isNullOperation() || 
candidate == NetworkOperation.NULL_OPERATION);
             }
         });
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.ui.xml
index a826332..72b0314 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.ui.xml
@@ -1,8 +1,12 @@
 <?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.webadmin.widget.editor"
-    xmlns:f="urn:import:org.ovirt.engine.ui.webadmin.widget.footer" 
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
+<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.webadmin.widget.editor"
+    xmlns:f="urn:import:org.ovirt.engine.ui.webadmin.widget.footer"
+    xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
     
xmlns:p="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels">
 
     <ui:with field='constants' 
type='org.ovirt.engine.ui.webadmin.ApplicationConstants' />
@@ -206,16 +210,31 @@
             padding-top: 10px;
         }
 
+        .warningPanel {
+            background-color: yellow;
+            height: 30px;
+            border-bottom: 1px solid #C5C5C5;
+        }
 
+        .warningLabel {
+            font-size: 15px;
+            font-weight: bold;
+            color: #FF8C00;
+            padding-left: 20px;
+            padding-top: 5px;
+        }
     </ui:style>
 
-    <d:SimpleDialogPanel width="900px" height="600px">
+    <d:SimpleDialogPanel width="900px" height="630px">
         <d:content>
             <g:HTMLPanel>
                 <g:SimplePanel ui:field="statusPanel">
                     <f:StatusLabel ui:field="status"/>
                 </g:SimplePanel>
-                <g:HorizontalPanel spacing="10" width="100%" height="77%" 
verticalAlignment="ALIGN_TOP">
+                <g:SimplePanel ui:field="warningPanel" >
+                    <f:StatusLabel ui:field="warning"/>
+                </g:SimplePanel>
+                <g:HorizontalPanel spacing="10" width="100%" height="72%" 
verticalAlignment="ALIGN_TOP">
                     <g:Cell width="69%" height="100%">
                         <g:VerticalPanel width="100%" 
horizontalAlignment="ALIGN_LEFT">
                         <g:HorizontalPanel>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanelsStyle.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanelsStyle.java
index 7c05c03..2f46332 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanelsStyle.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanelsStyle.java
@@ -37,6 +37,10 @@
 
     String errorLabel();
 
+    String warningPanel();
+
+    String warningLabel();
+
     String checkCon();
 
     String commitChanges();


-- 
To view, visit http://gerrit.ovirt.org/27463
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I35f0e019b6f77ab90fec89f614b49db589602353
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yevgeny Zaspitsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to