Daniel Erez has uploaded a new change for review.

Change subject: webadmin: move dialog - modified warnings and styling
......................................................................

webadmin: move dialog - modified warnings and styling

In order to provide a better indication to which of the
selected disks cannot be moved/copied:

* Added a list of problematic disks into the dialog's warning.
* Added an alert icon next to the warning.
* Altered warnings position and style.

[1] Disks that cannot be moved/copied (e.g. since the source/target
    domain is not available).

Change-Id: Ib327915336dfbbdd6e71665b5d3ca603a8843698
Bug-Url: https://bugzilla.redhat.com/975096
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationTemplates.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.ui.xml
9 files changed, 53 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/82/19882/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationTemplates.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationTemplates.java
index 143d470..6c96d4b 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationTemplates.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationTemplates.java
@@ -82,4 +82,6 @@
     @Template("<div style='width: {0}; font-style: italic;'>{1}</div>")
     SafeHtml italicFixedWidth(String pxWidth, String text);
 
+    @Template("<span>{0} {1}</span>")
+    SafeHtml iconWithText(SafeHtml icon, String text);
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java
index 7cc4460..a0dad63 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/DisksAllocationModel.java
@@ -31,10 +31,12 @@
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 import org.ovirt.engine.ui.uicompat.UIConstants;
+import org.ovirt.engine.ui.uicompat.UIMessages;
 
 public class DisksAllocationModel extends EntityModel
 {
     protected static UIConstants constants = 
ConstantsManager.getInstance().getConstants();
+    protected static UIMessages messages = 
ConstantsManager.getInstance().getMessages();
 
     private final IEventListener quota_storageEventListener = new 
IEventListener() {
         @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java
index 517b591..79fe544 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 
 import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -71,13 +72,16 @@
         this.vmId = vmId;
     }
 
+    // Disks that cannot be moved/copied
+    protected List<String> problematicDisks = new ArrayList<String>();
+
     public abstract void init(ArrayList<DiskImage> diskImages);
 
     protected abstract void initStorageDomains();
 
     protected abstract VdcActionType getActionType();
 
-    protected abstract String getWarning();
+    protected abstract String getWarning(List<String> disks);
 
     protected abstract String getNoActiveSourceDomainMessage();
 
@@ -139,8 +143,6 @@
     }
 
     protected void postInitStorageDomains() {
-        boolean showWarning = false;
-
         for (DiskModel disk : getDisks()) {
             DiskImage diskImage = ((DiskImage) disk.getDisk());
 
@@ -162,7 +164,7 @@
 
             // Add prohibition reasons
             if (sourceStorageDomains.isEmpty() || 
destStorageDomains.isEmpty()) {
-                showWarning = true;
+                problematicDisks.add((String) disk.getAlias().getEntity());
                 updateChangeability(disk, isDiskBasedOnTemplate,
                         sourceStorageDomains.isEmpty(), 
destStorageDomains.isEmpty());
             }
@@ -176,7 +178,7 @@
         }
 
         sortDisks();
-        postCopyOrMoveInit(showWarning);
+        postCopyOrMoveInit();
     }
 
     private void updateChangeability(DiskModel disk, boolean 
isDiskBasedOnTemplate, boolean noSources, boolean noTargets) {
@@ -195,7 +197,7 @@
         disk.getSourceStorageDomainName().setEntity(sourceStorageName);
     }
 
