Daniel Erez has uploaded a new change for review.

Change subject: webadmin: snapshot preview - display entities in description
......................................................................

webadmin: snapshot preview - display entities in description

VMs -> Snapshots:
when previewing a snapshot, display previewed entities under
description column (see screenshot).

Screenshot: http://i.imgur.com/JlWWZkZ.png

Change-Id: I2345339fd61cf273224b565c60745fddb64c6ab3
Bug-Url: https://bugzilla.redhat.com/1126211
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/CommonApplicationMessages.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/snapshot/SnapshotsViewColumns.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.ui.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
7 files changed, 73 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/32576/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 84be89e..ef64e6e 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
@@ -400,9 +400,6 @@
     @DefaultStringValue("Installed Applications")
     String applicationsLabel();
 
-    @DefaultStringValue("Preview Mode")
-    String previewModelLabel();
-
     @DefaultStringValue("Read-Only")
     String readonlyLabel();
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
index d59e1d7..bacfa8b 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
@@ -150,4 +150,7 @@
 
     @DefaultMessage("The following values can be applied immediately:<br/>- 
cpu")
     String nextRunConfigurationCanBeAppliedImmediately();
+
+    @DefaultMessage("{0} (Previewing: {1})")
+    String snapshotPreviewing(String snapshotDescription, String diskAliases);
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/snapshot/SnapshotsViewColumns.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/snapshot/SnapshotsViewColumns.java
index c7bd097..6b227d2 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/snapshot/SnapshotsViewColumns.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/snapshot/SnapshotsViewColumns.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.CommonApplicationMessages;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.widget.renderer.FullDateTimeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.CheckboxColumn;
@@ -14,10 +15,17 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import org.ovirt.engine.ui.uicommonweb.Linq;
+import org.ovirt.engine.ui.uicompat.external.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 public class SnapshotsViewColumns {
     private static final CommonApplicationConstants constants = 
GWT.create(CommonApplicationConstants.class);
     private static final CommonApplicationTemplates templates = 
GWT.create(CommonApplicationTemplates.class);
+    private static final CommonApplicationMessages messages = 
GWT.create(CommonApplicationMessages.class);
 
     public static final TextColumnWithTooltip<Snapshot> dateColumn = new 
TextColumnWithTooltip<Snapshot>() {
         @Override
@@ -57,17 +65,30 @@
             String descriptionStr = description.asString();
 
             if (snapshot.getStatus() == SnapshotStatus.IN_PREVIEW) {
-                descriptionStr = descriptionStr + " (" + 
constants.previewModelLabel() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+                //descriptionStr = descriptionStr + " (" + 
constants.previewModelLabel() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+                List<String> previewedItems = new 
ArrayList<String>(Arrays.asList(constants.vmConfiguration()));
+                
previewedItems.addAll(Linq.getDiskAliases(snapshot.getDiskImages()));
+                descriptionStr = messages.snapshotPreviewing(
+                        descriptionStr, StringUtils.join(previewedItems, ", 
")); //$NON-NLS-1$
                 description = templates.snapshotDescription("color:orange", 
descriptionStr); //$NON-NLS-1$
             }
             else if (snapshot.getType() == SnapshotType.STATELESS) {
                 descriptionStr = descriptionStr + " (" + 
constants.readonlyLabel() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
                 description = 
templates.snapshotDescription("font-style:italic", descriptionStr); 
//$NON-NLS-1$
             }
-            else if (snapshot.getType() == SnapshotType.ACTIVE || 
snapshot.getType() == SnapshotType.PREVIEW) {
-                descriptionStr = snapshot.getType() == SnapshotType.ACTIVE ? 
constants.snapshotDescriptionActiveVm() : 
constants.snapshotDescriptionActiveVmBeforePreview();
+            else if (snapshot.getType() == SnapshotType.PREVIEW) {
+                descriptionStr = 
constants.snapshotDescriptionActiveVmBeforePreview();
                 description = templates.snapshotDescription("color:gray", 
descriptionStr); //$NON-NLS-1$
             }
+            else if (snapshot.getType() == SnapshotType.ACTIVE) {
+                descriptionStr = constants.snapshotDescriptionActiveVm();
+                description = templates.snapshotDescription("color:gray", 
descriptionStr); //$NON-NLS-1$
+            }
+            else if (snapshot.getType() == SnapshotType.REGULAR && 
!snapshot.getDiskImages().isEmpty()) {
+                descriptionStr = messages.snapshotPreviewing(
+                        descriptionStr, 
StringUtils.join(Linq.getDiskAliases(snapshot.getDiskImages()), ", ")); 
//$NON-NLS-1$
+                description = templates.snapshotDescription("color:gold", 
descriptionStr); //$NON-NLS-1$
+            }
 
             return description;
         }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
index 4fae659..7f60bf5 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
@@ -151,7 +151,7 @@
                 constants.memorySnapshot(), memorySnapshotSupported, "55px"); 
//$NON-NLS-1$
 
         getTable().ensureColumnPresent(SnapshotsViewColumns.descriptionColumn,
-                constants.descriptionSnapshot(), true, "185px"); //$NON-NLS-1$
+                constants.descriptionSnapshot(), true, "300px"); //$NON-NLS-1$
     }
 
     private void initActionButtons(final CommonApplicationConstants constants) 
{
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.ui.xml
index 0e37494..32f7e69 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.ui.xml
@@ -40,7 +40,7 @@
        </ui:style>
 
        <g:SplitLayoutPanel addStyleNames="{style.container}">
-               <g:west size="500">
+               <g:west size="650">
                        <g:LayoutPanel ui:field="snapshotsTableContainer"/>
                </g:west>
                <g:center>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
index 24d5ba6..d2337eb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
@@ -7,6 +7,7 @@
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
@@ -840,6 +841,14 @@
         return diskModels;
     }
 
+    public static Set<String> getDiskAliases(List<? extends Disk> disks) {
+        Set<String> aliases = new HashSet<String>();
+        for (Disk disk : disks) {
+            aliases.add(disk.getDiskAlias());
+        }
+        return aliases;
+    }
+
     public final static class TimeZonePredicate implements 
IPredicate<TimeZoneModel>
     {
         private final String timeZone;
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index 20dc4d1..078193a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -265,11 +265,20 @@
             }
         }
 
-        super.setItems(sortedSnapshots);
+        if (getInPreview(sortedSnapshots) != null) {
+            updatePreviewedDiskSnapshots(sortedSnapshots);
+        }
+        else {
+            updateItems(sortedSnapshots);
+        }
+    }
+
+    private void updateItems(List<Snapshot> snapshots) {
+        super.setItems(snapshots);
 
         // Try to select the last created snapshot (fallback to active 
snapshot)
         if (getSelectedItem() == null) {
-            setSelectedItem(sortedSnapshots.size() > 1 ? 
sortedSnapshots.get(1) : sortedSnapshots.get(0));
+            setSelectedItem(snapshots.size() > 1 ? snapshots.get(1) : 
snapshots.get(0));
         }
 
         updateActionAvailability();
