Alexander Wels has uploaded a new change for review.

Change subject: userportal,webadmin: new VM cluster combo
......................................................................

userportal,webadmin: new VM cluster combo

- Replaced the new VM cluster/datacenter combo with the same one
  that is now in the new host popup.

Change-Id: I089f75c5bef942f7666224293ea91dff4793f22a
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=865810
Signed-off-by: Alexander Wels <[email protected]>
---
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/editor/GroupedListModelListBox.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DataCenterWithCluster.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml
7 files changed, 94 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/41950/1

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 d39e6df..295e2ff 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
@@ -127,9 +127,6 @@
     @DefaultMessage("cluster")
     String consoleOverrideDefinedOnCluster();
 
-    @DefaultMessage("Data Center: {0}")
-    String hostDataCenter(String storagePoolName);
-
     @DefaultMessage("global configuration")
     String consoleOverrideDefinedInGlobalConfig();
 
@@ -191,4 +188,7 @@
 
     @DefaultMessage("{0}: {1}")
     String migratingProgress(String status, String progress);
+
+    @DefaultMessage("Data Center: {0}")
+    String hostDataCenter(String name);
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.java
index 128cc44..d75f3e3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.java
@@ -32,7 +32,9 @@
 public abstract class GroupedListModelListBox<T> extends ListModelListBox<T> {
     interface Style extends CssResource {
         String container();
+        String container_legacy();
         String listBox();
+        String listBoxPatternfly();
         String labelContainer();
     }
 
@@ -149,15 +151,20 @@
     }
 
     public void setUsePatternFly(boolean usePatternFly) {
+        getWidget().addStyleName(style.listBox());
         if (usePatternFly) {
             container.addStyleName(Styles.FORM_CONTROL);
             container.addStyleName(style.container());
-            getWidget().addStyleName(style.listBox());
+            getWidget().addStyleName(style.listBoxPatternfly());
             groupLabelContainer.addStyleName(style.labelContainer());
+        } else {
+            container.addStyleName(style.container_legacy());
         }
     }
 
     private void updateGroupLabel() {
-        
groupLabel.setText(getGroupLabel(selectableObjects.get(getListBox().getSelectedIndex())));
+        if (selectableObjects.size() > getListBox().getSelectedIndex() && 
getListBox().getSelectedIndex() >= 0) {
+            
groupLabel.setText(getGroupLabel(selectableObjects.get(getListBox().getSelectedIndex())));
+        }
     }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.ui.xml
index 05619ba..a37d7dd 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GroupedListModelListBox.ui.xml
@@ -10,8 +10,13 @@
             padding: 0px;
         }
 
+        .container_legacy {
+            margin-bottom: 10px;
+        }
+
         .labelContainer_legacy {
             text-align: left;
+            border: none;
         }
 
         .labelContainer {
@@ -20,8 +25,11 @@
             font-style: italic;
         }
 
