Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Render Network/Clusters subtab columns sortable
......................................................................

webadmin: Render Network/Clusters subtab columns sortable

Implemented client-side sorting for the aforementioned subtab.

Change-Id: Ia45d28e7e4be04f60a0c5c8bc83a677bba463c86
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
5 files changed, 106 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/28326/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java
index 5c0e20f..ce7d2a7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java
@@ -11,10 +11,9 @@
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.cellview.client.Column;
 import com.google.gwt.view.client.CellPreviewEvent;
 
-public abstract class CheckboxColumn<T> extends Column<T, Boolean> {
+public abstract class CheckboxColumn<T> extends SortableColumn<T, Boolean> {
 
     private boolean isCentralized = false;
     private boolean multipleSelectionAllowed = true;
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java
index f204f9f..4440337 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java
@@ -8,7 +8,6 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.cellview.client.Column;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 
 /**
@@ -17,7 +16,7 @@
  * @param <T>
  *            Table row data type.
  */
-public abstract class ImageResourceColumn<T> extends Column<T, ImageResource> {
+public abstract class ImageResourceColumn<T> extends SortableColumn<T, 
ImageResource> {
 
     private static final CommonApplicationResources RESOURCES = 
GWT.create(CommonApplicationResources.class);
     protected static final CommonApplicationConstants CONSTANTS = 
GWT.create(CommonApplicationConstants.class);
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java
index d439923..4531bcc 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java
@@ -10,9 +10,8 @@
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.user.cellview.client.Column;
 
-public abstract class SafeHtmlWithSafeHtmlTooltipColumn<T> extends Column<T, 
SafeHtml>{
+public abstract class SafeHtmlWithSafeHtmlTooltipColumn<T> extends 
SortableColumn<T, SafeHtml>{
 
     private final TooltipPanel tooltipPanel = new TooltipPanel();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java
new file mode 100644
index 0000000..05e7a7f
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java
@@ -0,0 +1,93 @@
+package org.ovirt.engine.ui.uicommonweb.comparators;
+
+import java.util.Comparator;
+
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
+import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
+import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
+import org.ovirt.engine.core.common.utils.PairQueryable;
+
+public class NetworkClusterComparator {
+
+    public static class ByName implements Comparator<PairQueryable<VDSGroup, 
NetworkCluster>> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            return lexoNumeric.compare(arg0.getFirst().getName(), 
arg1.getFirst().getName());
+        }
+    }
+
+    public static class ByDescription implements 
Comparator<PairQueryable<VDSGroup, NetworkCluster>> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            return lexoNumeric.compare(arg0.getFirst().getdescription(), 
arg1.getFirst().getdescription());
+        }
+    }
+
+    public static class ByVersion implements 
Comparator<PairQueryable<VDSGroup, NetworkCluster>> {
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            return 
arg0.getFirst().getcompatibility_version().compareTo(arg1.getFirst().getcompatibility_version());
+        }
+    }
+
+    public static class ByAttachment implements 
Comparator<PairQueryable<VDSGroup, NetworkCluster>> {
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            boolean attached1 = arg0.getSecond() != null;
+            boolean attached2 = arg1.getSecond() != null;
+            if (attached1 == attached2) {
+                return 0;
+            } else {
+                return attached1 ? 1 : -1;
+            }
+        }
+    }
+
+    public static class ByStatus implements Comparator<PairQueryable<VDSGroup, 
NetworkCluster>> {
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            if (arg0.getSecond().getStatus() == arg1.getSecond().getStatus()) {
+                return 0;
+            } else {
+                return (arg0.getSecond().getStatus() == 
NetworkStatus.OPERATIONAL) ? 1 : -1;
+            }
+        }
+    }
+
+    public static class ByRequirement implements 
Comparator<PairQueryable<VDSGroup, NetworkCluster>> {
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            if (arg0.getSecond().isRequired() == 
arg1.getSecond().isRequired()) {
+                return 0;
+            } else {
+                return arg0.getSecond().isRequired() ? 1 : -1;
+            }
+        }
+    }
+
+    public static class ByRole implements Comparator<PairQueryable<VDSGroup, 
NetworkCluster>> {
+
+        @Override
+        public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, 
PairQueryable<VDSGroup, NetworkCluster> arg1) {
+            if (arg0.getSecond().isMigration() != 
arg1.getSecond().isMigration()) {
+                return arg0.getSecond().isMigration() ? 1 : -1;
+            } else if (arg0.getSecond().isDisplay() != 
arg1.getSecond().isDisplay()) {
+                return arg0.getSecond().isDisplay() ? 1 : -1;
+            } else {
+                return 0;
+            }
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
index f365fd1..65e495c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
@@ -14,6 +14,7 @@
 import 
org.ovirt.engine.ui.common.widget.table.column.SafeHtmlWithSafeHtmlTooltipColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.NetworkClusterComparator;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -35,7 +36,6 @@
         implements SubTabNetworkClusterPresenter.ViewDef {
 
     private final ApplicationConstants constants;
-    private final ApplicationTemplates templates;
 
     private final SafeHtml displayImage;
     private final SafeHtml migrationImage;
@@ -45,7 +45,6 @@
     public 
SubTabNetworkClusterView(SearchableDetailModelProvider<PairQueryable<VDSGroup, 
NetworkCluster>, NetworkListModel, NetworkClusterListModel> modelProvider, 
ApplicationConstants constants, ApplicationTemplates templates, 
ApplicationResources resources) {
         super(modelProvider);
         this.constants = constants;
-        this.templates = templates;
         displayImage =
                 
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.networkMonitor()).getHTML());
         migrationImage =
@@ -64,6 +63,7 @@
                 return object.getFirst().getName();
             }
         };