@@ -424,6 +433,25 @@
 
             addCommands(model, "OnPreview"); //$NON-NLS-1$
         }
+    }
+
+    private void updatePreviewedDiskSnapshots(final List<Snapshot> snapshots) {
+        AsyncDataProvider.getInstance().getVmDiskList(new AsyncQuery(this, new 
INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object target, Object returnValue) {
+                ArrayList<DiskImage> disks = (ArrayList<DiskImage>) 
returnValue;
+                for (DiskImage disk : disks) {
+                    if (disk.getSnapshots().size() <= 1) {
+                        continue;
+                    }
+
+                    Guid snapshotId = 
disk.getSnapshots().get(1).getVmSnapshotId();
+                    
snapshotsMap.get(snapshotId).getEntity().getDiskImages().add(disk);
+                }
+
+                updateItems(snapshots);
+            }
+        }), ((VM) getEntity()).getId());
     }
 
     private void customPreview()
@@ -705,7 +733,11 @@
     }
 
     public Snapshot getInPreview() {
-        for (Snapshot snapshot : (ArrayList<Snapshot>) getItems()) {
+        return getInPreview(getItems());
+    }
+
+    public Snapshot getInPreview(Collection<Snapshot> snapshots) {
+        for (Snapshot snapshot : snapshots) {
             if (snapshot.getStatus() == SnapshotStatus.IN_PREVIEW) {
                 return snapshot;
             }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2345339fd61cf273224b565c60745fddb64c6ab3
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