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
