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