Daniel Erez has uploaded a new change for review.

Change subject: webadmin: warning for saving memory with partial disks
......................................................................

webadmin: warning for saving memory with partial disks

Create live snapshot dialog:
Added a warning when saving memory while excluding some of the disks.

Custom preview dialog:
Added a warning when previewing memory while excluding some disks
from the selected snapshot.

Change-Id: I4294419499715fc72b5f5743b0f21531f43da7ea
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.ui.xml
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
7 files changed, 107 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/23169/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index 2384c6a..9a9344c 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -1614,4 +1614,10 @@
 
     @DefaultStringValue("Double-click to select an entire row")
     String customPreviewSnapshotTableTitle();
+
+    @DefaultStringValue("Saving memory may cause data loss when excluding 
disks!")
+    String snapshotCreationWithMemoryAndPartialDisksWarning();
+
+    @DefaultStringValue("Previewing memory may cause data loss when excluding 
disks!")
+    String snapshotPreviewWithMemoryAndPartialDisksWarning();
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
index 7a102bd..5fcdc6a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
@@ -2,15 +2,22 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.Align;
@@ -26,6 +33,8 @@
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
+
+import java.util.ArrayList;
 
 public class VmSnapshotCreatePopupWidget extends 
AbstractModelBoundPopupWidget<SnapshotModel> {
 
@@ -66,11 +75,22 @@
     @Ignore
     FlowPanel messagePanel;
 
-    private final Driver driver = GWT.create(Driver.class);
+    @UiField
+    SimplePanel warningPanel;
 
-    public VmSnapshotCreatePopupWidget(CommonApplicationConstants constants) {
+    private final Driver driver = GWT.create(Driver.class);
+    private CommonApplicationTemplates templates;
+    private CommonApplicationResources resources;
+    private CommonApplicationConstants constants;
+
+    public VmSnapshotCreatePopupWidget(CommonApplicationConstants constants, 
CommonApplicationTemplates templates,
+                                       CommonApplicationResources resources) {
+        this.constants = constants;
+        this.templates = templates;
+        this.resources = resources;
+
         initEditors();
-        initTables(constants);
+        initTables();
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
         localize(constants);
         ViewIdHandler.idHandler.generateAndSetIds(this);
@@ -81,7 +101,7 @@
         memoryEditor = new EntityModelCheckBoxEditor(Align.RIGHT);
     }
 
-    private void initTables(CommonApplicationConstants constants) {
+    private void initTables() {
         disksTable = new ListModelObjectCellTable<DiskImage, ListModel>(true, 
true);
         disksTable.enableColumnResizing();
 
@@ -141,9 +161,16 @@
                 }
             }
         });
+
+        model.getMemory().getEntityChangedEvent().addListener(new 
IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                updateMemoryWarning(model);
+            }
+        });
     }
 
-    private void editDisksTable(SnapshotModel model) {
+    private void editDisksTable(final SnapshotModel model) {
         disksTable.asEditor().edit(model.getSnapshotDisks());
         model.getSnapshotDisks().getItemsChangedEvent().addListener(new 
IEventListener() {
             @Override
@@ -151,6 +178,29 @@
                 disksTable.selectAll();
             }
         });
+
+        
model.getSnapshotDisks().getSelectedItemsChangedEvent().addListener(new 
IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                updateMemoryWarning(model);
+            }
+        });
+    }
+
+    private void updateMemoryWarning(SnapshotModel model) {
+        ArrayList<DiskImage> diskImages = (ArrayList<DiskImage>) 
model.getSnapshotDisks().getItems();
+        ArrayList<DiskImage> selectedDiskImages = (ArrayList<DiskImage>) 
model.getSnapshotDisks().getSelectedItems();
+
+        boolean partialDisksSelection = selectedDiskImages != null && 
diskImages.size() != selectedDiskImages.size();
+        boolean isIncludeMemory = (Boolean) model.getMemory().getEntity();
+
+        SafeHtml warningImage = 
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(
+                resources.logWarningImage()).getHTML());
+        HTML warningWidget = new HTML(templates.iconWithText(
+                warningImage, 
constants.snapshotCreationWithMemoryAndPartialDisksWarning()));
+
+        // Show warning in case of saving memory to snapshot and excluding 
some disks.
+        warningPanel.setWidget(isIncludeMemory && partialDisksSelection ? 
warningWidget : null);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
index 43b0e5d..e45ddb2 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
@@ -21,8 +21,13 @@
             max-height: 40px;
                }
 
+        .warningPanel {
+            color: red;
+            padding-top: 5px;
+        }
+
         .disksPanel {
-            height: 200px;
+            height: 180px;
             margin: 5px;
         }
 
@@ -40,6 +45,7 @@
             <e:ListModelObjectCellTable ui:field="disksTable"/>
         </g:ScrollPanel>
         <e:EntityModelCheckBoxEditor ui:field="memoryEditor" 
addStyleNames="{style.memoryEditor}" />
+        <g:SimplePanel ui:field="warningPanel" 
addStyleNames="{style.warningPanel}"/>
         <g:FlowPanel ui:field="messagePanel" 
addStyleNames="{style.messagePanel}"/>
        </g:FlowPanel>
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java
index 68b24be..9665aef 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java
@@ -14,6 +14,7 @@
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.cellview.client.Column;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.SplitLayoutPanel;
@@ -74,6 +75,9 @@
 
     @UiField
     SimplePanel snapshotInfoContainer;
