Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Render Permissions subtab columns sortable
......................................................................

webadmin: Render Permissions subtab columns sortable

Implemented client-side sorting for permissions subtab column.

Change-Id: Ib98e8b1f98d00d06e85fd139cd5b6ef3cb5f8c92
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionListModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionWithInheritedPermissionListModelTable.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/PermissionsComparator.java
3 files changed, 71 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/28666/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionListModelTable.java
index 665fb12..95acead 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionListModelTable.java
@@ -9,6 +9,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import 
org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.PermissionsComparator;
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 
 import com.google.gwt.event.shared.EventBus;
@@ -25,7 +26,9 @@
     public void initTable(CommonApplicationConstants constants) {
         getTable().enableColumnResizing();
 
-        getTable().addColumn(new PermissionTypeColumn(), constants.empty(), 
"30px"); //$NON-NLS-1$
+        PermissionTypeColumn permissionTypeColumn = new PermissionTypeColumn();
+        permissionTypeColumn.makeSortable(new PermissionsComparator.ByType());
+        getTable().addColumn(permissionTypeColumn, constants.empty(), "30px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<Permissions> userColumn = new 
TextColumnWithTooltip<Permissions>() {
             @Override
@@ -33,6 +36,7 @@
                 return object.getOwnerName();
             }
         };
+        userColumn.makeSortable(new PermissionsComparator.ByUser());
         getTable().addColumn(userColumn, constants.userPermission(), "300px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<Permissions> roleColumn = new 
TextColumnWithTooltip<Permissions>() {
@@ -41,6 +45,7 @@
                 return object.getRoleName();
             }
         };
+        roleColumn.makeSortable(new PermissionsComparator.ByRole());
         getTable().addColumn(roleColumn, constants.rolePermission(), "300px"); 
//$NON-NLS-1$
 
         getTable().addActionButton(new 
UiCommandButtonDefinition<Permissions>(getEventBus(), 
constants.addPermission()) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionWithInheritedPermissionListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionWithInheritedPermissionListModelTable.java
index 373fa77..95344ba 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionWithInheritedPermissionListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/permissions/PermissionWithInheritedPermissionListModelTable.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.ObjectNameColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.comparators.PermissionsComparator;
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 
 import com.google.gwt.event.shared.EventBus;
@@ -30,6 +31,7 @@
                 };
             }
         };
+        permissionColumn.makeSortable(new 
PermissionsComparator.ByInheritedPermission(permissionColumn));
         getTable().addColumn(permissionColumn, 
constants.inheritedPermission(), "300px"); //$NON-NLS-1$
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/PermissionsComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/PermissionsComparator.java
new file mode 100644
index 0000000..ba7a7b4
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/PermissionsComparator.java
@@ -0,0 +1,63 @@
+package org.ovirt.engine.ui.uicommonweb.comparators;
+
+import java.util.Comparator;
+
+import org.ovirt.engine.core.common.businessentities.Permissions;
+import org.ovirt.engine.core.common.businessentities.RoleType;
+import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
+
+import com.google.gwt.user.cellview.client.Column;
+
+public class PermissionsComparator {
+
+    public static class ByType implements Comparator<Permissions> {
+
+        @Override
+        public int compare(Permissions arg0, Permissions arg1) {
+            if (arg0.getRoleType() != arg1.getRoleType()) {
+                if (arg0.getRoleType() == RoleType.ADMIN) {
+                    return -1;
+                } else if (arg1.getRoleType() == RoleType.ADMIN) {
+                    return 1;
+                }
+            }
+            return 0;
+        }
+    }
+
+    public static class ByUser implements Comparator<Permissions> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(Permissions arg0, Permissions arg1) {
+            return lexoNumeric.compare(arg0.getOwnerName(), 
arg1.getOwnerName());
+        }
+    }
+
+    public static class ByRole implements Comparator<Permissions> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(Permissions arg0, Permissions arg1) {
+            return lexoNumeric.compare(arg0.getRoleName(), arg1.getRoleName());
+        }
+    }
+
+    public static class ByInheritedPermission implements 
Comparator<Permissions> {
+
+        private final Column<Permissions, String> renderingColumn;
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        public ByInheritedPermission(Column<Permissions, String> column) {
+            this.renderingColumn = column;
+        }
+
+        @Override
+        public int compare(Permissions arg0, Permissions arg1) {
+            return lexoNumeric.compare(renderingColumn.getValue(arg0), 
renderingColumn.getValue(arg1));
+        }
+    }
+
+}


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

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