Lior Vernia has uploaded a new change for review. Change subject: webadmin: Render vNIC Profile tabs columns sortable ......................................................................
webadmin: Render vNIC Profile tabs columns sortable Since the main tab doesn't currently support server-side sorting, both were implemented as client-side sorting. Change-Id: Ib9b6d41a5987be65e47ce90b4c7acbadfba6e9d1 Signed-off-by: Lior Vernia <[email protected]> --- A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java 5 files changed, 109 insertions(+), 30 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/28290/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java new file mode 100644 index 0000000..4680c52 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java @@ -0,0 +1,80 @@ +package org.ovirt.engine.ui.uicommonweb.comparators; + +import java.util.Comparator; + +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; +import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; + +public class VnicProfileComparator { + + public static class ByName implements Comparator<VnicProfileView> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return lexoNumeric.compare(o1.getName(), o2.getName()); + } + } + + public static class ByDescription implements Comparator<VnicProfileView> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return lexoNumeric.compare(o1.getDescription(), o2.getDescription()); + } + } + + public static class ByNetwork implements Comparator<VnicProfileView> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return lexoNumeric.compare(o1.getNetworkName(), o2.getNetworkName()); + } + } + + public static class ByDataCenter implements Comparator<VnicProfileView> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return lexoNumeric.compare(o1.getDataCenterName(), o2.getDataCenterName()); + } + } + + public static class ByVersion implements Comparator<VnicProfileView> { + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return o1.getCompatibilityVersion().compareTo(o2.getCompatibilityVersion()); + } + } + + public static class ByQos implements Comparator<VnicProfileView> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + return lexoNumeric.compare(o1.getNetworkQosName(), o2.getNetworkQosName()); + } + } + + public static class ByPortMirroring implements Comparator<VnicProfileView> { + + @Override + public int compare(VnicProfileView o1, VnicProfileView o2) { + if (o1.isPortMirroring() == o2.isPortMirroring()) { + return 0; + } else { + return o1.isPortMirroring() ? 1 : -1; + } + } + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java index 44691f5..17b16ba 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java @@ -2,16 +2,13 @@ import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.List; - import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkView; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.INewAsyncCallback; -import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; @@ -22,7 +19,6 @@ import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; -@SuppressWarnings("unused") public class NetworkProfileListModel extends SearchableListModel { private UICommand newCommand; @@ -33,6 +29,7 @@ setTitle(ConstantsManager.getInstance().getConstants().vnicProfilesTitle()); setHelpTag(HelpTag.profiles); setHashName("profiles"); //$NON-NLS-1$ + setComparator(new VnicProfileComparator.ByName()); setNewCommand(new UICommand("New", this)); //$NON-NLS-1$ setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$ @@ -149,7 +146,7 @@ asyncQuery.asyncCallback = new INewAsyncCallback() { @Override public void onSuccess(Object model, Object returnValue) { - NetworkProfileListModel.this.setItems((List<VnicProfileView>) returnValue); + setItems((Collection<VnicProfileView>) returnValue); } }; AsyncDataProvider.getVnicProfilesByNetworkId(asyncQuery, getEntity().getId()); @@ -182,14 +179,6 @@ protected void selectedItemsChanged() { super.selectedItemsChanged(); updateActionAvailability(); - } - - @Override - public void setItems(Collection value) { - if (value != null) { - Collections.sort((List<VnicProfileView>) value, new Linq.VnicProfileViewComparator()); - } - super.setItems(value); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java index c075987..0f2dbc8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java @@ -2,8 +2,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -19,6 +17,7 @@ import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.CommonModel; @@ -45,6 +44,7 @@ setTitle(ConstantsManager.getInstance().getConstants().vnicProfilesTitle()); setHelpTag(HelpTag.vnicProfiles); setHashName("vnicProfiles"); //$NON-NLS-1$ + setComparator(new VnicProfileComparator.ByName()); setDefaultSearchString("VnicProfile:"); //$NON-NLS-1$ setSearchString(getDefaultSearchString()); @@ -295,14 +295,6 @@ @Override public VnicProfileView getEntity() { return (VnicProfileView) super.getEntity(); - } - - @Override - public void setItems(Collection value) { - if (value != null) { - Collections.sort((List<VnicProfileView>) value, new Linq.VnicProfileViewComparator()); - } - super.setItems(value); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java index 40829d1..c9e9e32 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java @@ -6,6 +6,7 @@ import org.ovirt.engine.ui.common.widget.table.column.BooleanColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator; import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; @@ -45,6 +46,7 @@ return object.getName(); } }; + nameColumn.makeSortable(new VnicProfileComparator.ByName()); getTable().addColumn(nameColumn, constants.nameVnicProfile(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> networkColumn = new TextColumnWithTooltip<VnicProfileView>() { @@ -53,6 +55,7 @@ return object.getNetworkName(); } }; + networkColumn.makeSortable(new VnicProfileComparator.ByNetwork()); getTable().addColumn(networkColumn, constants.networkVnicProfile(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> dcColumn = new TextColumnWithTooltip<VnicProfileView>() { @@ -61,6 +64,7 @@ return object.getDataCenterName(); } }; + dcColumn.makeSortable(new VnicProfileComparator.ByDataCenter()); getTable().addColumn(dcColumn, constants.dcVnicProfile(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> compatibilityVersionColumn = @@ -70,20 +74,17 @@ return object.getCompatibilityVersion().toString(); } }; + compatibilityVersionColumn.makeSortable(new VnicProfileComparator.ByVersion()); getTable().addColumn(compatibilityVersionColumn, constants.compatibilityVersionVnicProfile(), "200px"); //$NON-NLS-1$ + TextColumnWithTooltip<VnicProfileView> qosColumn = new TextColumnWithTooltip<VnicProfileView>() { @Override public String getValue(VnicProfileView object) { return object.getNetworkQosName(); } }; + qosColumn.makeSortable(new VnicProfileComparator.ByQos()); getTable().addColumn(qosColumn, constants.qosNameVnicProfile(), "200px"); //$NON-NLS-1$ - TextColumnWithTooltip<VnicProfileView> descriptionColumn = new TextColumnWithTooltip<VnicProfileView>() { - @Override - public String getValue(VnicProfileView object) { - return object.getDescription(); - } - }; BooleanColumn<VnicProfileView> portMirroringColumn = new BooleanColumn<VnicProfileView>(constants.portMirroringEnabled()) { @@ -92,8 +93,16 @@ return object.isPortMirroring(); } }; + portMirroringColumn.makeSortable(new VnicProfileComparator.ByPortMirroring()); getTable().addColumnWithHtmlHeader(portMirroringColumn, constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$ + TextColumnWithTooltip<VnicProfileView> descriptionColumn = new TextColumnWithTooltip<VnicProfileView>() { + @Override + public String getValue(VnicProfileView object) { + return object.getDescription(); + } + }; + descriptionColumn.makeSortable(new VnicProfileComparator.ByDescription()); getTable().addColumn(descriptionColumn, constants.descriptionVnicProfile(), "400px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<VnicProfileView>(constants.newVnicProfile()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java index 9a113b9..e7fad1d 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java @@ -6,6 +6,7 @@ import org.ovirt.engine.ui.common.widget.table.column.BooleanColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkProfileListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; @@ -36,6 +37,7 @@ return object.getName(); } }; + nameColumn.makeSortable(new VnicProfileComparator.ByName()); getTable().addColumn(nameColumn, constants.nameVnicProfile(), "400px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> networkColumn = new TextColumnWithTooltip<VnicProfileView>() { @@ -44,6 +46,7 @@ return object.getNetworkName(); } }; + networkColumn.makeSortable(new VnicProfileComparator.ByNetwork()); getTable().addColumn(networkColumn, constants.networkVnicProfile(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> dcColumn = new TextColumnWithTooltip<VnicProfileView>() { @@ -52,6 +55,7 @@ return object.getDataCenterName(); } }; + dcColumn.makeSortable(new VnicProfileComparator.ByDataCenter()); getTable().addColumn(dcColumn, constants.dcVnicProfile(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> compatibilityVersionColumn = @@ -61,13 +65,16 @@ return object.getCompatibilityVersion().toString(); } }; + compatibilityVersionColumn.makeSortable(new VnicProfileComparator.ByVersion()); getTable().addColumn(compatibilityVersionColumn, constants.compatibilityVersionVnicProfile(), "200px"); //$NON-NLS-1$ + TextColumnWithTooltip<VnicProfileView> qosColumn = new TextColumnWithTooltip<VnicProfileView>() { @Override public String getValue(VnicProfileView object) { return object.getNetworkQosName(); } }; + qosColumn.makeSortable(new VnicProfileComparator.ByQos()); getTable().addColumn(qosColumn, constants.qosNameVnicProfile(), "200px"); //$NON-NLS-1$ BooleanColumn<VnicProfileView> portMirroringColumn = @@ -77,6 +84,7 @@ return object.isPortMirroring(); } }; + portMirroringColumn.makeSortable(new VnicProfileComparator.ByPortMirroring()); getTable().addColumnWithHtmlHeader(portMirroringColumn, constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$ TextColumnWithTooltip<VnicProfileView> descriptionColumn = @@ -86,6 +94,7 @@ return object.getDescription(); } }; + descriptionColumn.makeSortable(new VnicProfileComparator.ByDescription()); getTable().addColumn(descriptionColumn, constants.descriptionVnicProfile(), "400px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<VnicProfileView>(constants.newNetworkProfile()) { -- To view, visit http://gerrit.ovirt.org/28290 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib9b6d41a5987be65e47ce90b4c7acbadfba6e9d1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
