Daniel Erez has uploaded a new change for review.

Change subject: webadmin: snapshots sub-tab - info on active vm
......................................................................

webadmin: snapshots sub-tab - info on active vm

VMs -> Snapshots sub-tab:
As GetVmConfigurationBySnapshot query already supports retrieving
information for active snapshot, update snapshot info tab when
selecting 'Active VM' snapshot.

Change-Id: I1327b8787cc1f07227247ded8b6d3a32baf8ef7a
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotInfoPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
4 files changed, 57 insertions(+), 118 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/21583/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotInfoPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotInfoPanel.java
index e979dd4..59fd544 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotInfoPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotInfoPanel.java
@@ -1,17 +1,15 @@
 package org.ovirt.engine.ui.common.widget.uicommon.vm;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-
+import com.google.gwt.dom.client.Style.Position;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.TabLayoutPanel;
+import com.google.gwt.view.client.NoSelectionModel;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
-import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
 import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
-import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationMessages;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
@@ -23,19 +21,14 @@
 import org.ovirt.engine.ui.common.widget.table.column.RxTxRateColumn;
 import org.ovirt.engine.ui.common.widget.table.column.SumUpColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SnapshotModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmSnapshotListModel;
-import org.ovirt.engine.ui.uicompat.Event;
-import org.ovirt.engine.ui.uicompat.EventArgs;
-import org.ovirt.engine.ui.uicompat.IEventListener;
 
