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