directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From smckin...@apache.org
Subject [5/5] directory-fortress-commander git commit: FC-147 - Upgrade to Wicket Version 7
Date Mon, 11 Jul 2016 03:45:59 GMT
FC-147 - Upgrade to Wicket Version 7


Project: http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/commit/d50dfd71
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/tree/d50dfd71
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/diff/d50dfd71

Branch: refs/heads/master
Commit: d50dfd71cea7919e8cdd256f71154e2ab1c53e03
Parents: 39c0ff5
Author: Shawn McKinney <smckinney@apache.org>
Authored: Sun Jul 10 22:44:45 2016 -0500
Committer: Shawn McKinney <smckinney@apache.org>
Committed: Sun Jul 10 22:44:45 2016 -0500

----------------------------------------------------------------------
 pom.xml                                         |   10 +-
 .../directory/fortress/web/FiveWaySplitter.java |   50 -
 .../fortress/web/FiveWaySplitter.java.sav       |   50 +
 .../fortress/web/FortressWebBasePage.java       |    2 +
 .../directory/fortress/web/FourWaySplitter.java |   14 +-
 .../apache/directory/fortress/web/NavPanel.java |   11 +-
 .../fortress/web/common/GlobalIds.java          |    4 +-
 .../fortress/web/panel/ConstraintBasePanel.java |    2 +-
 .../fortress/web/panel/GroupDetailPanel.java    |   10 +-
 .../fortress/web/panel/UserDetailPanel.java     |  276 ++--
 .../fortress/web/panel/UserListPanel.java       |   20 +-
 .../fortress/web/FortressWebBasePage.html       |    2 +
 .../apache/directory/fortress/web/NavPanel.html |    2 +
 .../fortress/web/panel/UserDetailPanel.html     |   23 +-
 src/main/webapp/css/Uniform/sprite.png          |  Bin 0 -> 13988 bytes
 src/main/webapp/css/jquery-ui.css               | 1248 +++++++++++++++++-
 src/main/webapp/css/kendo.common.min.css        |   38 +-
 src/main/webapp/css/kendo.uniform.min.css       |   38 +-
 .../jquery-ui-1.10.2.custom.min.css             |   26 -
 19 files changed, 1518 insertions(+), 308 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 207c8f6..27a0a54 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,9 +95,13 @@
   <properties>
     <title>${project.name} ${project.version}</title>
     <fortress.realm.version>1.0.1-SNAPSHOT</fortress.realm.version>