-import com.google.gwt.dom.client.Style.Position;
-import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.user.client.ui.ScrollPanel;
-import com.google.gwt.user.client.ui.TabLayoutPanel;
-import com.google.gwt.view.client.NoSelectionModel;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 public class VmSnapshotInfoPanel extends TabLayoutPanel {
 
@@ -43,20 +36,16 @@
     private final CommonApplicationMessages messages;
     private final CommonApplicationTemplates templates;
 
-    private VmSnapshotListModel vmSnapshotListModel;
-
     private VmSnapshotInfoGeneral generalForm;
     private EntityModelCellTable<ListModel> disksTable;
     private EntityModelCellTable<ListModel> nicsTable;
     private EntityModelCellTable<ListModel> appsTable;
 
-    public VmSnapshotInfoPanel(VmSnapshotListModel vmSnapshotListModel,
-            CommonApplicationConstants constants,
+    public VmSnapshotInfoPanel(CommonApplicationConstants constants,
             CommonApplicationMessages messages,
             CommonApplicationTemplates templates) {
         super(20, Unit.PX);
 
-        this.vmSnapshotListModel = vmSnapshotListModel;
         this.constants = constants;
         this.messages = messages;
         this.templates = templates;
@@ -80,21 +69,13 @@
         add(new ScrollPanel(appsTable), constants.applicationsLabel());
     }
 
-    public void updatePanel(Snapshot snapshot) {
-        HashMap<Guid, SnapshotModel> snapshotsMap = 
vmSnapshotListModel.getSnapshotsMap();
-        Guid snapshotId = snapshot != null ? snapshot.getId() : null;
-        final SnapshotModel snapshotModel = snapshotsMap.get(snapshotId);
-
-        updateTabsData(snapshotModel);
-
-        if (!(Boolean) snapshotModel.getIsPropertiesUpdated().getEntity()) {
-            
snapshotModel.getIsPropertiesUpdated().getEntityChangedEvent().addListener(new 
IEventListener() {
-                @Override
-                public void eventRaised(Event ev, Object sender, EventArgs 
args) {
-                    updateTabsData(snapshotModel);
-                }
-            });
-        }
+    public void updatePanel(final SnapshotModel snapshotModel) {
+        snapshotModel.updateVmConfiguration(new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                updateTabsData(snapshotModel);
+            }
+        });
     }
 
     private void addStyle() {
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 3ce4bf7..c452fe3 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
@@ -1,38 +1,36 @@
 package org.ovirt.engine.ui.common.widget.uicommon.vm;
 
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
-import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.queries.CommandVersionsInfo;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
+import org.ovirt.engine.core.compat.Guid;
 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.system.ClientStorage;
 import org.ovirt.engine.ui.common.uicommon.model.DataBoundTabModelProvider;
 import org.ovirt.engine.ui.common.widget.action.UiCommandButtonDefinition;
-import org.ovirt.engine.ui.common.widget.table.OrderedMultiSelectionModel;
 import org.ovirt.engine.ui.common.widget.table.SimpleActionTable;
 import 
org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
 import 
org.ovirt.engine.ui.common.widget.uicommon.snapshot.SnapshotsViewColumns;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
+import org.ovirt.engine.ui.uicommonweb.models.vms.SnapshotModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmSnapshotListModel;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.view.client.CellPreviewEvent;
-import com.google.gwt.view.client.DefaultSelectionEventManager;
-import com.google.gwt.view.client.DefaultSelectionEventManager.EventTranslator;
-import com.google.gwt.view.client.DefaultSelectionEventManager.SelectAction;
+import java.util.HashMap;
 
 public class VmSnapshotListModelTable<L extends VmSnapshotListModel> extends 
AbstractModelBoundTableWidget<Snapshot, L> {
 
@@ -66,7 +64,7 @@
         snapshotsTableContainer.add(table);
 
         // Create Snapshot information tab panel
-        vmSnapshotInfoPanel = new VmSnapshotInfoPanel(getModel(), constants, 
messages, templates);
+        vmSnapshotInfoPanel = new VmSnapshotInfoPanel(constants, messages, 
templates);
         snapshotInfoContainer.add(vmSnapshotInfoPanel);
     }
 
@@ -78,9 +76,9 @@
     @Override
     public void initTable(final CommonApplicationConstants constants) {
         getTable().enableColumnResizing();
+        getTable().setMultiSelectionDisabled(true);
 
         initActionButtons(constants);
-        disableActiveSnapshotRow();
         getModel().getEntityChangedEvent().addListener(new IEventListener() {
             @Override
             public void eventRaised(Event ev, Object sender, EventArgs args) {
@@ -92,13 +90,30 @@
         getModel().getSelectedItemChangedEvent().addListener(new 
IEventListener() {
             @Override
             public void eventRaised(Event ev, Object sender, EventArgs args) {
-                Snapshot snapshot = (Snapshot) getModel().getSelectedItem();
-                if (snapshot != null && 
!getTable().getSelectionModel().isSelected(snapshot)) {
-                    getTable().getSelectionModel().setSelected(snapshot, true);
-                }
-                vmSnapshotInfoPanel.updatePanel(snapshot);
+                updateSnapshotInfo();
             }
         });
+    }
+
+    private void updateSnapshotInfo() {
+        final Snapshot snapshot = (Snapshot) getModel().getSelectedItem();
+        if (snapshot == null) {
+            return;
+        }
+
+        HashMap<Guid, SnapshotModel> snapshotsMap = 
getModel().getSnapshotsMap();
+        SnapshotModel snapshotModel = snapshotsMap.get(snapshot.getId());
+        vmSnapshotInfoPanel.updatePanel(snapshotModel != null ? snapshotModel 
: new SnapshotModel());
+
+        if (!getTable().getSelectionModel().isSelected(snapshot)) {
+            // first let list of items get updated, only then select item
+            Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
+                @Override
+                public void execute() {
+                    getTable().getSelectionModel().setSelected(snapshot, true);
+                }
+            });
+        }
     }
 
     private void updateMemoryColumnVisibility() {
@@ -175,32 +190,6 @@
                 }
             }
         });
-    }
-
-    private void disableActiveSnapshotRow() {
-        // Create a selection event manager (to disable 'current' snapshot 
selection)
-        DefaultSelectionEventManager<Snapshot> selectionEventManager =
-                DefaultSelectionEventManager.createCustomManager(new 
EventTranslator<Snapshot>() {
-                    @Override
-                    public boolean 
clearCurrentSelection(CellPreviewEvent<Snapshot> event) {
-                        return true;
-                    }
-
-                    @Override
-                    public SelectAction 
translateSelectionEvent(CellPreviewEvent<Snapshot> event) {
-                        if (event.getValue().getType() == SnapshotType.ACTIVE) 
{
-                            return SelectAction.IGNORE;
-                        }
-
-                        return SelectAction.DEFAULT;
-                    }
-                });
-
-        // Set selection mode, disable multiselection and first row ('current' 
snapshot)
-        OrderedMultiSelectionModel<Snapshot> selectionModel = 
getTable().getSelectionModel();
-        selectionModel.setDisabledRows(0);
-        getTable().setTableSelectionModel(selectionModel, 
selectionEventManager);
-        getTable().setMultiSelectionDisabled(true);
     }
 
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
index ef78c0f..97e724d 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
@@ -121,18 +121,6 @@
         memory = value;
     }
 