+        nameColumn.makeSortable(new NetworkClusterComparator.ByName());
         getTable().addColumn(nameColumn, constants.nameCluster(), "400px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>> 
versionColumn = new TextColumnWithTooltip<PairQueryable<VDSGroup, 
NetworkCluster>>() {
@@ -72,6 +72,7 @@
                 return object.getFirst().getcompatibility_version().getValue();
             }
         };
+        versionColumn.makeSortable(new NetworkClusterComparator.ByVersion());
         getTable().addColumn(versionColumn, constants.comptVersCluster(), 
"130px"); //$NON-NLS-1$
 
         CheckboxColumn<PairQueryable<VDSGroup, NetworkCluster>> attachedColumn 
=
@@ -86,10 +87,12 @@
                 return false;
             }
         };
-
+        attachedColumn.makeSortable(new 
NetworkClusterComparator.ByAttachment());
         getTable().addColumn(attachedColumn, 
constants.attachedNetworkCluster(), "120px"); //$NON-NLS-1$
 
-        getTable().addColumn(new NetworkClusterStatusColumn(), 
constants.networkStatus(), "120px"); //$NON-NLS-1$
+        NetworkClusterStatusColumn statusColumn = new 
NetworkClusterStatusColumn();
+        statusColumn.makeSortable(new NetworkClusterComparator.ByStatus());
+        getTable().addColumn(statusColumn, constants.networkStatus(), 
"120px"); //$NON-NLS-1$
 
         CheckboxColumn<PairQueryable<VDSGroup, NetworkCluster>> 
netRequiredColumn =
                 new CheckboxColumn<PairQueryable<VDSGroup, 
NetworkCluster>>(true) {
@@ -106,6 +109,7 @@
                 return false;
             }
         };
+        netRequiredColumn.makeSortable(new 
NetworkClusterComparator.ByRequirement());
         getTable().addColumn(netRequiredColumn, 
constants.requiredNetCluster(), "120px"); //$NON-NLS-1$
 
         SafeHtmlWithSafeHtmlTooltipColumn<PairQueryable<VDSGroup, 
NetworkCluster>> netRoleColumn =
@@ -148,7 +152,7 @@
                         return 
NetworkRoleColumnHelper.getTooltip(imagesToText);
                     }
                 };
-
+        netRoleColumn.makeSortable(new NetworkClusterComparator.ByRole());
         getTable().addColumn(netRoleColumn, constants.roleNetCluster(), 
"120px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>> 
dsecriptionColumn = new TextColumnWithTooltip<PairQueryable<VDSGroup, 
NetworkCluster>>() {
@@ -157,6 +161,7 @@
                 return object.getFirst().getdescription();
             }
         };
+        dsecriptionColumn.makeSortable(new 
NetworkClusterComparator.ByDescription());
         getTable().addColumn(dsecriptionColumn, 
constants.descriptionCluster(), "400px"); //$NON-NLS-1$
 
         getTable().addActionButton(new 
WebAdminButtonDefinition<PairQueryable<VDSGroup, 
NetworkCluster>>(constants.assignUnassignNetwork()) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia45d28e7e4be04f60a0c5c8bc83a677bba463c86
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <lver...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to