-    <wicket.version>6.22.0</wicket.version>
-    <wicket.jquery.version>6.15.0</wicket.jquery.version>
-    <wicket.kendo-ui.version>6.15.0</wicket.kendo-ui.version>
+    <wicket.version>7.3.0</wicket.version>
+    <wicket.jquery.version>7.3.0</wicket.jquery.version>
+    <wicket.kendo-ui.version>7.3.0</wicket.kendo-ui.version>
+
+<!--    <wicket.version>6.22.0</wicket.version>-->
+<!--    <wicket.jquery.version>6.15.0</wicket.jquery.version>-->
+<!--    <wicket.kendo-ui.version>6.15.0</wicket.kendo-ui.version>-->
     <version.log4j>1.2.17</version.log4j>
     <version.slf4j.log4j12>1.7.7</version.slf4j.log4j12>
     <spring.version>4.2.5.RELEASE</spring.version>

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java b/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java
deleted file mode 100644
index d032382..0000000
--- a/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *   Licensed to the Apache Software Foundation (ASF) under one
- *   or more contributor license agreements.  See the NOTICE file
- *   distributed with this work for additional information
- *   regarding copyright ownership.  The ASF licenses this file
- *   to you under the Apache License, Version 2.0 (the
- *   "License"); you may not use this file except in compliance
- *   with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing,
- *   software distributed under the License is distributed on an
- *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *   KIND, either express or implied.  See the License for the
- *   specific language governing permissions and limitations
- *   under the License.
- *
- */
-
-package org.apache.directory.fortress.web;
-
-import com.googlecode.wicket.kendo.ui.widget.splitter.IBorderLayout;
-import com.googlecode.wicket.kendo.ui.widget.splitter.SplitterBehavior;
-import org.apache.wicket.MarkupContainer;
-
-/**
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$
- */
-public class FiveWaySplitter implements IBorderLayout
-{
-    public void addBorderLayout(MarkupContainer container)
-    {
-        container.add(new SplitterBehavior("#vertical").setOption("panes", this.getVerticalPanes()).setOption("orientation", "'vertical'"));
-        container.add(new SplitterBehavior("#horizontal").setOption("panes", this.getHorizontalPanes()));
-    }
-
-    @Override
-    public String getVerticalPanes()
-    {
-        return "[ { collapsible: true, resizable: false, size: '50px', min: '50px', max: '50px', scrollable: false }, { resizable: true, size: '80%' }, { collapsible: true, size: '5%', min: '50px'} ]";
-    }
-
-    @Override
-    public String getHorizontalPanes()
-    {
-        return "[ { collapsible: true, resizable: false, size: '85px', min: '85x', max: '85px'}, { collapsible: true, size: '70%' }, { collapsible: true, size: '21%'} ]";
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java.sav
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java.sav b/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java.sav
new file mode 100644
index 0000000..d032382
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/web/FiveWaySplitter.java.sav
@@ -0,0 +1,50 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.fortress.web;
+
+import com.googlecode.wicket.kendo.ui.widget.splitter.IBorderLayout;
+import com.googlecode.wicket.kendo.ui.widget.splitter.SplitterBehavior;
+import org.apache.wicket.MarkupContainer;
+
+/**
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class FiveWaySplitter implements IBorderLayout
+{
+    public void addBorderLayout(MarkupContainer container)
+    {
+        container.add(new SplitterBehavior("#vertical").setOption("panes", this.getVerticalPanes()).setOption("orientation", "'vertical'"));
+        container.add(new SplitterBehavior("#horizontal").setOption("panes", this.getHorizontalPanes()));
+    }
+
+    @Override
+    public String getVerticalPanes()
+    {
+        return "[ { collapsible: true, resizable: false, size: '50px', min: '50px', max: '50px', scrollable: false }, { resizable: true, size: '80%' }, { collapsible: true, size: '5%', min: '50px'} ]";
+    }
+
+    @Override
+    public String getHorizontalPanes()
+    {
+        return "[ { collapsible: true, resizable: false, size: '85px', min: '85x', max: '85px'}, { collapsible: true, size: '70%' }, { collapsible: true, size: '21%'} ]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/FortressWebBasePage.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/FortressWebBasePage.java b/src/main/java/org/apache/directory/fortress/web/FortressWebBasePage.java
index 79f3220..f2cb160 100644
--- a/src/main/java/org/apache/directory/fortress/web/FortressWebBasePage.java
+++ b/src/main/java/org/apache/directory/fortress/web/FortressWebBasePage.java
@@ -118,8 +118,10 @@ public abstract class FortressWebBasePage extends WebPage
             OuPermPage.class, parameters, org.apache.directory.fortress.web.common.GlobalIds.ROLE_PERMOUS );
         add( permouLink );
 
+        /* TODO: Add groups back:
         add( new SecureBookmarkablePageLink( org.apache.directory.fortress.web.common.GlobalIds.GROUP_PAGE, GroupPage.class,
             org.apache.directory.fortress.web.common.GlobalIds.ROLE_GROUPS ) );
+        */
 
         add( new SecureBookmarkablePageLink( org.apache.directory.fortress.web.common.GlobalIds.AUDIT_BINDS_PAGE, AuditBindPage.class,
             org.apache.directory.fortress.web.common.GlobalIds.ROLE_AUDIT_BINDS ) );

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/FourWaySplitter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/FourWaySplitter.java b/src/main/java/org/apache/directory/fortress/web/FourWaySplitter.java
index 3db679b..4b0e7fd 100644
--- a/src/main/java/org/apache/directory/fortress/web/FourWaySplitter.java
+++ b/src/main/java/org/apache/directory/fortress/web/FourWaySplitter.java
@@ -20,6 +20,7 @@
 package org.apache.directory.fortress.web;
 
 import com.googlecode.wicket.kendo.ui.widget.splitter.IBorderLayout;
+import com.googlecode.wicket.kendo.ui.widget.splitter.SplitterAdapter;
 import com.googlecode.wicket.kendo.ui.widget.splitter.SplitterBehavior;
 import org.apache.wicket.MarkupContainer;
 
@@ -50,10 +51,19 @@ public class FourWaySplitter implements IBorderLayout
 
     public void addBorderLayout(MarkupContainer container)
     {
-        SplitterBehavior vertical = new SplitterBehavior("#vertical");
+        /*
+        public SplitterBehavior(String selector, ISplitterListener listener) {
+        public SplitterBehavior(String selector, Options options, ISplitterListener listener) {
+        */
+        //  this.add(new SplitterBehavior("#splitter", new SplitterAdapter()));
+
+        SplitterBehavior vertical = new SplitterBehavior("#vertical", new SplitterAdapter());
+
+        //SplitterBehavior vertical = new SplitterBehavior("#vertical");
         vertical.setOption("panes", this.getVerticalPanes()).setOption("orientation", "'vertical'");
         container.add(vertical);
-        SplitterBehavior horizontal = new SplitterBehavior("#horizontal");
+        //SplitterBehavior horizontal = new SplitterBehavior("#horizontal");
+        SplitterBehavior horizontal = new SplitterBehavior("#horizontal", new SplitterAdapter());
         horizontal.setOption("panes", this.getHorizontalPanes());
         container.add(horizontal);
     }

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/NavPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/NavPanel.java b/src/main/java/org/apache/directory/fortress/web/NavPanel.java
index 46dda10..78e71dd 100644
--- a/src/main/java/org/apache/directory/fortress/web/NavPanel.java
+++ b/src/main/java/org/apache/directory/fortress/web/NavPanel.java
@@ -478,9 +478,13 @@ public class NavPanel extends FormComponentPanel
 
             );
 
+            /*
+            TODO: Add Group Back (replace datatable)
             add( new SecureIndicatingAjaxButton( GlobalIds.GROUP_PAGE, GlobalIds.ROLE_GROUPS )
             {
-                /** Default serialVersionUID */
+                */
+                /** Default serialVersionUID *//*
+
                 private static final long serialVersionUID = 1L;
 
 
@@ -497,7 +501,9 @@ public class NavPanel extends FormComponentPanel
                     super.updateAjaxAttributes( attributes );
                     AjaxCallListener ajaxCallListener = new AjaxCallListener()
                     {
-                        /** Default serialVersionUID */
+                        */
+                        /** Default serialVersionUID *//*
+
                         private static final long serialVersionUID = 1L;
 
 
@@ -512,6 +518,7 @@ public class NavPanel extends FormComponentPanel
             }
 
             );
+            */
 
             add( new SecureIndicatingAjaxButton( GlobalIds.AUDIT_BINDS_PAGE, GlobalIds.ROLE_AUDIT_BINDS )
             {

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/common/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/common/GlobalIds.java b/src/main/java/org/apache/directory/fortress/web/common/GlobalIds.java
index 239ae8a..e8648b8 100644
--- a/src/main/java/org/apache/directory/fortress/web/common/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/web/common/GlobalIds.java
@@ -128,6 +128,8 @@ public class GlobalIds
     public static final String NAME = "name";
     public static final String USER_ID = "userId";
     public static final String PSWD_FIELD = "pswdField";
+    public static final String NEW_USER_ROLE_FIELD = "newUserRole";
+    public static final String NEW_USER_ADMIN_ROLE_FIELD = "newUserAdminRole";
     public static final String LOGIN = "login";
     public static final String EMPLOYEE_TYPE = "employeeType";
     public static final String TITLE = "title";
@@ -151,7 +153,7 @@ public class GlobalIds
     public static final String AUDIT_TIMESTAMP_FORMAT = "MM/dd/yyyy HH:mm:ss";
     public static final String FIND_USERS = "findUsers";
     public static final String FIND_PERMISSIONS = "findPermissions";
-    public static final String ONBLUR = "onblur";
+    public static final String ONBLUR = "blur";
     public static final String ADDRESS_ADDRESSES = "address.addresses";
     public static final String FT_MOD_ID = "ftModId";
     public static final String FT_MODIFIER = "ftModifier";

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/panel/ConstraintBasePanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/panel/ConstraintBasePanel.java b/src/main/java/org/apache/directory/fortress/web/panel/ConstraintBasePanel.java
index ccf4d5b..5ff2a36 100644
--- a/src/main/java/org/apache/directory/fortress/web/panel/ConstraintBasePanel.java
+++ b/src/main/java/org/apache/directory/fortress/web/panel/ConstraintBasePanel.java
@@ -248,7 +248,7 @@ public class ConstraintBasePanel extends FormComponentPanel
      * This method is used to convert from the panel component model to the domain model:
      */
     @Override
-    protected void convertInput()
+    public void convertInput()
     {
         Constraint constraint = ( Constraint ) getDefaultModelObject();
         if ( constraint != null )

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java b/src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java
index aecfe5a..8c2f2f1 100644
--- a/src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java
+++ b/src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java
@@ -22,9 +22,9 @@ package org.apache.directory.fortress.web.panel;
 
 
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.kendo.ui.datatable.ColumnButton;
+//import com.googlecode.wicket.kendo.ui.datatable.ColumnButton;
 import com.googlecode.wicket.kendo.ui.datatable.DataTable;
-import com.googlecode.wicket.kendo.ui.datatable.column.CommandsColumn;
+//import com.googlecode.wicket.kendo.ui.datatable.column.CommandsColumn;
 import com.googlecode.wicket.kendo.ui.datatable.column.IColumn;
 import com.googlecode.wicket.kendo.ui.datatable.column.PropertyColumn;
 import com.googlecode.wicket.kendo.ui.form.combobox.ComboBox;
@@ -146,7 +146,7 @@ public class GroupDetailPanel extends FormComponentPanel
             addUserSearchModal();
 
             // DataTable //
-            columns = newColumnList();
+            //columns = newColumnList();
             options = new Options();
             options.set( "selectable", Options.asString( "single" ) );
             options.set( "scrollable", "{ virtual: true }" ); //infinite scroll
@@ -667,6 +667,7 @@ public class GroupDetailPanel extends FormComponentPanel
         }
 
 
+/*
         private List<IColumn> newColumnList()
         {
             List<IColumn> columns = new ArrayList<>();
@@ -687,6 +688,7 @@ public class GroupDetailPanel extends FormComponentPanel
 
             return columns;
         }
+*/
 
 
         private IDataProvider<Member> createDataProvider( List<String> members )
@@ -842,6 +844,7 @@ public class GroupDetailPanel extends FormComponentPanel
                 /**
                  * Triggered when a column button is clicked.
                  */
+/*
                 @Override
                 public void onClick( AjaxRequestTarget target, ColumnButton button, String value )
                 {
@@ -869,6 +872,7 @@ public class GroupDetailPanel extends FormComponentPanel
                         }
                     }
                 }
+*/
             };
 
             addOrReplace( table );

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/panel/UserDetailPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/panel/UserDetailPanel.java b/src/main/java/org/apache/directory/fortress/web/panel/UserDetailPanel.java
index 22105e4..b7e2866 100644
--- a/src/main/java/org/apache/directory/fortress/web/panel/UserDetailPanel.java
+++ b/src/main/java/org/apache/directory/fortress/web/panel/UserDetailPanel.java
@@ -24,7 +24,8 @@ package org.apache.directory.fortress.web.panel;
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
 import com.googlecode.wicket.kendo.ui.form.combobox.ComboBox;
-import com.googlecode.wicket.kendo.ui.renderer.ChoiceRenderer;
+import com.googlecode.wicket.kendo.ui.form.dropdown.AjaxDropDownList;
+import com.googlecode.wicket.kendo.ui.form.dropdown.DropDownList;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
@@ -32,7 +33,6 @@ import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxCallListener;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
@@ -86,7 +86,6 @@ public class UserDetailPanel extends FormComponentPanel
     private Form editForm;
     private Displayable display;
 
-
     public UserDetailPanel( String id, Displayable display )
     {
         super( id );
@@ -132,6 +131,8 @@ public class UserDetailPanel extends FormComponentPanel
 
         // form model attributes:
         private String pswdField;
+        private String newUserRole;
+        private String newUserAdminRole;
         private String userDetailLabel;
         private String lockLabel = "Lock";
         private String roleAssignmentsLabel;
@@ -141,8 +142,9 @@ public class UserDetailPanel extends FormComponentPanel
         private String temporalConstraintsLabel = "Temporal Constraints";
         private String systemInfoLabel = "System Information";
         private String importPhotoLabel = "Import Photo";
-        private String roleSelection;
-        private String adminRoleSelection;
+        private UserRole userRoleSelection = new UserRole();
+        private UserAdminRole userAdminRoleSelection = new UserAdminRole();
+
         private String addressSelection;
         private String phonesSelection;
         private String mobilesSelection;
@@ -161,15 +163,14 @@ public class UserDetailPanel extends FormComponentPanel
         private ComboBox<String> phonesCB;
         private ComboBox<String> mobilesCB;
         private ComboBox<String> addressCB;
-        private ComboBox<UserRole> rolesCB;
-        private ComboBox<UserAdminRole> adminRolesCB;
+        private DropDownList<UserRole> rolesDD;
+        private DropDownList<UserAdminRole> adminRolesDD;
         private FileUploadField upload;
         private TextField pwPolicyTF;
         private TextField ouTF;
         private TextField userIdTF;
         private SecureIndicatingAjaxButton addPB;
 
-
         public UserDetailForm( String id, final IModel<User> model )
         {
             super( id, model );
@@ -183,7 +184,6 @@ public class UserDetailPanel extends FormComponentPanel
             setOutputMarkupId( true );
         }
 
-
         private void addDetailFields( final IModel<User> model )
         {
             // Add the User page required attributes:
@@ -191,8 +191,10 @@ public class UserDetailPanel extends FormComponentPanel
             add( userIdTF );
             PasswordTextField pw = new PasswordTextField( GlobalIds.PSWD_FIELD, new PropertyModel<String>( this,
                 GlobalIds.PSWD_FIELD ) );
+
             pw.setRequired( false );
             add( pw );
+
             TextField descriptionTF = new TextField( GlobalIds.DESCRIPTION );
             descriptionTF.setRequired( false );
             add( descriptionTF );
@@ -213,22 +215,28 @@ public class UserDetailPanel extends FormComponentPanel
             add( pwPolicyTF );
 
             // Add the role assignment values & temporal constraint panel:
-            rolesCB = new ComboBox<>( ROLES, new PropertyModel<String>( this, ROLE_SELECTION ),
-                model.getObject().getRoles(), new ChoiceRenderer<UserRole>( GlobalIds.NAME ) );
-            rolesCB.setOutputMarkupId( true );
-            add( rolesCB );
+            TextField newUserRoleTF = new TextField( GlobalIds.NEW_USER_ROLE_FIELD, new PropertyModel<String>( this,
+                GlobalIds.NEW_USER_ROLE_FIELD ) );
+            newUserRoleTF.setRequired( false );
+            add( newUserRoleTF );
+
+            rolesDD = new AjaxDropDownList<>(ROLES, new CompoundPropertyModel<>( new UserRole() ), Model.ofList(new ArrayList<UserRole>()));
+            add( rolesDD );
+
             roleConstraintPanel = new ConstraintRolePanel( ROLECONSTRAINTPANEL, new PropertyModel<UserRole>( this,
                 ROLE_CONSTRAINT ) );
             roleConstraintPanel.setOutputMarkupId( true );
             add( roleConstraintPanel );
 
             // Add the adminRole assignment values & temporal constraint panel:
-            adminRolesCB = new ComboBox<>( ADMIN_ROLES, new PropertyModel<String>( this,
-                ADMIN_ROLE_SELECTION ), model.getObject().getAdminRoles(), new ChoiceRenderer<UserAdminRole>(
-                GlobalIds.NAME
-                ) );
-            adminRolesCB.setOutputMarkupId( true );
-            add( adminRolesCB );
+            TextField newUserAdminRoleTF = new TextField( GlobalIds.NEW_USER_ADMIN_ROLE_FIELD, new PropertyModel<String>( this,
+                GlobalIds.NEW_USER_ADMIN_ROLE_FIELD ) );
+            newUserAdminRoleTF.setRequired( false );
+            add( newUserAdminRoleTF );
+
+            adminRolesDD = new AjaxDropDownList<>(ADMIN_ROLES, new CompoundPropertyModel<>( new UserAdminRole() ), Model.ofList(new ArrayList<UserAdminRole>()));
+            add( adminRolesDD );
+
             adminRoleConstraintPanel = new ConstraintAdminRolePanel( ADMINROLECONSTRAINTPANEL,
                 new PropertyModel<UserAdminRole>( this, ADMIN_ROLE_CONSTRAINT ) );
             adminRoleConstraintPanel.setOutputMarkupId( true );
@@ -254,6 +262,7 @@ public class UserDetailPanel extends FormComponentPanel
             mobilesCB = new ComboBox<>( GlobalIds.MOBILES, new PropertyModel<String>( this, MOBILES_SELECTION ),
                 model.getObject().getMobiles() );
             add( mobilesCB );
+
             // TODO: name not mapped correctly in fortress so can't be used here:
             TextField name = new TextField( "displayName" );
             name.setRequired( false );
@@ -313,7 +322,6 @@ public class UserDetailPanel extends FormComponentPanel
 
         private void addButtons()
         {
-
             add( addPB = new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.ADMIN_MGR, GlobalIds.ADD_USER )
             {
                 /** Default serialVersionUID */
@@ -353,7 +361,6 @@ public class UserDetailPanel extends FormComponentPanel
                     }
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
@@ -422,14 +429,12 @@ public class UserDetailPanel extends FormComponentPanel
                     }
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
                     log.warn( "UserDetailPanel.commit.onError" );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -476,14 +481,12 @@ public class UserDetailPanel extends FormComponentPanel
                     }
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
                     log.warn( "UserDetailPanel.delete.onError" );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -508,7 +511,6 @@ public class UserDetailPanel extends FormComponentPanel
                 /** Default serialVersionUID */
                 private static final long serialVersionUID = 1L;
 
-
                 @Override
                 protected void onSubmit( AjaxRequestTarget target, Form form )
                 {
@@ -517,14 +519,12 @@ public class UserDetailPanel extends FormComponentPanel
                     display.setMessage( msg );
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
                     log.warn( "UserDetailPanel.cancel.onError" );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -564,14 +564,12 @@ public class UserDetailPanel extends FormComponentPanel
                     initAccordionLabels( user );
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
                     log.warn( "save.onError" );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -744,32 +742,28 @@ public class UserDetailPanel extends FormComponentPanel
                 protected void onSubmit( AjaxRequestTarget target, Form form )
                 {
                     log.debug( ".onSubmit assign" );
-                    /*
-                                        HttpServletRequest servletReq = ( HttpServletRequest ) getRequest().getContainerRequest();
-                                        if ( servletReq.isUserInRole( "rbac_admin" ) )
-                                        {
-                                            log.debug( "User has RBAC_ADMIN" );
-                                        }
-                                        else
-                                        {
-                                            log.debug( "User NOT RBAC_ADMIN" );
-                                        }
-                    */
-
                     User user = ( User ) form.getModel().getObject();
-                    if ( assignRole( user, roleSelection ) )
+                    if( StringUtils.isNotEmpty( newUserRole ))
                     {
-                        String msg = "User: " + user.getUserId() + " has been assigned role: " + roleSelection;
-                        //info( msg );
-                        display.setMessage( msg );
-                        component = editForm;
-                        initAccordionLabels( user );
+                        if ( assignRole( user, newUserRole ) )
+                        {
+                            String msg = "User: " + user.getUserId() + " has been assigned role: " + newUserRole;
+                            display.setMessage( msg );
+                            component = editForm;
+                            initAccordionLabels( user );
+                            userRoleSelection = new UserRole();
+                            roleConstraint = new UserRole();
+                            newUserRole = "";
+                        }
+                        else
+                        {
+                            String msg = "User: " + user.getUserId() + " assign failed for role: " + newUserRole;
+                            display.setMessage( msg );
+                            log.debug( msg );
+                        }
                     }
-                    roleSelection = "";
-                    roleConstraint = new UserRole();
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
@@ -807,20 +801,28 @@ public class UserDetailPanel extends FormComponentPanel
                 {
                     log.debug( ".onSubmit assignAdminRole" );
                     User user = ( User ) form.getModel().getObject();
-                    if ( assignAdminRole( user, adminRoleSelection ) )
+                    if( StringUtils.isNotEmpty( newUserAdminRole ))
                     {
-                        String msg = "User: " + user.getUserId() + " has been assigned adminRole: " +
-                            adminRoleSelection;
-                        //info( msg );
-                        display.setMessage( msg );
-                        component = editForm;
-                        initAccordionLabels( user );
+                        if ( assignAdminRole( user, newUserAdminRole ) )
+                        {
+                            String msg = "User: " + user.getUserId() + " has been assigned adminRole: " +
+                                newUserAdminRole;
+                            display.setMessage( msg );
+                            component = editForm;
+                            initAccordionLabels( user );
+                            userAdminRoleSelection = new UserAdminRole();
+                            adminRoleConstraint = new UserAdminRole();
+                            newUserAdminRole = "";
+                        }
+                        else
+                        {
+                            String msg = "User: " + user.getUserId() + " assign failed for admin role: " + newUserAdminRole;
+                            display.setMessage( msg );
+                            log.debug( msg );
+                        }
                     }
-                    adminRoleSelection = "";
-                    adminRoleConstraint = new UserAdminRole();
                 }
 
-
                 @Override
                 public void onError( AjaxRequestTarget target, Form form )
                 {
@@ -858,17 +860,16 @@ public class UserDetailPanel extends FormComponentPanel
                 {
                     log.debug( ".onSubmit deassign" );
                     User user = ( User ) form.getModel().getObject();
-                    UserRole userRole = new UserRole( user.getUserId(), roleSelection );
+                    UserRole userRole = new UserRole( user.getUserId(), userRoleSelection.getName() );
                     if ( deassignRole( user, userRole ) )
                     {
-                        user.delRole( new UserRole( roleSelection ) );
-                        String msg = "User: " + user.getUserId() + " has been deassigned role: " + roleSelection;
-                        //info( msg );
+                        user.delRole( userRoleSelection );
+                        String msg = "User: " + user.getUserId() + " has been deassigned role: " + userRoleSelection.getName();
                         display.setMessage( msg );
                         component = editForm;
                         initAccordionLabels( user );
                     }
-                    roleSelection = "";
+                    userRoleSelection = new UserRole();
                     roleConstraint = new UserRole();
                 }
 
@@ -910,18 +911,17 @@ public class UserDetailPanel extends FormComponentPanel
                 {
                     log.debug( ".onSubmit deassignAdminRole" );
                     User user = ( User ) form.getModel().getObject();
-                    UserAdminRole userAdminRole = new UserAdminRole( user.getUserId(), adminRoleSelection );
+                    UserAdminRole userAdminRole = new UserAdminRole( user.getUserId(), userAdminRoleSelection.getName() );
                     if ( deassignAdminRole( user, userAdminRole ) )
                     {
                         user.delAdminRole( userAdminRole );
                         String msg = "User: " + user.getUserId() + " has been deassigned adminRole: " +
-                            adminRoleSelection;
-                        //info( msg );
+                            userAdminRoleSelection.getName();
                         display.setMessage( msg );
                         component = editForm;
                         initAccordionLabels( user );
                     }
-                    adminRoleSelection = "";
+                    userAdminRoleSelection = new UserAdminRole();
                     adminRoleConstraint = new UserAdminRole();
                 }
 
@@ -957,7 +957,6 @@ public class UserDetailPanel extends FormComponentPanel
                 /** Default serialVersionUID */
                 private static final long serialVersionUID = 1L;
 
-
                 @Override
                 protected void onSubmit( AjaxRequestTarget target, Form<?> form )
                 {
@@ -987,7 +986,6 @@ public class UserDetailPanel extends FormComponentPanel
                     log.debug( msg );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -1197,9 +1195,7 @@ public class UserDetailPanel extends FormComponentPanel
                     roleConstraint = roleSearchModalPanel.getRoleSelection();
                     if ( roleConstraint != null )
                     {
-                        roleSelection = roleConstraint.getName();
                         target.add( roleConstraintPanel );
-                        target.add( rolesCB );
                     }
                 }
             } );
@@ -1213,8 +1209,8 @@ public class UserDetailPanel extends FormComponentPanel
                 protected void onSubmit( AjaxRequestTarget target, Form<?> form )
                 {
                     String msg = "clicked on roles search";
-                    msg += roleSelection != null ? ": " + roleSelection : "";
-                    roleSearchModalPanel.setRoleSearchVal( roleSelection );
+                    msg += userRoleSelection != null ? ": " + userRoleSelection.getName() : "";
+                    roleSearchModalPanel.setRoleSearchVal( userRoleSelection.getName() );
                     display.setMessage( msg );
                     log.debug( msg );
                     target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
@@ -1268,9 +1264,7 @@ public class UserDetailPanel extends FormComponentPanel
                     adminRoleConstraint = adminRoleSearchModalPanel.getAdminRoleSelection();
                     if ( adminRoleConstraint != null )
                     {
-                        adminRoleSelection = adminRoleConstraint.getName();
                         target.add( adminRoleConstraintPanel );
-                        target.add( adminRolesCB );
                     }
                 }
             } );
@@ -1284,8 +1278,8 @@ public class UserDetailPanel extends FormComponentPanel
                 protected void onSubmit( AjaxRequestTarget target, Form<?> form )
                 {
                     String msg = "clicked on roles search";
-                    msg += adminRoleSelection != null ? ": " + adminRoleSelection : "";
-                    adminRoleSearchModalPanel.setRoleSearchVal( adminRoleSelection );
+                    msg += userAdminRoleSelection.getName() != null ? ": " + userAdminRoleSelection.getName() : "";
+                    adminRoleSearchModalPanel.setRoleSearchVal( userAdminRoleSelection.getName() );
                     display.setMessage( msg );
                     log.debug( msg );
                     target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
@@ -1422,7 +1416,6 @@ public class UserDetailPanel extends FormComponentPanel
             {
                 private static final long serialVersionUID = 1L;
 
-
                 @Override
                 protected void onSubmit( AjaxRequestTarget target, Form<?> form )
                 {
@@ -1436,7 +1429,6 @@ public class UserDetailPanel extends FormComponentPanel
                     ousModalWindow.show( target );
                 }
 
-
                 @Override
                 protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
                 {
@@ -1463,7 +1455,6 @@ public class UserDetailPanel extends FormComponentPanel
             ousModalWindow.setCookieName( "userou-modal" );
         }
 
-
         private void info( ComboBox<String> comboBox )
         {
             String choice = comboBox.getModelObject();
@@ -1472,12 +1463,13 @@ public class UserDetailPanel extends FormComponentPanel
             log.debug( msg );
         }
 
-
         private void clearDetailPanel()
         {
             setModelObject( new User() );
-            roleSelection = "";
-            adminRoleSelection = "";
+            userRoleSelection = new UserRole();
+            userAdminRoleSelection = new UserAdminRole();
+            newUserRole = "";
+            newUserAdminRole = "";
             addressSelection = "";
             phonesSelection = "";
             roleConstraint = new UserRole();
@@ -1500,15 +1492,14 @@ public class UserDetailPanel extends FormComponentPanel
                 new ArrayList<String>() );
 
             editForm.addOrReplace( addressCB );
-            rolesCB = new ComboBox<>( ROLES, new PropertyModel<String>( this, ROLE_SELECTION ),
-                new ArrayList<UserRole>(), new ChoiceRenderer<UserRole>( GlobalIds.NAME ) );
-            rolesCB.setOutputMarkupId( true );
-            editForm.addOrReplace( rolesCB );
-            adminRolesCB = new ComboBox<>( ADMIN_ROLES, new PropertyModel<String>( this,
-                ADMIN_ROLE_SELECTION ), new ArrayList<UserAdminRole>(), new ChoiceRenderer<UserAdminRole>(
-                GlobalIds.NAME ) );
-            adminRolesCB.setOutputMarkupId( true );
-            editForm.addOrReplace( adminRolesCB );
+            rolesDD = new AjaxDropDownList<>(ROLES, new CompoundPropertyModel<>( new UserRole() ), Model.ofList(new ArrayList<UserRole>()));
+            rolesDD.setOutputMarkupId( true );
+            editForm.addOrReplace( rolesDD );
+
+            adminRolesDD = new AjaxDropDownList<>(ADMIN_ROLES, new CompoundPropertyModel<>( new UserAdminRole() ), Model.ofList(new ArrayList<UserAdminRole>()));
+            adminRolesDD.setOutputMarkupId( true );
+            editForm.addOrReplace( adminRolesDD );
+
             modelChanged();
             component = editForm;
             editForm.setOutputMarkupId( true );
@@ -1718,10 +1709,10 @@ public class UserDetailPanel extends FormComponentPanel
             return success;
         }
 
-
         @Override
         public void onEvent( final IEvent<?> event )
         {
+
             if ( event.getPayload() instanceof SelectModelEvent )
             {
                 clearDetailPanel();
@@ -1736,76 +1727,53 @@ public class UserDetailPanel extends FormComponentPanel
                 display.setMessage( msg );
                 userIdTF.setEnabled( false );
                 addPB.setEnabled( false );
-                rolesCB = new ComboBox<>( ROLES, new PropertyModel<String>( this, ROLE_SELECTION ),
-                    user.getRoles(), new ChoiceRenderer<UserRole>( GlobalIds.NAME ) );
-                AjaxFormComponentUpdatingBehavior roleAjaxUpdater = new AjaxFormComponentUpdatingBehavior( "onchange" )
+
+                rolesDD = new AjaxDropDownList<UserRole>(ROLES, new CompoundPropertyModel<>( new UserRole() ), Model.ofList(user.getRoles()))
                 {
-                    /** Default serialVersionUID */
                     private static final long serialVersionUID = 1L;
 
-
                     @Override
-                    protected void onUpdate( final AjaxRequestTarget target )
+                    public void onSelectionChanged(AjaxRequestTarget target)
                     {
-                        log.warn( "onUpdate roleDB in ajax form updater" );
-                        String roleNm = rolesCB.getConvertedInput();
-                        if ( StringUtils.isNotEmpty( roleNm ) )
+                        userRoleSelection =  this.getModelObject();
+                        if ( userRoleSelection != null )
                         {
-                            UserRole userRole = null;
-                            int indx = user.getRoles().indexOf( new UserRole( roleNm ) );
-                            if ( indx != -1 )
-                            {
-                                userRole = user.getRoles().get( indx );
-                                log.warn( "onUpdate roleNm:" + roleNm );
-                                info( "roleNm=" + roleNm );
-                                roleConstraint = userRole;
-                                roleConstraintPanel.setOutputMarkupId( true );
-                                target.add( roleConstraintPanel );
-                                adminRoleSelection = "";
-                                target.add( adminRolesCB );
-                            }
+                            info( "roleNm=" + userRoleSelection.getName() );
+                            roleConstraint = userRoleSelection;
+                            roleConstraintPanel.setOutputMarkupId( true );
+                            target.add( roleConstraintPanel );
+                            // TODO: should we clear out any unfinished work here:
+                            //userAdminRoleSelection = new UserAdminRole();
+                            //target.add( adminRolesDD );
                         }
                     }
                 };
-                this.rolesCB.add( roleAjaxUpdater );
-                this.rolesCB.setOutputMarkupId( true );
-                editForm.addOrReplace( rolesCB );
-                adminRolesCB = new ComboBox<>( ADMIN_ROLES, new PropertyModel<String>( this,
-                    ADMIN_ROLE_SELECTION ), user.getAdminRoles(), new ChoiceRenderer<UserAdminRole>( GlobalIds.NAME ) );
-                AjaxFormComponentUpdatingBehavior adminRoleAjaxUpdater = new AjaxFormComponentUpdatingBehavior(
-                    "onchange" )
-                {
-                    /** Default serialVersionUID */
-                    private static final long serialVersionUID = 1L;
+                this.rolesDD.setOutputMarkupId( true );
+                editForm.addOrReplace( rolesDD );
 
+                adminRolesDD = new AjaxDropDownList<UserAdminRole>(ADMIN_ROLES, new CompoundPropertyModel<>( new UserAdminRole() ), Model.ofList(user.getAdminRoles()))
+                {
+                    private static final long serialVersionUID = 1L;
 
                     @Override
-                    protected void onUpdate( final AjaxRequestTarget target )
+                    public void onSelectionChanged(AjaxRequestTarget target)
                     {
-                        log.warn( "onUpdate adminRoleCB in ajax form updater" );
-                        String adminRoleNm = adminRolesCB.getConvertedInput();
-                        if ( StringUtils.isNotEmpty( adminRoleNm ) )
+                        userAdminRoleSelection =  this.getModelObject();
+                        if ( userAdminRoleSelection != null )
                         {
-                            UserAdminRole userAdminRole = null;
-                            int indx = user.getAdminRoles().indexOf( new UserAdminRole( user.getUserId(),
-                                adminRoleNm ) );
-                            if ( indx != -1 )
-                            {
-                                userAdminRole = user.getAdminRoles().get( indx );
-                                log.warn( "onUpdate adminRoleNm:" + userAdminRole );
-                                info( "adminRoleNm=" + userAdminRole );
-                                adminRoleConstraint = userAdminRole;
-                                adminRoleConstraintPanel.setOutputMarkupId( true );
-                                target.add( adminRoleConstraintPanel );
-                                roleSelection = "";
-                                target.add( rolesCB );
-                            }
+                            info( "roleNm=" + userRoleSelection.getName() );
+                            adminRoleConstraint = userAdminRoleSelection;
+                            adminRoleConstraintPanel.setOutputMarkupId( true );
+                            target.add( adminRoleConstraintPanel );
+                            // TODO: should we clear out any unfinished work here:
+                            // userRoleSelection = new UserRole();
+                            // target.add( rolesDD );
                         }
                     }
                 };
-                this.adminRolesCB.add( adminRoleAjaxUpdater );
-                this.adminRolesCB.setOutputMarkupId( true );
-                editForm.addOrReplace( adminRolesCB );
+                this.adminRolesDD.setOutputMarkupId( true );
+                editForm.addOrReplace( adminRolesDD );
+
                 emailsCB = new ComboBox<>( GlobalIds.EMAILS, new PropertyModel<String>( this, EMAILS_SELECTION ),
                     user.getEmails() );
                 editForm.addOrReplace( emailsCB );
@@ -1826,8 +1794,6 @@ public class UserDetailPanel extends FormComponentPanel
                 editForm.addOrReplace( adminRoleConstraintPanel );
                 component = editForm;
             }
-            //else if (event.getPayload() instanceof AjaxRequestTarget && !(event.getPayload() instanceof
-            // AjaxUpdateEvent))
             // TODO: fix me... don't want to add detail form to every ajax request target that passes though:
             else if ( event.getPayload() instanceof AjaxRequestTarget )
             {
@@ -1859,7 +1825,6 @@ public class UserDetailPanel extends FormComponentPanel
             super.onBeforeRender();
         }
 
-
         private void initAccordionLabels()
         {
             userDetailLabel = "User Detail";
@@ -1869,7 +1834,6 @@ public class UserDetailPanel extends FormComponentPanel
             contactInformationLabel = "Contact Information";
         }
 
-
         private void initAccordionLabels( User user )
         {
             boolean isSet = false;
@@ -1953,12 +1917,14 @@ public class UserDetailPanel extends FormComponentPanel
 
         private void initSelectionModels()
         {
-            roleSelection = "";
-            adminRoleSelection = "";
+            userRoleSelection = new UserRole();
+            userAdminRoleSelection = new UserAdminRole();
             addressSelection = "";
             phonesSelection = "";
             mobilesSelection = "";
             emailsSelection = "";
+            newUserRole = "";
+            newUserAdminRole = "";
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/java/org/apache/directory/fortress/web/panel/UserListPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/web/panel/UserListPanel.java b/src/main/java/org/apache/directory/fortress/web/panel/UserListPanel.java
index 47b1945..cf6fcdb 100644
--- a/src/main/java/org/apache/directory/fortress/web/panel/UserListPanel.java
+++ b/src/main/java/org/apache/directory/fortress/web/panel/UserListPanel.java
@@ -72,7 +72,8 @@ import java.util.List;
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class UserListPanel extends FormComponentPanel
+//public class UserListPanel extends FormComponentPanel
+public class UserListPanel<T extends Serializable> extends FormComponentPanel
 {
     /** Default serialVersionUID */
     private static final long serialVersionUID = 1L;
@@ -661,9 +662,9 @@ public class UserListPanel extends FormComponentPanel
     }
 
 
-    private DefaultTreeModel createTreeModel( List<User> users )
+    private DefaultTreeModel createTreeModel( List<T> users )
     {
-        DefaultTreeModel model = null;
+        DefaultTreeModel model;
         rootNode = new DefaultMutableTreeNode( null );
         model = new DefaultTreeModel( rootNode );
         if ( users == null )
@@ -673,7 +674,7 @@ public class UserListPanel extends FormComponentPanel
         else
         {
             LOG.debug( ".createTreeModel Users found:" + users.size() );
-            for ( User user : users )
+            for ( T user : users )
             {
                     rootNode.add( new DefaultMutableTreeNode( user ) );
             }
@@ -720,22 +721,23 @@ public class UserListPanel extends FormComponentPanel
         adminRoles.setInitialSize( 400 );
         columns.add( adminRoles );
 
-        List<User> users = ( List<User> ) getDefaultModel().getObject();
+        //List<User> users = ( List<User> ) getDefaultModel().getObject();
+        List<T> users = ( List<T> ) getDefaultModel().getObject();
+
         treeModel = createTreeModel( users );
         grid = new TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String>( "usertreegrid", treeModel, columns )
         {
             /** Default serialVersionUID */
             private static final long serialVersionUID = 1L;
 
-
             @Override
             public void selectItem( IModel itemModel, boolean selected )
             {
                 node = ( DefaultMutableTreeNode ) itemModel.getObject();
                 if ( !node.isRoot() )
                 {
-                    User user = ( User ) node.getUserObject();
-                    LOG.debug( "TreeGrid.addGrid.selectItem selected user =" + user.getUserId() );
+                    T user = ( T ) node.getUserObject();
+                    //LOG.debug( "TreeGrid.addGrid.selectItem selected user =" + user.getUserId() );
                     if ( super.isItemSelected( itemModel ) )
                     {
                         LOG.debug( "TreeGrid.addGrid.selectItem item is selected" );
@@ -744,7 +746,7 @@ public class UserListPanel extends FormComponentPanel
                     else
                     {
                         super.selectItem( itemModel, true );
-                        SelectModelEvent.send( getPage(), this, user );
+                        SelectModelEvent.send( getPage(), this, ( FortEntity ) user );
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/resources/org/apache/directory/fortress/web/FortressWebBasePage.html
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/directory/fortress/web/FortressWebBasePage.html b/src/main/resources/org/apache/directory/fortress/web/FortressWebBasePage.html
index 6319e8f..03465f4 100644
--- a/src/main/resources/org/apache/directory/fortress/web/FortressWebBasePage.html
+++ b/src/main/resources/org/apache/directory/fortress/web/FortressWebBasePage.html
@@ -71,8 +71,10 @@
             &nbsp
             <a href="#" wicket:id="pwpolicies">PLCYS</a>
             &nbsp
+<!--
             <a href="#" wicket:id="groups">GROUPS</a>
             &nbsp
+-->
             <a href="#" wicket:id="binds">BINDS</a>
             &nbsp
             <a href="#" wicket:id="authzs">AUTHZ</a>

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/resources/org/apache/directory/fortress/web/NavPanel.html
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/directory/fortress/web/NavPanel.html b/src/main/resources/org/apache/directory/fortress/web/NavPanel.html
index 219a6b1..5c53d86 100644
--- a/src/main/resources/org/apache/directory/fortress/web/NavPanel.html
+++ b/src/main/resources/org/apache/directory/fortress/web/NavPanel.html
@@ -88,11 +88,13 @@
                     <button wicket:id="pwpolicies">PLCYS&nbsp</button>
                 </td>
             </tr>
+<!--
             <tr>
                 <td>
                     <button wicket:id="groups">GROUP</button>
                 </td>
             </tr>
+-->
             <tr>
                 <td>
                     <button wicket:id="binds">BINDS&nbsp</button>

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/resources/org/apache/directory/fortress/web/panel/UserDetailPanel.html
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/directory/fortress/web/panel/UserDetailPanel.html b/src/main/resources/org/apache/directory/fortress/web/panel/UserDetailPanel.html
index 2c3f923..3e6c4ad 100644
--- a/src/main/resources/org/apache/directory/fortress/web/panel/UserDetailPanel.html
+++ b/src/main/resources/org/apache/directory/fortress/web/panel/UserDetailPanel.html
@@ -110,10 +110,20 @@
         </fieldset>
         <tr>
             <td>
+                <label for="newUserRole">New Role</label>
+            </td>
+            <td>
+                <!--                <input type="checkbox" wicket:id="isNewUserRole" id="isNewUserRole"/>-->
+                <input type="text" wicket:id="newUserRole" id="newUserRole" class="formLarge" style="width: 250px"/>
+            </td>
+        </tr>
+        <tr>
+            <td>
                 <label for="roles">RBAC Roles</label>
             </td>
             <td>
-                <input type="text" wicket:id="roles" id="roles" style="width: 250px;display:block"/>
+                <select wicket:id="roles" id="roles" ></select>
+                 <!--<input type="text" wicket:id="roles" id="roles" style="width: 250px;display:inline"/>-->
                 <button wicket:id="roles.search" name="roles.search">search</button>
                 <div wicket:id="rolesmodal"></div>
             </td>
@@ -134,10 +144,19 @@
         </fieldset>
         <tr>
             <td>
+                <label for="newUserAdminRole">New Admin Role</label>
+            </td>
+            <td>
+                <input type="text" wicket:id="newUserAdminRole" id="newUserAdminRole" class="formLarge" style="width: 250px"/>
+            </td>
+        </tr>
+        <tr>
+            <td>
                 <label for="adminRoles">Admin Roles</label>
             </td>
             <td>
-                <input type="text" wicket:id="adminRoles" id="adminRoles" style="width: 250px;display:inline"/>
+<!--                <input type="text" wicket:id="adminRoles" id="adminRoles" style="width: 250px;display:inline"/>-->
+                <select wicket:id="adminRoles" id="adminRoles" ></select>
                 <button wicket:id="adminRoles.search" name="adminRoles.search">search</button>
                 <div wicket:id="adminrolesmodal"></div>
             </td>

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/d50dfd71/src/main/webapp/css/Uniform/sprite.png
----------------------------------------------------------------------
diff --git a/src/main/webapp/css/Uniform/sprite.png b/src/main/webapp/css/Uniform/sprite.png
new file mode 100644
index 0000000..5d22bc2
Binary files /dev/null and b/src/main/webapp/css/Uniform/sprite.png differ


Mime
View raw message