From 644bdd5a59a5ed5fbf93a0765f92608b0530c16a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 31 Oct 2012 23:16:24 -0400
Subject: [PATCH] Improve transparency of permissions by indicating permission source

---
 src/com/gitblit/client/RegistrantPermissionsPanel.java |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/client/RegistrantPermissionsPanel.java b/src/com/gitblit/client/RegistrantPermissionsPanel.java
index b8ab939..8ae23e9 100644
--- a/src/com/gitblit/client/RegistrantPermissionsPanel.java
+++ b/src/com/gitblit/client/RegistrantPermissionsPanel.java
@@ -19,6 +19,7 @@
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -136,6 +137,12 @@
 				// only remove editable duplicates
 				// this allows for specifying an explicit permission
 				filtered.remove(rp.registrant);
+			} else if (rp.isAdmin()) {
+				// administrators can not have their permission changed
+				filtered.remove(rp.registrant);
+			} else if (rp.isOwner()) {
+				// owners can not have their permission changed
+				filtered.remove(rp.registrant);
 			}
 		}
 		for (String registrant : filtered) {
@@ -172,15 +179,23 @@
 
 		@Override
 		protected void setValue(Object value) {
-			PermissionType pType = (PermissionType) value;
-			switch (pType) {
+			RegistrantAccessPermission ap = (RegistrantAccessPermission) value;
+			switch (ap.permissionType) {
+			case ADMINISTRATOR:
+				setText(ap.source == null ? Translation.get("gb.administrator") : ap.source);
+				setToolTipText(Translation.get("gb.administratorPermission"));
+				break;
 			case OWNER:
-				setText("owner");
+				setText(Translation.get("gb.owner"));
 				setToolTipText(Translation.get("gb.ownerPermission"));
+				break;
+			case TEAM:
+				setText(ap.source == null ? Translation.get("gb.team") : ap.source);
+				setToolTipText(MessageFormat.format(Translation.get("gb.teamPermission"), ap.source));
 				break;
 			case REGEX:
 				setText("regex");
-				setToolTipText(Translation.get("gb.regexPermission"));
+				setToolTipText(MessageFormat.format(Translation.get("gb.regexPermission"), ap.source));
 				break;
 			default:
 				setText("");

--
Gitblit v1.9.1