-        .listBox {
+        .listBoxPatternfly {
             height: 21px;
+        }
+
+        .listBox {
             width: 100%;
             border: none;
         }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index 035e68c..b09dec3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -6,9 +6,13 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
 
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.ConsoleDisconnectAction;
@@ -31,7 +35,6 @@
 import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
 import org.ovirt.engine.core.common.businessentities.storage.ImageStatus;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
-import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationMessages;
@@ -50,6 +53,8 @@
 import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTab;
 import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTabPanel;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
+import org.ovirt.engine.ui.common.widget.editor.GroupedListModelListBox;
+import org.ovirt.engine.ui.common.widget.editor.GroupedListModelListBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.IconEditorWidget;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxOnlyEditor;
@@ -174,7 +179,7 @@
     @UiField(provided = true)
     @Path(value = "dataCenterWithClustersList.selectedItem")
     @WithElementId("dataCenterWithCluster")
-    public ListModelTypeAheadListBoxEditor<DataCenterWithCluster> 
dataCenterWithClusterEditor;
+    public GroupedListModelListBoxEditor<DataCenterWithCluster> 
dataCenterWithClusterEditor;
 
     @UiField(provided = true)
     @Path(value = "quota.selectedItem")
@@ -1150,29 +1155,68 @@
     @SuppressWarnings({ "rawtypes", "unchecked" })
     private void initListBoxEditors() {
         // General tab
-        dataCenterWithClusterEditor = new 
ListModelTypeAheadListBoxEditor<DataCenterWithCluster>(
-                new 
ListModelTypeAheadListBoxEditor.NullSafeSuggestBoxRenderer<DataCenterWithCluster>()
 {
-
-                    @Override
-                    public String 
getReplacementStringNullSafe(DataCenterWithCluster data) {
-                        return data.getCluster().getName() + "/" //$NON-NLS-1$
-                                + data.getDataCenter().getName();
+        dataCenterWithClusterEditor = new GroupedListModelListBoxEditor<>(
+                new GroupedListModelListBox<DataCenterWithCluster>(new 
NameRenderer<DataCenterWithCluster>()) {
+            @Override
+            public SortedMap<String, List<DataCenterWithCluster>> 
getGroupedList(List<DataCenterWithCluster> acceptableValues) {
+                SortedMap<String, List<DataCenterWithCluster>> result = new 
TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+                Collections.sort(acceptableValues, new 
DataCenterWithClusterComparator());
+                String currentDataCenter = null;
+                List<DataCenterWithCluster> currentClusterWithDcList = null;
+                for (DataCenterWithCluster clusterWithDc: acceptableValues) {
+                    if (currentDataCenter == null || !currentDataCenter.equals(
+                            clusterWithDc.getDataCenter().getName())) {
+                        currentClusterWithDcList = new ArrayList<>();
+                        currentDataCenter = 
clusterWithDc.getDataCenter().getName();
+                        if (currentDataCenter != null) {
+                            result.put(currentDataCenter, 
currentClusterWithDcList);
+                        }
+                     }
+                    if (currentClusterWithDcList != null) {
+                        currentClusterWithDcList.add(clusterWithDc);
                     }
+                }
+                return result;
+            }
 
-                    @Override
-                    public String 
getDisplayStringNullSafe(DataCenterWithCluster data) {
-                        String dcDescription =
-                                data.getDataCenter().getdescription();
+            @Override
+            public String getModelLabel(DataCenterWithCluster model) {
+                return model.getCluster().getName();
+            }
 
-                        return typeAheadNameDescriptionTemplateNullSafe(
-                                data.getCluster().getName(),
-                                !StringHelper.isNullOrEmpty(dcDescription) ? 
dcDescription
-                                        : data.getDataCenter().getName()
-                        );
-                    }
+            @Override
+            public String getGroupLabel(DataCenterWithCluster model) {
+                return 
messages.hostDataCenter(model.getDataCenter().getName());
+            }
 
-                },
-                new ModeSwitchingVisibilityRenderer());
+            /**
+             * Comparator that sorts on data center name first, and then 
cluster name. Ignoring case.
+             */
+            final class DataCenterWithClusterComparator implements 
Comparator<DataCenterWithCluster> {
+
+                 @Override
+                 public int compare(DataCenterWithCluster clusterWithDc1, 
DataCenterWithCluster clusterWithDc2) {
+                     if (clusterWithDc1.getDataCenter().getName() != null
+                             && clusterWithDc2.getDataCenter().getName() == 
null) {
+                         return -1;
+                     } else if (clusterWithDc2.getDataCenter().getName() != 
null
+                             && clusterWithDc1.getDataCenter().getName() == 
null) {
+                         return 1;
+                     } else if (clusterWithDc1.getDataCenter().getName() == 
null
+                             && clusterWithDc2.getDataCenter().getName() == 
null) {
+                         return 0;
+                     }
+                     if 
(clusterWithDc1.getDataCenter().getName().equals(clusterWithDc2.getDataCenter().getName()))
 {
+                         return 
clusterWithDc1.getCluster().getName().compareToIgnoreCase(
+                                 clusterWithDc2.getCluster().getName());
+                     } else {
+                         return 
clusterWithDc1.getDataCenter().getName().compareToIgnoreCase(
+                                 clusterWithDc2.getDataCenter().getName());
+                     }
+                 }
+             }
+
+        });
 
         quotaEditor = new ListModelTypeAheadListBoxEditor<Quota>(
                 new 
ListModelTypeAheadListBoxEditor.NullSafeSuggestBoxRenderer<Quota>() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
index 4d5fe29..94c4bd7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
@@ -437,7 +437,7 @@
     <t:DialogTabPanel width="100%" height="100%" ui:field="mainTabPanel">
         <t:header>
             <g:FlowPanel addStyleNames="{style.headerPanel}">
-                <e:ListModelTypeAheadListBoxEditor 
ui:field="dataCenterWithClusterEditor" />
+                <e:GroupedListModelListBoxEditor 
ui:field="dataCenterWithClusterEditor" />
                 <e:ListModelTypeAheadListBoxEditor ui:field="quotaEditor" />
                 <e:ListModelTypeAheadListBoxEditor 
ui:field="baseTemplateEditor"/>
                 <e:ListModelTypeAheadListBoxEditor 
ui:field="templateWithVersionEditor" />
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DataCenterWithCluster.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DataCenterWithCluster.java
index d4d1631..9608dbe 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DataCenterWithCluster.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DataCenterWithCluster.java
@@ -1,9 +1,10 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
+import org.ovirt.engine.core.common.businessentities.Nameable;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 
-public class DataCenterWithCluster {
+public class DataCenterWithCluster implements Nameable {
 
     private StoragePool dataCenter;
 
@@ -29,4 +30,9 @@
     public VDSGroup getCluster() {
         return cluster;
     }
+
+    @Override
+    public String getName() {
+        return getCluster().getName();
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml
index a5e570a..e5abbad 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml
@@ -8,7 +8,6 @@
              
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
              xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
              xmlns:p="urn:import:org.ovirt.engine.ui.webadmin.widget.provider"
-             xmlns:we="urn:import:org.ovirt.engine.ui.webadmin.widget.editor"
              xmlns:b="urn:import:org.gwtbootstrap3.client.ui">
 
     <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants'/>


-- 
To view, visit https://gerrit.ovirt.org/41950
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I089f75c5bef942f7666224293ea91dff4793f22a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to