-    private EntityModel isPropertiesUpdated;
-
-    public EntityModel getIsPropertiesUpdated()
-    {
-        return isPropertiesUpdated;
-    }
-
-    public void setIsPropertiesUpdated(EntityModel value)
-    {
-        isPropertiesUpdated = value;
-    }
-
     private boolean validateByVmSnapshots;
 
     public boolean isValidateByVmSnapshots() {
@@ -171,9 +159,6 @@
         setDisks(new ArrayList<DiskImage>());
         setNics(new ArrayList<VmNetworkInterface>());
         setApps(new ArrayList<String>());
-
-        setIsPropertiesUpdated(new EntityModel());
-        getIsPropertiesUpdated().setEntity(false);
     }
 
     @Override
@@ -227,7 +212,7 @@
         }), vm.getId());
     }
 
-    public void updateVmConfiguration()
+    public void updateVmConfiguration(final INewAsyncCallback 
onUpdateAsyncCallback)
     {
         Snapshot snapshot = ((Snapshot) getEntity());
 
@@ -244,9 +229,9 @@
                     snapshotModel.setNics(vm.getInterfaces());
                     snapshotModel.setApps(Arrays.asList(snapshot.getAppList() 
!= null ?
                             snapshot.getAppList().split(",") : new String[] 
{})); //$NON-NLS-1$
-
-                    snapshotModel.getIsPropertiesUpdated().setEntity(true);
                 }
+
+                onUpdateAsyncCallback.onSuccess(snapshotModel, null);
             }
         }), snapshot.getId());
     }
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 e03905a..4c23c4e 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
@@ -21,7 +21,6 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
-import org.ovirt.engine.core.common.businessentities.VolumeType;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
@@ -197,8 +196,6 @@
         }
     }
 
-    private boolean isEntityChanged;
-
     public VmSnapshotListModel()
     {
         
setTitle(ConstantsManager.getInstance().getConstants().snapshotsTitle());
@@ -215,7 +212,6 @@
         getCanSelectSnapshot().setEntity(true);
 
         setSnapshotsMap(new HashMap<Guid, SnapshotModel>());
-        getSnapshotsMap().put(null, new SnapshotModel());
 
         if (getCustomPropertiesKeysList() == null) {
             AsyncDataProvider.getCustomPropertiesList(new AsyncQuery(this,
@@ -259,10 +255,10 @@
 
         super.setItems(sortedSnapshots);
 
-        if (isEntityChanged && sortedSnapshots.size() > 1) {
-            setSelectedItem(sortedSnapshots.get(1));
+        // Try to select the last created snapshot (fallback to active 
snapshot)
+        if (getSelectedItem() == null) {
+            setSelectedItem(sortedSnapshots.size() > 1 ? 
sortedSnapshots.get(1) : sortedSnapshots.get(0));
         }
-        isEntityChanged = false;
 
         updateActionAvailability();
     }
@@ -282,7 +278,6 @@
 
         if (getEntity() != null)
         {
-            isEntityChanged = true;
             getSearchCommand().execute();
         }
     }
@@ -304,11 +299,6 @@
     {
         super.onSelectedItemChanged();
         updateActionAvailability();
-
-        if (getSelectedItem() != null) {
-            Snapshot snapshot = ((Snapshot) getSelectedItem());
-            updateVmConfigurationBySnapshot(snapshot.getId());
-        }
     }
 
     @Override
@@ -742,12 +732,6 @@
             }
         }
         return null;
-    }
-
-    public void updateVmConfigurationBySnapshot(Guid snapshotId)
-    {
-        SnapshotModel snapshotModel = snapshotsMap.get(snapshotId);
-        snapshotModel.updateVmConfiguration();
     }
 
     protected void updateIsCloneVmSupported()


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

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