+
+    @UiField
+    SimplePanel warningPanel;
 
     private PreviewSnapshotModel previewSnapshotModel;
     private VmSnapshotInfoPanel vmSnapshotInfoPanel;
@@ -172,6 +176,7 @@
             public void update(int index, SnapshotModel snapshotModel, Boolean 
value) {
                 
previewSnapshotModel.getSnapshotModel().getMemory().setEntity(value);
                 refreshTable(previewTable);
+                updateMemoryWarning();
             }
         }) {
             @Override
@@ -210,6 +215,7 @@
 
                     diskListModel.setSelectedItem(Boolean.TRUE.equals(value) ? 
image : null);
                     refreshTable(previewTable);
+                    updateMemoryWarning();
                     updateInfoPanel();
                 }
             }) {
@@ -270,6 +276,22 @@
         table.redraw();
     }
 
+    private void updateMemoryWarning() {
+        List<DiskImage> allSnapshotsDisks = 
previewSnapshotModel.getSnapshotModel().getEntity().getDiskImages();
+        List<DiskImage> selectedDisks = 
previewSnapshotModel.getSelectedDisks();
+
+        boolean partialDisksSelection = 
!selectedDisks.containsAll(allSnapshotsDisks);
+        boolean isIncludeMemory = (Boolean) 
previewSnapshotModel.getSnapshotModel().getMemory().getEntity();
+
+        SafeHtml warningImage = 
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(
+                resources.logWarningImage()).getHTML());
+        HTML warningWidget = new HTML(templates.iconWithText(
+                warningImage, 
constants.snapshotPreviewWithMemoryAndPartialDisksWarning()));
+
+        // Show warning in case of previewing a memory snapshot and excluding 
some disks.
+        warningPanel.setWidget(isIncludeMemory && partialDisksSelection ? 
warningWidget : null);
+    }
+
     private void updateInfoPanel() {
         ArrayList<DiskImage> selectedImages = (ArrayList<DiskImage>) 
previewSnapshotModel.getSelectedDisks();
         Collections.sort(selectedImages, new Linq.DiskByAliasComparer());
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.ui.xml
index 42c7b35..a71c5b7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.ui.xml
@@ -37,13 +37,21 @@
             font-size: 13px;
             padding-bottom: 2px;
         }
+
+        .warningPanel {
+            color: red;
+            text-align: right;
+        }
     </ui:style>
 
     <g:SplitLayoutPanel ui:field="splitLayoutPanel" width="100%">
         <g:center>
             <g:SimplePanel addStyleNames="{style.containerPanel}">
                 <g:FlowPanel addStyleNames="{style.containerPanelInner}">
-                    <g:Label ui:field="previewTableLabel" 
addStyleNames="{style.previewTableLabel}"/>
+                    <g:HorizontalPanel width="100%">
+                        <g:Label ui:field="previewTableLabel" 
addStyleNames="{style.previewTableLabel}"/>
+                        <g:SimplePanel ui:field="warningPanel" 
addStyleNames="{style.warningPanel}"/>
+                    </g:HorizontalPanel>
                     <e:EntityModelCellTable ui:field="previewTable"/>
                 </g:FlowPanel>
             </g:SimplePanel>
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
index 5d8ed38..e0a33d3 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.SnapshotModel;
 import org.ovirt.engine.ui.userportal.ApplicationConstants;
 import org.ovirt.engine.ui.userportal.ApplicationResources;
+import org.ovirt.engine.ui.userportal.ApplicationTemplates;
 import 
org.ovirt.engine.ui.userportal.section.main.presenter.popup.vm.VmSnapshotCreatePopupPresenterWidget;
 
 import com.google.gwt.core.client.GWT;
@@ -19,8 +20,9 @@
     }
 
     @Inject
-    public VmSnapshotCreatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
-        super(eventBus, resources, new VmSnapshotCreatePopupWidget(constants), 
"400px", "400px"); //$NON-NLS-1$ //$NON-NLS-2$
+    public VmSnapshotCreatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants,
+                                     ApplicationTemplates templates) {
+        super(eventBus, resources, new VmSnapshotCreatePopupWidget(constants, 
templates, resources), "400px", "400px"); //$NON-NLS-1$ //$NON-NLS-2$
         ViewIdHandler.idHandler.generateAndSetIds(this);
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
index e25918a..d951ca8 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmSnapshotCreatePopupView.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.SnapshotModel;
 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.section.main.presenter.popup.vm.VmSnapshotCreatePopupPresenterWidget;
 
 import com.google.gwt.core.client.GWT;
@@ -19,8 +20,9 @@
     }
 
     @Inject
-    public VmSnapshotCreatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
-        super(eventBus, resources, new VmSnapshotCreatePopupWidget(constants), 
"410px", "400px"); //$NON-NLS-1$ //$NON-NLS-2$
+    public VmSnapshotCreatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants,
+                                     ApplicationTemplates templates) {
+        super(eventBus, resources, new VmSnapshotCreatePopupWidget(constants, 
templates, resources), "410px", "400px"); //$NON-NLS-1$ //$NON-NLS-2$
         ViewIdHandler.idHandler.generateAndSetIds(this);
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4294419499715fc72b5f5743b0f21531f43da7ea
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <de...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to