-    protected void postCopyOrMoveInit(boolean showWarning) {
+    protected void postCopyOrMoveInit() {
         ICommandTarget target = (ICommandTarget) getEntity();
 
         if (getActiveStorageDomains().isEmpty()) {
@@ -209,8 +211,8 @@
         }
         else
         {
-            if (showWarning) {
-                setMessage(getWarning());
+            if (!problematicDisks.isEmpty()) {
+                setMessage(getWarning(problematicDisks));
             }
 
             UICommand actionCommand = new UICommand("OnExecute", this); 
//$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java
index 1027973..cf2ade8 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.uicommonweb.models.templates;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -11,6 +12,7 @@
 import org.ovirt.engine.core.common.businessentities.ImageOperation;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -67,8 +69,8 @@
     }
 
     @Override
-    protected String getWarning() {
-        return constants.cannotCopyDisks();
+    protected String getWarning(List<String> disks) {
+        return messages.cannotCopyDisks(StringHelper.join(", ", 
disks.toArray())); //$NON-NLS-1$
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java
index a57b032..5a8c5c8 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -68,8 +69,8 @@
     }
 
     @Override
-    protected String getWarning() {
-        return constants.cannotMoveDisks();
+    protected String getWarning(List<String> disks) {
+        return messages.cannotMoveDisks(StringHelper.join(", ", 
disks.toArray())); //$NON-NLS-1$
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index e44eac8..da950d4 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -907,13 +907,7 @@
     String diskExistsOnAllActiveStorageDomainsMsg();
 
     @DefaultStringValue("The Template that the VM is based on does not exist 
on any active Storage Domain")
-    String noActiveStorageDomainWithTemplateMsg();
-
-    @DefaultStringValue("Warning: Some of the disks cannot be moved")
-    String cannotMoveDisks();
-
-    @DefaultStringValue("Warning: Some of the disks cannot be copied")
-    String cannotCopyDisks();
+    String noActiveStorageDomainWithTemplateMsg();;
 
     @DefaultStringValue("Field value should follow: 
<parameter=value;parameter=value;...>")
     String fieldValueShouldFollowMsg();
@@ -1728,7 +1722,7 @@
     @DefaultStringValue("Wipe after delete is not supported for file domains")
     String wipeAfterDeleteNotSupportedForFileDomains();
 
-    @DefaultStringValue("Note: Moving the disk(s) while the VM is running")
+    @DefaultStringValue("Moving disk(s) while the VM is running")
     String liveStorageMigrationWarning();
 
     @DefaultStringValue("Cannot remove more than one brick from a Replicate 
volume at a time")
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java
index c7da6f4..31aa2ce 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.ui.uicompat;
 
+import com.google.gwt.i18n.client.Constants;
+
 import java.util.Date;
 import java.util.List;
 
@@ -297,4 +299,10 @@
 
     @DefaultMessage("No Rebalance ever happened on volume :  {0}")
     String rebalanceStatusConfirmationMessage(String name);
+
+    @DefaultMessage("The following disks cannot be moved: {0}")
+    String cannotMoveDisks(String disks);
+
+    @DefaultMessage("The following disks cannot be copied: {0}")
+    String cannotCopyDisks(String disks);
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.java
index 67755f4..127e085 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.java
@@ -1,5 +1,10 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.popup.storage;
 
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.HTML;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import org.ovirt.engine.ui.common.widget.uicommon.storage.DisksAllocationView;
@@ -13,7 +18,6 @@
 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.gwt.user.client.ui.Label;
 import com.google.inject.Inject;
 
 public class DisksAllocationPopupView extends 
AbstractModelBoundPopupView<DisksAllocationModel> implements 
DisksAllocationPopupPresenterWidget.ViewDef {
@@ -21,6 +25,10 @@
     interface ViewUiBinder extends UiBinder<SimpleDialogPanel, 
DisksAllocationPopupView> {
         ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
     }
+
+    final CommonApplicationTemplates templates = 
GWT.create(CommonApplicationTemplates.class);
+
+    SafeHtml warningImage;
 
     @UiField
     FlowPanel messagePanel;
@@ -34,6 +42,9 @@
     @Inject
     public DisksAllocationPopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
         super(eventBus, resources);
+
+        warningImage = 
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(
+                resources.logWarningImage()).getHTML());
 
         disksAllocationView = new DisksAllocationView(constants);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
@@ -54,9 +65,11 @@
     public void setMessage(String message) {
         super.setMessage(message);
 
-        boolean isMessageEmpty = message == null || message.isEmpty();
-        messagePanel.setVisible(!isMessageEmpty);
-        messagePanel.add(new Label(message));
+        if (message != null && !message.isEmpty()) {
+            messagePanel.add(new HTML(templates.iconWithText(warningImage, 
message)));
+        }
+
+        messagePanel.setVisible(messagePanel.iterator().hasNext());
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.ui.xml
index 149472a..1e115f2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/DisksAllocationPopupView.ui.xml
@@ -7,16 +7,18 @@
        <ui:style>
                .messagePanel {
                        color: #CD2127;
-                       text-align: center;
-                       padding: 10px;
+            position: absolute;
+            bottom: 0;
+            height: 35px;
+            overflow: auto;
                }
        </ui:style>
        
        <d:SimpleDialogPanel width="540px" height="400px">
                <d:content>
                        <g:FlowPanel>
-                               <g:FlowPanel ui:field="messagePanel" 
visible="false" addStyleNames="{style.messagePanel}" />
                                <w:DisksAllocationView 
ui:field="disksAllocationView" listHeight="245px" listWidth="525px" 
showSource="true" />
+                <g:FlowPanel ui:field="messagePanel" visible="false" 
addStyleNames="{style.messagePanel}" />
                        </g:FlowPanel>
                </d:content>
        </d:SimpleDialogPanel>


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

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

Reply via email to