From 822dfe5d6f1b97b7849bc6fd735ee8c9d1103c19 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 19 Oct 2012 22:47:34 -0400
Subject: [PATCH] Completed permissions UI, RPC, and Manager support (issue 36)

---
 src/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java |   56 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/RepositoryPermissionsPanel.java b/src/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
similarity index 66%
rename from src/com/gitblit/wicket/panels/RepositoryPermissionsPanel.java
rename to src/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
index 3d967d3..936659d 100644
--- a/src/com/gitblit/wicket/panels/RepositoryPermissionsPanel.java
+++ b/src/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
@@ -15,6 +15,7 @@
  */
 package com.gitblit.wicket.panels;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -35,49 +36,48 @@
 import org.apache.wicket.model.IModel;
 
 import com.gitblit.Constants.AccessPermission;
-import com.gitblit.GitBlit;
-import com.gitblit.models.RepositoryAccessPermission;
+import com.gitblit.models.RegistrantAccessPermission;
 import com.gitblit.utils.DeepCopier;
 
 /**
- * Allows user to manipulate repository access permissions.
+ * Allows user to manipulate registrant access permissions.
  * 
  * @author James Moger
  *
  */
-public class RepositoryPermissionsPanel extends BasePanel {
+public class RegistrantPermissionsPanel extends BasePanel {
 
 	private static final long serialVersionUID = 1L;
 
-	public RepositoryPermissionsPanel(String wicketId, final List<RepositoryAccessPermission> permissions, final Map<AccessPermission, String> translations) {
+	public RegistrantPermissionsPanel(String wicketId, List<String> allRegistrants, final List<RegistrantAccessPermission> permissions, final Map<AccessPermission, String> translations) {
 		super(wicketId);
 		
 		// update existing permissions repeater
-		RefreshingView<RepositoryAccessPermission> dataView = new RefreshingView<RepositoryAccessPermission>("permissionRow") {
+		RefreshingView<RegistrantAccessPermission> dataView = new RefreshingView<RegistrantAccessPermission>("permissionRow") {
 			private static final long serialVersionUID = 1L;
 		
 			@Override
-            protected Iterator<IModel<RepositoryAccessPermission>> getItemModels() {
+            protected Iterator<IModel<RegistrantAccessPermission>> getItemModels() {
                 // the iterator returns RepositoryPermission objects, but we need it to
                 // return models
-                return new ModelIteratorAdapter<RepositoryAccessPermission>(permissions.iterator()) {
+                return new ModelIteratorAdapter<RegistrantAccessPermission>(permissions.iterator()) {
                     @Override
-                    protected IModel<RepositoryAccessPermission> model(RepositoryAccessPermission permission) {
-                        return new CompoundPropertyModel<RepositoryAccessPermission>(permission);
+                    protected IModel<RegistrantAccessPermission> model(RegistrantAccessPermission permission) {
+                        return new CompoundPropertyModel<RegistrantAccessPermission>(permission);
                     }
                 };
             }
 
             @Override
-            protected Item<RepositoryAccessPermission> newItem(String id, int index, IModel<RepositoryAccessPermission> model) {
+            protected Item<RegistrantAccessPermission> newItem(String id, int index, IModel<RegistrantAccessPermission> model) {
                 // this item sets markup class attribute to either 'odd' or
                 // 'even' for decoration
-                return new OddEvenItem<RepositoryAccessPermission>(id, index, model);
+                return new OddEvenItem<RegistrantAccessPermission>(id, index, model);
             }
             
-			public void populateItem(final Item<RepositoryAccessPermission> item) {
-				final RepositoryAccessPermission entry = item.getModelObject();
-				item.add(new Label("repository", entry.repository));
+			public void populateItem(final Item<RegistrantAccessPermission> item) {
+				final RegistrantAccessPermission entry = item.getModelObject();
+				item.add(new Label("registrant", entry.registrant));
 
 				// use ajax to get immediate update of permission level change
 				// otherwise we can lose it if they change levels and then add
@@ -99,16 +99,16 @@
 		add(dataView);
 		setOutputMarkupId(true);
 
-		// filter out repositories we already have permissions for
-		final List<String> repositories = GitBlit.self().getRepositoryList();
-		for (RepositoryAccessPermission rp : permissions) {
-			repositories.remove(rp.repository);
+		// filter out registrants we already have permissions for
+		final List<String> registrants = new ArrayList<String>(allRegistrants);
+		for (RegistrantAccessPermission rp : permissions) {
+			registrants.remove(rp.registrant);
 		}
 
 		// add new permission form
-		IModel<RepositoryAccessPermission> addPermissionModel = new CompoundPropertyModel<RepositoryAccessPermission>(new RepositoryAccessPermission());
-		Form<RepositoryAccessPermission> addPermissionForm = new Form<RepositoryAccessPermission>("addPermissionForm", addPermissionModel);
-		addPermissionForm.add(new DropDownChoice<String>("repository", repositories));
+		IModel<RegistrantAccessPermission> addPermissionModel = new CompoundPropertyModel<RegistrantAccessPermission>(new RegistrantAccessPermission());
+		Form<RegistrantAccessPermission> addPermissionForm = new Form<RegistrantAccessPermission>("addPermissionForm", addPermissionModel);
+		addPermissionForm.add(new DropDownChoice<String>("registrant", registrants));
 		addPermissionForm.add(new DropDownChoice<AccessPermission>("permission", Arrays
 				.asList(AccessPermission.NEWPERMISSIONS), new AccessPermissionRenderer(translations)));
 		AjaxButton button = new AjaxButton("addPermissionButton", addPermissionForm) {
@@ -118,20 +118,20 @@
 			@Override
 			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
 				// add permission to our list
-				RepositoryAccessPermission rp = (RepositoryAccessPermission) form.getModel().getObject();
+				RegistrantAccessPermission rp = (RegistrantAccessPermission) form.getModel().getObject();
 				permissions.add(DeepCopier.copy(rp));
 				
-				// remove repository from available choices
-				repositories.remove(rp.repository);
+				// remove registrant from available choices
+				registrants.remove(rp.registrant);
 				
 				// force the panel to refresh
-				target.addComponent(RepositoryPermissionsPanel.this);
+				target.addComponent(RegistrantPermissionsPanel.this);
 			}
 		};
 		addPermissionForm.add(button);
 		
-		// only show add permission form if we have a repository choice
-		add(addPermissionForm.setVisible(repositories.size() > 0));
+		// only show add permission form if we have a registrant choice
+		add(addPermissionForm.setVisible(registrants.size() > 0));
 	}
 	
 	private class AccessPermissionRenderer implements IChoiceRenderer<AccessPermission> {

--
Gitblit v1.9.1