From 38f0add371eed2979fbb6d912a0439968caa0333 Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Fri, 19 Dec 2014 22:42:36 +0000
Subject: [PATCH]

---
 .../controllers/DataTableController.java      |   4 +-
 .../ExperimentUsersController.java            | 163 +++++++++++++-----
 .../portal/controllers/LoginController.java   |  11 +-
 .../controllers/RoleTypeController.java       |   1 -
 .../controllers/UserSystemRoleController.java |   4 +-
 .../dm/portal/model/beans/RoleTypeFacade.java |  10 ++
 .../dm/portal/model/beans/UserInfoFacade.java |  11 ++
 .../dm/portal/model/entities/RoleType.java    |   4 +-
 .../dm/portal/model/entities/UserInfo.java    |  11 +-
 .../model/tempstorage/ExperimentUser.java     |  38 ++++
 .../DmWebPortal/web/resources/css/login.css   |   3 +
 .../DmWebPortal/web/resources/css/portal.css  |  27 ++-
 .../templates/contentViewTemplate4x3.xhtml    |   4 +-
 .../web/views/experiment/edit.xhtml           |   2 +-
 .../experimentCreatePanelGrid.xhtml           |   5 +-
 .../experiment/experimentEditPanelGrid.xhtml  |   6 +-
 .../experiment/experimentListDataTable.xhtml  |  13 +-
 .../experimentUsersListDataTable.xhtml        | 115 ++++++------
 .../experiment/experimentViewPanelGrid.xhtml  |   3 -
 .../web/views/experiment/view.xhtml           |  54 +++---
 .../web/views/experimentType/edit.xhtml       |   2 +-
 .../experimentTypeEditPanelGrid.xhtml         |   3 -
 .../experimentTypeListDataTable.xhtml         |   8 +-
 .../experimentTypeViewPanelGrid.xhtml         |   3 -
 .../web/views/experimentType/view.xhtml       |   2 +-
 src/java/DmWebPortal/web/views/login.xhtml    |   3 +-
 .../DmWebPortal/web/views/roleType/edit.xhtml |   2 +-
 .../roleType/roleTypeEditPanelGrid.xhtml      |   3 -
 .../roleType/roleTypeListDataTable.xhtml      |   6 +-
 .../roleType/roleTypeViewPanelGrid.xhtml      |   3 -
 .../DmWebPortal/web/views/roleType/view.xhtml |   2 +-
 .../DmWebPortal/web/views/userInfo/edit.xhtml |   2 +-
 .../userInfo/userInfoEditPanelGrid.xhtml      |   3 -
 .../userInfo/userInfoListDataTable.xhtml      |  12 +-
 .../userInfo/userInfoViewPanelGrid.xhtml      |   3 -
 .../DmWebPortal/web/views/userInfo/view.xhtml |   2 +-
 .../systemRoleListDataTable.xhtml             |  12 +-
 37 files changed, 353 insertions(+), 207 deletions(-)
 create mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java

diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java
index 40c603ca..6104a57a 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java
@@ -32,9 +32,7 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im
     public void initialize() {
     }
     
-    public abstract String getEntityTypeName();
-
-//    public abstract String getCurrentEntityInstanceName();
+    public abstract String getClassName();
 
     public EntityType getCurrent() {
         return current;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java
index 10ef1839..0a63654a 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java
@@ -7,10 +7,15 @@
 package gov.anl.aps.dm.portal.controllers;
 
 
+import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
 import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade;
+import gov.anl.aps.dm.portal.model.beans.UserInfoFacade;
 import gov.anl.aps.dm.portal.model.entities.Experiment;
+import gov.anl.aps.dm.portal.model.entities.RoleType;
 import gov.anl.aps.dm.portal.model.entities.UserInfo;
+import gov.anl.aps.dm.portal.model.tempstorage.ExperimentUser;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 import javax.ejb.EJB;
 import javax.enterprise.context.SessionScoped;
@@ -26,32 +31,101 @@ public class ExperimentUsersController  implements Serializable {
     @EJB
     private UserExperimentRoleFacade userExperimentRoleFacade;
 
+    @EJB
+    private UserInfoFacade userInfoFacade;
+
+    @EJB
+    private RoleTypeFacade roleTypeFacade;
+
     public ExperimentUsersController() {
         this.experimentUsersTable = new ExperimentUsersTable();
     }
 
-    class ExperimentUsersTable extends DataTableController<UserInfo> {
+    class ExperimentUsersTable extends DataTableController<ExperimentUser> {
+
+//        @Override
+//        public String getClassName() {
+//            return "UserInfo";
+//        }
+//
+//        @Override
+//        public List<UserInfo> findAll() {
+//            try {
+//                return userInfoFacade.findUsersInExperiment(experiment.getId());
+//            } catch (NumberFormatException e) {
+//                return null;
+//            }
+//        }
 
         @Override
-        public String getEntityTypeName() {
-            return "UserInfo";
+        public String getClassName() {
+            return "ExperimentUser";
         }
 
         @Override
-        public List<UserInfo> findAll() {
-            // find all users in experiment
-            return null;
+        public List<ExperimentUser> findAll() {
+            experimentUsers.clear();
+            try {
+                List<UserInfo> list = userInfoFacade.findUsersInExperiment(experiment.getId());
+                convertExperimentUsers(list);
+                return experimentUsers;
+            } catch (NumberFormatException e) {
+                return null;
+            }
+        }
+        
+        void convertExperimentUsers(List<UserInfo> list) {
+            List<RoleType> roleTypes = roleTypeFacade.findByRoleSystemType(false);
+            generateColumns(roleTypes);
+            for (UserInfo user : list) {
+                ExperimentUser eUser = new ExperimentUser();
+                eUser.setUsername(user.getUsername());
+                eUser.setName(user.getLastName() + ", " + user.getFirstName());
+                for (RoleType roleType : roleTypes) {
+                    eUser.setIsInRole(roleType, user.inRole(roleType.getId(), experiment.getId()));
+                }
+                experimentUsers.add(eUser);
+            }
         }
     }
-  
+
+    static class ColumnModel implements Serializable {
+        private String header;
+        private int property;
+
+        public ColumnModel(String header, int property) {
+            this.header = header;
+            this.property = property;
+        }
+
+        public String getHeader() {
+            return header;
+        }
+
+        public int getProperty() {
+            return property;
+        }
+    }
+
     private ExperimentUsersTable experimentUsersTable;
     private Experiment experiment;
+    private List<ExperimentUser> experimentUsers = new ArrayList<>();
+    private List<ColumnModel> columns;
+
+    public List<ColumnModel> getColumns() {
+        return columns;
+    }
+
+    public void setColumns(List<ColumnModel> columns) {
+        this.columns = columns;
+    }
 
     public Experiment getExperiment() {
         return experiment;
     }
 
     public void setExperiment(Experiment experiment) {
+        experimentUsersTable.resetList();
         this.experiment = experiment;
     }
 
@@ -63,44 +137,53 @@ public class ExperimentUsersController  implements Serializable {
         this.experimentUsersTable = experimentUsersTable;
     }
     
-    public String getCurrentEntityInstanceName() {
-        return null;
-    }
-    
-    public String remove() {
-        return null;
-    }
-    
-    public boolean canRemove(String removerUsername, UserInfo removee) {
-        return false;
-    }
-    
-    public boolean canAddUsers(String username) {
-        return true;
-    }
-    
-    public boolean isManager(String userId) {
-        return true;
+    void generateColumns(List<RoleType> roleTypes) {
+        for (RoleType role : roleTypes) {
+            ColumnModel column = new ColumnModel(role.getName(), role.getId());
+            columns.add(column);
+        }
     }
     
-    public boolean isPI(String userId) {
-        return true;
-    }
+//    public boolean getIsInRole() {
+//        
+//    }
+//    
+//    public void setIsInRole(boolean inRole)
+//  
     
-    public boolean isUser(String userId) {
-        return true;
-    }
     
-    public boolean canAssignManager(String userId) {
-        return true;
-    }
     
-    public boolean canAssignPI(String userId) {
-        return true;
-    }
     
-    public boolean canAssignUser(String userId) {
-        return true;
-    }
+//    public String getCurrentEntityInstanceName() {
+//        return null;
+//    }
+//    
+//    public String remove() {
+//        return null;
+//    }
+//    
+//    public boolean canRemove(String removerUsername, UserInfo removee) {
+//        return false;
+//    }
+//    
+//    public boolean canAddUsers(String username) {
+//        return true;
+//    }
+//    
+//    public void setIsInRole(int roleId, String userId) {
+//        
+//    }
+//    
+//    public boolean canAssignManager(String userId) {
+//        return true;
+//    }
+//    
+//    public boolean canAssignPI(String userId) {
+//        return true;
+//    }
+//    
+//    public boolean canAssignUser(String userId) {
+//        return true;
+//    }
     
 }
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
index 8f1c34f5..08e577a0 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
@@ -95,13 +95,13 @@ public class LoginController implements Serializable
     public String login() {
         loggedIn = false;
         if (username == null || password == null || username.isEmpty() || password.isEmpty()) {
-            SessionUtility.addWarningMessage("Incomplete Input", "Please enter both username and password.");
-            return (username = password = null);
+           SessionUtility.addWarningMessage(null, "Incomplete Input. Please enter both username and password.");
+           return (username = password = null);
         }
 
         user = userInfoFacade.findByUsername(username);
         if (user == null) {
-            SessionUtility.addErrorMessage("Unknown User", "Username " + username + " is not registered. Contact administrator.");
+            SessionUtility.addErrorMessage(null, "Username " + username + " is not registered. Contact administrator.");
             return (username = password = null);
         }
 
@@ -115,7 +115,7 @@ public class LoginController implements Serializable
             validCredentials = true;
         }
         else {
-            logger.debug("User " + username + " is not authorized");
+            logger.debug("User " + username + " is not authorized.");
         }
 
         if (validCredentials) {
@@ -126,7 +126,8 @@ public class LoginController implements Serializable
             return getLandingPage();
         }
         else {
-            SessionUtility.addErrorMessage("Invalid Credentials", "Username/password combination could not be verified.");
+             SessionUtility.addErrorMessage(null, "Invalid Credentials. Username/password combination could not be verified.");
+             SessionUtility.addErrorMessage(null, "If you are having difficulty logging in, please see our <a href=\"http://www.anl.gov/employees/working-remotely/login-help\">Login Help</a> page.");
             return (username = password = null);
         }
 
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
index 8c04ff6f..49160828 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
@@ -5,7 +5,6 @@ import gov.anl.aps.dm.portal.exceptions.MissingProperty;
 import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
 import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
 import gov.anl.aps.dm.portal.model.entities.RoleType;
-import java.util.ArrayList;
 import java.util.List;
 import javax.ejb.EJB;
 import javax.enterprise.context.SessionScoped;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java
index 27316911..3cf77a14 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java
@@ -37,7 +37,7 @@ public class UserSystemRoleController  implements Serializable
     class SystemRoleTypeTable extends DataTableController<UserInfo> {
 
         @Override
-        public String getEntityTypeName() {
+        public String getClassName() {
             return "UserInfo";
         }
 
@@ -55,7 +55,7 @@ public class UserSystemRoleController  implements Serializable
     class NoSystemRoleTypeTable extends DataTableController<UserInfo> {
 
         @Override
-        public String getEntityTypeName() {
+        public String getClassName() {
             return "UserInfo";
         }
 
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
index 412bbea3..045470b7 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
@@ -57,4 +57,14 @@ public class RoleTypeFacade extends AbstractFacade<RoleType>
         return findByName(name) != null;
     }
 
+    public List<RoleType> findByRoleSystemType(boolean systemType) {
+        try {
+            return (List<RoleType>) em.createNamedQuery("RoleType.findByRoleSystemType")
+                    .setParameter("systemType", systemType)
+                    .getResultList();
+        } catch (NoResultException ex) {
+        }
+        return null;
+    }
+
 }
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
index 16b40cf5..4712ca73 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
@@ -68,4 +68,15 @@ public class UserInfoFacade extends AbstractFacade<UserInfo>
         }
         return null;
     }
+
+    public List<UserInfo> findUsersInExperiment(int experimentId) {
+        try {
+            return (List<UserInfo>) em.createNamedQuery("UserInfo.findUsersInExperiment")
+                    .setParameter("experimentId", experimentId)
+                    .getResultList();
+        } catch (NoResultException ex) {
+        }
+        return null;
+    }
+
 }
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
index 98be61c2..37ff5fdd 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
@@ -38,7 +38,9 @@ import javax.xml.bind.annotation.XmlTransient;
     @NamedQuery(name = "RoleType.findAll", query = "SELECT r FROM RoleType r"),
     @NamedQuery(name = "RoleType.findById", query = "SELECT r FROM RoleType r WHERE r.id = :id"),
     @NamedQuery(name = "RoleType.findByName", query = "SELECT r FROM RoleType r WHERE r.name = :name"),
-    @NamedQuery(name = "RoleType.findByDescription", query = "SELECT r FROM RoleType r WHERE r.description = :description")})
+    @NamedQuery(name = "RoleType.findByDescription", query = "SELECT r FROM RoleType r WHERE r.description = :description"),
+    @NamedQuery(name = "RoleType.findByRoleSystemType", query = "SELECT r FROM RoleType r WHERE r.isSystemRole = :systemType")})
+
 public class RoleType extends CloneableEntity
 {
     @Id
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
index f70d3282..56a6b742 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
@@ -42,7 +42,8 @@ import javax.xml.bind.annotation.XmlTransient;
     @NamedQuery(name = "UserInfo.findByDescription", query = "SELECT u FROM UserInfo u WHERE u.description = :description"),
     @NamedQuery(name = "UserInfo.findByPassword", query = "SELECT u FROM UserInfo u WHERE u.password = :password"),
     @NamedQuery(name = "UserInfo.findNonAdmins", query = "SELECT u FROM UserInfo u WHERE u.id NOT IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)"),
-    @NamedQuery(name = "UserInfo.findUsersInRole", query = "SELECT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)")})
+    @NamedQuery(name = "UserInfo.findUsersInRole", query = "SELECT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)"),
+    @NamedQuery(name = "UserInfo.findUsersInExperiment", query = "SELECT DISTINCT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.userExperimentRoleList r WHERE r.experiment.id = :experimentId)")})
 
 public class UserInfo extends CloneableEntity
 {
@@ -190,6 +191,14 @@ public class UserInfo extends CloneableEntity
     public void setUserSettingList(List<UserSetting> userSettingList) {
         this.userSettingList = userSettingList;
     }
+    
+    public boolean inRole(int roleId, int experimentId) {
+        for (UserExperimentRole experimentRole : userExperimentRoleList) {
+            if ((experimentRole.getUserExperimentRolePK().getRoleTypeId() == roleId) && (experimentRole.getUserExperimentRolePK().getExperimentId() == experimentId))
+                return true;
+        }
+        return false;
+    }
 
     @Override
     public int hashCode() {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java
new file mode 100644
index 00000000..3c629631
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java
@@ -0,0 +1,38 @@
+package gov.anl.aps.dm.portal.model.tempstorage;
+
+import gov.anl.aps.dm.portal.model.entities.CloneableEntity;
+import gov.anl.aps.dm.portal.model.entities.RoleType;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author bfrosik
+ */
+public class ExperimentUser extends CloneableEntity {
+
+    String username;
+    String name;
+    Map<RoleType, Boolean> roles = new HashMap();
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setIsInRole(RoleType role, boolean isInRole) {
+        roles.put(role, isInRole);
+    }
+    
+}
diff --git a/src/java/DmWebPortal/web/resources/css/login.css b/src/java/DmWebPortal/web/resources/css/login.css
index 4a1d0ef4..f96530e8 100644
--- a/src/java/DmWebPortal/web/resources/css/login.css
+++ b/src/java/DmWebPortal/web/resources/css/login.css
@@ -68,6 +68,9 @@ a:link:hover, a:visited:hover  {
     font-weight: normal;
     vertical-align: central;
     margin-top: 100px;
+    background-color: #f2f4f7;
+    color: saddlebrown;
+    size: auto;
 }
 
 .topLeftContent {
diff --git a/src/java/DmWebPortal/web/resources/css/portal.css b/src/java/DmWebPortal/web/resources/css/portal.css
index 28c15503..793ec59e 100644
--- a/src/java/DmWebPortal/web/resources/css/portal.css
+++ b/src/java/DmWebPortal/web/resources/css/portal.css
@@ -333,13 +333,6 @@ h1 {
     vertical-align: middle;
 }
 
-/*.homePage {
-    background-image: url(../../resources/images/ApsStorageRing.png);
-    background-repeat: no-repeat;
-    background-position: center;
-    background-size: auto 100%;
-}*/
-
 .pageTitle h1 {
     font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
     font-size:  20px;
@@ -435,4 +428,24 @@ h2 {
     background-image: url(../../resources/images/pdf.ico) !important;
     background-repeat: no-repeat;
     background-position: left
+}
+
+.ui-datatable-resizable {
+    table-layout: auto !important;
+}
+
+.ui-datatable {
+    table-layout: auto !important;
+}
+
+.ui-datatable-scrollable {
+    table-layout: fixed !important;
+}
+
+.ui-datatable table, .ui-datatable-resizable table {
+    table-layout: auto !important;
+}
+
+.ui-datatable-scrollable table {
+    table-layout: fixed !important;
 }
\ No newline at end of file
diff --git a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
index b8b399bd..d86b7d60 100644
--- a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
+++ b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
@@ -74,7 +74,7 @@
                     <ui:insert name="middleLeft">
                     </ui:insert>
                 </div>
-                <div>
+                
                     <div id="middleRight" class="middleRightContent">
                         <ui:insert name="middleRight">
                         </ui:insert>
@@ -83,7 +83,7 @@
                         <ui:insert name="middleCenter">
                         </ui:insert>
                     </div>
-                </div>
+                
             </div>
         </ui:fragment>
 
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index b7a4180c..00b14e43 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -20,7 +20,7 @@
                 <p/>
                 <div class="actionButton">
                     <p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
-                    <p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
             </div>
 
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentCreatePanelGrid.xhtml
index 7c8be0b4..6a8d48f5 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentCreatePanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentCreatePanelGrid.xhtml
@@ -19,13 +19,14 @@
             <f:selectItems value="#{experimentTypeController.getAvailableItems()}" 
                            var="experimentType"
                            itemValue="#{experimentType}"
-                           itemLabel="#{experimentType.name}"/>
+                           itemLabel="#{experimentType.name}"
+                           itemDescription="#{experimentType.description}" />
         </p:selectOneMenu>
 
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:inputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataText"/>      
 
-        <h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/>
+        <h:outputLabel for="startDate" value="Start Date"/>
         <p:calendar id="startDate" value="#{experimentObject.startDate}" mode="popup" showOn="button" />
         
         <h:outputLabel for="endDate" value="End Date" />
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
index 82f58902..62297e74 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
@@ -14,16 +14,14 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:inputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{experimentObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/>
         <p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataText">
             <f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" />
             <f:selectItems value="#{experimentTypeController.getAvailableItems()}" 
                            var="experimentType"
                            itemValue="#{experimentType}"
-                           itemLabel="#{experimentType.name}"/>
+                           itemLabel="#{experimentType.name}"
+                           itemDescription="#{experimentType.description}"/>
         </p:selectOneMenu>
 
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
index c981bb61..55fc48b4 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
@@ -18,17 +18,17 @@
                  widgetVar="experimentListWidget" 
                  emptyMessage="No experiments found.">
 
-        <p:column sortBy="#{experimentObject.id}" headerText="Id" width="40">
+        <p:column sortBy="#{experimentObject.id}" headerText="Id" >
             <h:outputText value="#{experimentObject.id}"/>
         </p:column>
 
         <p:column sortBy="#{experimentObject.name}" headerText="Name" 
-                  filterBy="#{experimentObject.name}" filterMatchMode="contains" width="120">
+                  filterBy="#{experimentObject.name}" filterMatchMode="contains" >
             <h:outputText value="#{experimentObject.name}"/>
         </p:column>
 
         <p:column sortBy="#{experimentObject.experimentType.name}" headerText="Type" 
-                  filterBy="#{experimentObject.experimentType.name}" filterMatchMode="exact" width="120">
+                  filterBy="#{experimentObject.experimentType.name}" filterMatchMode="exact" >
             <h:outputText value="#{experimentObject.experimentType.name}"/>
         </p:column>
 
@@ -38,7 +38,7 @@
         </p:column>
 
         <p:column sortBy="#{experimentObject.startDate}" headerText="Start Date" 
-                  filterBy="#{experimentObject.startDate}" filterMatchMode="contains" width="120">
+                  filterBy="#{experimentObject.startDate}" filterMatchMode="contains" >
 
             <h:outputText value="#{experimentObject.startDate}">
                           <f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
@@ -46,17 +46,18 @@
         </p:column>
         
         <p:column sortBy="#{experimentObject.endDate}" headerText="End Date" 
-                  filterBy="#{experimentObject.endDate}" filterMatchMode="contains" width="120">
+                  filterBy="#{experimentObject.endDate}" filterMatchMode="contains" >
 
             <h:outputText value="#{experimentObject.endDate}">
                 <f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
             </h:outputText>
         </p:column>
 
-        <p:column headerText="Actions" width="70">
+        <p:column headerText="Actions" >
             <div class="actionLink">
                 <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentUsersController.experiment}"/>
+                    <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
                 </p:commandLink>
                 <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
                 <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
index e9679706..b7544134 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
@@ -7,61 +7,68 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                 xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 
-             <div class="actionButton">
 
-                <p:commandButton id="experimentUserAddButton" value="Add" rendered="#{experimentUsersController.canAddUsers(loginController.username)}" icon="ui-icon-plus" >
-                    <p:tooltip for="experimentUserAddButton" value="Add new Users."/>
-                </p:commandButton>
+
+        <p:commandButton id="experimentUserAddButton" value="Add" rendered="#{experimentUsersController.canAddUsers(loginController.username)}" icon="ui-icon-plus" >
+            <p:tooltip for="experimentUserAddButton" value="Add new Users." />
+        </p:commandButton>
+
+        <p:commandButton id="ResetFiltersButton" action="#{experimentUsersController.experimentUsersTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUsersListWidget').clearFilters()" update="experimentUsersListDataTable">
+            <p:tooltip for="ResetFiltersButton" value="Reset filters."/>
+        </p:commandButton>
+
+        <p:dataTable id="experimentUsersListDataTable"                              
+                     var="experimentUserObject" 
+                     value="#{experimentUsersController.experimentUsersTable.listDataModel}" 
+                     filteredValue="#{experimentUsersController.experimentUsersTable.filteredObjectList}"
+                     paginator="true" 
+                     paginatorAlwaysVisible="false" 
+                     rows="25"
+                     binding="#{experimentUsersController.experimentUsersTable.listDataTable}"
+                     widgetVar="experimentUsersListWidget" 
+                     emptyMessage="No users found.">
+
+            <p:column sortBy="#{experimentUserObject.username}" headerText="Username" 
+                      filterBy="#{experimentUserObject.username}" filterMatchMode="contains" >
+                <h:outputText value="#{experimentUserObject.username}"/>
+            </p:column>
+
+            <p:column sortBy="#{experimentUserObject.name}" headerText="Last, First Name" 
+                      filterBy="#{experimentUserObject.name}" filterMatchMode="contains" >
+                <h:outputText value="#{experimentUserObject.name}"/>
+            </p:column>                  
                 
-                <p:commandButton id="ResetFiltersButton" action="#{experimentUsersController.experimentUsersTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
-                    <p:tooltip for="ResetFiltersButton" value="Reset list filters."/>
-                </p:commandButton>
-            </div>
-
-    <p:dataTable id="experimentUsersListDataTable"                              
-                 var="experimentUserObject" 
-                 value="#{experimentUsersController.experimentUsersTable.listDataModel}" 
-                 filteredValue="#{experimentUsersController.experimentUsersTable.filteredObjectList}"
-                 paginator="true" 
-                 paginatorAlwaysVisible="false" 
-                 rows="25"
-                 binding="#{experimentUsersController.experimentUsersTable.listDataTable}"
-                 widgetVar="experimentUsersListWidget" 
-                 emptyMessage="No users found.">
-
-        <p:column sortBy="#{experimentUserObject.username}" headerText="Username" 
-                  filterBy="#{experimentUserObject.username}" filterMatchMode="contains" width="100">
-            <h:outputText value="#{experimentUserObject.username}"/>
-        </p:column>
-
-        <p:column sortBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" headerText="Last, First Name" 
-                  filterBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" filterMatchMode="contains" width="120">
-            <h:outputText value="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}"/>
-        </p:column>                  
-
-        <p:column headerText="Manager" width="40">
-            <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignManager(loginController.username)}" />
-        </p:column>
-
-        <p:column headerText="PI" width="40">
-            <p:selectBooleanCheckbox value="#{experimentUsersController.isPI(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignPI(loginController.username)}" />
-
-        </p:column>
-
-        <p:column headerText="User" width="40">
-            <p:selectBooleanCheckbox value="#{experimentUsersController.isUser(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignUser(loginController.username)}" />
-
-        </p:column>
-
-
-        <p:column headerText="Actions" width="40">
-            <div class="actionLink" >
-            <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="#{experimentUsersController.canRemove(loginController.username, experimentUserObject)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
-                    <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentUsersController.experimentUsersTable.current}" />
-            </p:commandLink>
-            </div>
-        </p:column>
-
-    </p:dataTable>
+            <p:columns value="#{experimentUsersController.columns}" var="column">
+                <f:facet name=header">
+                         <h:outputText value="#{column.header}" />
+                </f:facet>
+                 <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="true" />                
+            </p:columns>
+     
+<!--            <p:column headerText="Manager" >
+                <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="true" />
+            </p:column>
+
+            <p:column headerText="PI" >
+                <p:selectBooleanCheckbox value="#{experimentUsersController.isPI(experimentUserObject.id)}" rendered="true" />
+
+            </p:column>
+
+            <p:column headerText="User" >
+                <p:selectBooleanCheckbox value="#{experimentUsersController.isUser(experimentUserObject.id)}" rendered="true" />
+
+            </p:column>-->
+
+
+            <p:column headerText="Actions" >
+                <div class="actionLink" >
+                    <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="true" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
+                        <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentUsersController.experimentUsersTable.current}" />
+                    </p:commandLink>
+                </div>
+            </p:column>
+
+        </p:dataTable>
+
 
 </ui:composition>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentViewPanelGrid.xhtml
index 1a7b8ccc..3ce041b0 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentViewPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentViewPanelGrid.xhtml
@@ -13,9 +13,6 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:outputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{experimentObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="experimentType" value="Type" styleClass="entityDataLabel"/>
         <h:outputText id="experimentType" value="#{experimentObject.experimentType.name}" title="Name" styleClass="entityDataText"/>
 
diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml
index 97d346db..329c53ad 100644
--- a/src/java/DmWebPortal/web/views/experiment/view.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml
@@ -10,40 +10,34 @@
 
     <ui:define name="middleCenter">
         <h:form id="viewExperimentForm">
-
-            <div class="middleCenterLeftContent">
-                <div class="pageTitle">
-                    <h1>Experiment Details</h1>
-                </div>
-
-                <ui:include src="experimentViewPanelGrid.xhtml"/>
-                
-                <p/>
-                    <c:set var="experimentObject" value="#{experimentController.selected}"/>
-                <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
-                <div class="actionButton">
-                    <p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{isEntityWriteable}" value="Edit" alt="Edit" icon="ui-icon-pencil"/>
-                    <p:commandButton onclick="PF('experimentDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash">
-                        <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
-                    </p:commandButton>  
-                    <p:commandButton action="#{experimentController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
-                </div>
-
-                <ui:include src="experimentDestroyDialog.xhtml"/>
-                
-                <p/>
-                <h2>Experiment Users</h2>
-                 <p/>               
- 
-                <ui:include src="experimentUsersListDataTable.xhtml"/>
-
-                
+            <div class="pageTitle">
+                <h1>Experiment Details</h1>
             </div>
 
-        </h:form>
+            <p:accordionPanel multiple="true">
+                <p:tab title="Experiment Properties">
+                    <div class="middleCenterLeftContent">
+                        <ui:include src="experimentViewPanelGrid.xhtml"/>
+                    </div>
+                </p:tab>
 
-    </ui:define>
+                <p:tab title="Experiment Users">                
+                    <ui:include src="experimentUsersListDataTable.xhtml"/>
+                </p:tab>
+            </p:accordionPanel>
 
+            <p/>
+
+            <div class="actionButton">
+                <p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.loggedIn}" value="Edit" alt="Edit" icon="ui-icon-pencil"/>
+                <p:commandButton onclick="PF('experimentDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash"/> 
+                <p:commandButton action="#{experimentController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
+            </div>
+            <ui:include src="experimentDestroyDialog.xhtml"/>
+        </h:form>
+    </ui:define>
 </ui:composition>
 
 
+
+
diff --git a/src/java/DmWebPortal/web/views/experimentType/edit.xhtml b/src/java/DmWebPortal/web/views/experimentType/edit.xhtml
index f7a9b637..2ece326e 100644
--- a/src/java/DmWebPortal/web/views/experimentType/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/edit.xhtml
@@ -20,7 +20,7 @@
                 <p/>
                 <div class="actionButton">
                     <p:commandButton action="#{experimentTypeController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
-                    <p:commandButton action="#{experimentTypeController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{experimentTypeController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
             </div>
 
diff --git a/src/java/DmWebPortal/web/views/experimentType/experimentTypeEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experimentType/experimentTypeEditPanelGrid.xhtml
index 58f77842..db6fdc86 100644
--- a/src/java/DmWebPortal/web/views/experimentType/experimentTypeEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/experimentTypeEditPanelGrid.xhtml
@@ -12,9 +12,6 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:inputText id="name" value="#{experimentTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/> 
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{experimentTypeObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:inputText id="description" value="#{experimentTypeObject.description}" title="Description" styleClass="entityDataText"/>     
 
diff --git a/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
index fd698f12..48d053aa 100644
--- a/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
@@ -18,12 +18,12 @@
                  widgetVar="experimentTypeListWidget" 
                  emptyMessage="No experiment types found.">
 
-        <p:column sortBy="#{experimentTypeObject.id}" headerText="Id" width="40">
+        <p:column sortBy="#{experimentTypeObject.id}" headerText="Id" >
             <h:outputText value="#{experimentTypeObject.id}"/>
         </p:column>
 
         <p:column sortBy="#{experimentTypeObject.name}" headerText="Name" 
-                  filterBy="#{experimentTypeObject.name}" filterMatchMode="contains" width="110">
+                  filterBy="#{experimentTypeObject.name}" filterMatchMode="contains" >
             <h:outputText value="#{experimentTypeObject.name}"/>
         </p:column>
 
@@ -33,11 +33,11 @@
         </p:column>
 
         <p:column sortBy="#{experimentTypeObject.rootDataPath}" headerText="Root Data Path" 
-                  filterBy="#{experimentTypeObject.rootDataPath}" filterMatchMode="contains" width="200">
+                  filterBy="#{experimentTypeObject.rootDataPath}" filterMatchMode="contains" >
             <h:outputText value="#{experimentTypeObject.rootDataPath}"/>
         </p:column>
         
-        <p:column headerText="Actions" width="50">
+        <p:column headerText="Actions" >
             <div class="actionLink">
                 <p:commandLink action="#{experimentTypeController.prepareView(experimentTypeObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
                 <p:commandLink action="#{experimentTypeController.prepareEdit(experimentTypeObject)}" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
diff --git a/src/java/DmWebPortal/web/views/experimentType/experimentTypeViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experimentType/experimentTypeViewPanelGrid.xhtml
index 80cf297c..8d92cdb2 100644
--- a/src/java/DmWebPortal/web/views/experimentType/experimentTypeViewPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/experimentTypeViewPanelGrid.xhtml
@@ -12,9 +12,6 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:outputText id="name" value="#{experimentTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{experimentTypeObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:outputText id="description" value="#{experimentTypeObject.description}" title="Description" styleClass="entityDataText"/>
  
diff --git a/src/java/DmWebPortal/web/views/experimentType/view.xhtml b/src/java/DmWebPortal/web/views/experimentType/view.xhtml
index 53947786..97c2745f 100644
--- a/src/java/DmWebPortal/web/views/experimentType/view.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/view.xhtml
@@ -25,7 +25,7 @@
                     <p:commandButton onclick="PF('experimentTypeDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash">
                         <f:setPropertyActionListener value="#{experimentTypeObject}" target="#{experimentTypeController.current}"/>
                     </p:commandButton>  
-                    <p:commandButton action="#{experimentTypeController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{experimentTypeController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
 
                 <ui:include src="experimentTypeDestroyDialog.xhtml"/>
diff --git a/src/java/DmWebPortal/web/views/login.xhtml b/src/java/DmWebPortal/web/views/login.xhtml
index fa5ac1ee..0c52069d 100644
--- a/src/java/DmWebPortal/web/views/login.xhtml
+++ b/src/java/DmWebPortal/web/views/login.xhtml
@@ -52,9 +52,8 @@
             </div>
 
             <div id="middleRight" class="middleRightContent" >
-                <p:messages id="messages" showDetail="true" autoUpdate="true" closable="false" showIcon="false" />
+                <p:messages id="messages" escape="false" showDetail="true" autoUpdate="true" closable="false" showIcon="false" />
             </div>
-            
         </div>
 
         <div id="bottom" class="sectionText"> 
diff --git a/src/java/DmWebPortal/web/views/roleType/edit.xhtml b/src/java/DmWebPortal/web/views/roleType/edit.xhtml
index 93d36536..92a6a7ef 100644
--- a/src/java/DmWebPortal/web/views/roleType/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/edit.xhtml
@@ -20,7 +20,7 @@
                 <p/>
                 <div class="actionButton">
                     <p:commandButton action="#{roleTypeController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
-                    <p:commandButton action="#{roleTypeController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{roleTypeController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
             </div>
 
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
index 2d7bf1fa..57d11e1e 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
@@ -14,9 +14,6 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:inputText id="name" value="#{roleTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{roleTypeObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:inputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>     
         
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
index ae568d98..1a58e673 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
@@ -19,12 +19,12 @@
                  emptyMessage="No role types found." >
 
 
-        <p:column sortBy="#{roleTypeObject.id}" headerText="Id" width="40">
+        <p:column sortBy="#{roleTypeObject.id}" headerText="Id" >
             <h:outputText value="#{roleTypeObject.id}"/>
         </p:column>
 
         <p:column sortBy="#{roleTypeObject.name}" headerText="Role Type" 
-                  filterBy="#{roleTypeObject.name}" filterMatchMode="contains" width="120">
+                  filterBy="#{roleTypeObject.name}" filterMatchMode="contains" >
             <h:outputText value="#{roleTypeObject.name}"/>
         </p:column>
 
@@ -36,7 +36,7 @@
         <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
 
 
-        <p:column headerText="Actions" width="80">
+        <p:column headerText="Actions" >
             <div class="actionLink">
                 <p:commandLink action="#{roleTypeController.prepareView(roleTypeObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
                 <p:commandLink action="#{roleTypeController.prepareEdit(roleTypeObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
index 0c64446c..9ded45b9 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
@@ -13,9 +13,6 @@
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
         <h:outputText id="name" value="#{roleTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{roleTypeObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:outputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>
         
diff --git a/src/java/DmWebPortal/web/views/roleType/view.xhtml b/src/java/DmWebPortal/web/views/roleType/view.xhtml
index 72fbd0e7..befa1674 100644
--- a/src/java/DmWebPortal/web/views/roleType/view.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/view.xhtml
@@ -26,7 +26,7 @@
                     <p:commandButton onclick="PF('roleTypeDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash">
                         <f:setPropertyActionListener value="#{roleTypeObject}" target="#{roleTypeController.current}"/>
                     </p:commandButton>  
-                    <p:commandButton action="#{roleTypeController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{roleTypeController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
 
                 <ui:include src="roleTypeDestroyDialog.xhtml"/>
diff --git a/src/java/DmWebPortal/web/views/userInfo/edit.xhtml b/src/java/DmWebPortal/web/views/userInfo/edit.xhtml
index 21822848..3a2bd6b2 100644
--- a/src/java/DmWebPortal/web/views/userInfo/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/edit.xhtml
@@ -20,7 +20,7 @@
                 <p/>
                 <div class="actionButton">
                     <p:commandButton action="#{userInfoController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
-                    <p:commandButton action="#{userInfoController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{userInfoController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
             </div>
             <div class="middleCenterRightContent">
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
index ae2bef42..6b6c56ba 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
@@ -14,9 +14,6 @@
         <h:inputText id="username" value="#{userInfoObject.username}" rendered="#{isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedText"/>
         <h:outputText id="usernameOutput" value="#{userInfoObject.username}" rendered="#{!isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{userInfoObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="lastName" value="Last Name" styleClass="entityDataLabel"/>
         <h:inputText id="lastName" value="#{userInfoObject.lastName}" rendered="#{isFieldWriteable}" title="Last Name" styleClass="entityDataText"/>
         <h:outputText id="lastNameOutput" value="#{userInfoObject.lastName}" rendered="#{!isFieldWriteable}" title="Last Name" styleClass="entityDataText"/>
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
index 2ee986b8..93bb73de 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
@@ -18,22 +18,22 @@
                  widgetVar="userInfoListWidget" 
                  emptyMessage="No users found.">
 
-        <p:column sortBy="#{userInfoObject.id}" headerText="Id" width="40">
+        <p:column sortBy="#{userInfoObject.id}" headerText="Id" >
             <h:outputText value="#{userInfoObject.id}"/>
         </p:column>
 
         <p:column sortBy="#{userInfoObject.username}" headerText="Username" 
-                  filterBy="#{userInfoObject.username}" filterMatchMode="contains" width="100">
+                  filterBy="#{userInfoObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{userInfoObject.username}"/>
         </p:column>
 
         <p:column sortBy="#{userInfoObject.lastName}" headerText="Last Name" 
-                  filterBy="#{userInfoObject.lastName}" filterMatchMode="contains" width="120">
+                  filterBy="#{userInfoObject.lastName}" filterMatchMode="contains" >
             <h:outputText value="#{userInfoObject.lastName}"/>
         </p:column>                  
 
         <p:column sortBy="#{userInfoObject.firstName}" headerText="First Name" 
-                  filterBy="#{userInfoObject.firstName}" filterMatchMode="contains" width="120">
+                  filterBy="#{userInfoObject.firstName}" filterMatchMode="contains" >
             <h:outputText value="#{userInfoObject.firstName}"/>
         </p:column> 
 
@@ -43,7 +43,7 @@
         </p:column> 
 
         <p:column sortBy="#{userInfoObject.email}" headerText="Email" 
-                  filterBy="#{userInfoObject.email}" filterMatchMode="contains" width="200">
+                  filterBy="#{userInfoObject.email}" filterMatchMode="contains" >
             <h:outputText value="#{userInfoObject.email}"/>
         </p:column>
 
@@ -52,7 +52,7 @@
             <h:outputText value="#{userInfoObject.description}"/>
         </p:column>
         
-        <p:column headerText="Actions" width="70">
+        <p:column headerText="Actions" >
             <div class="actionLink">
                 <p:commandLink action="#{userInfoController.prepareView(userInfoObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
                 <p:commandLink action="#{userInfoController.prepareEdit(userInfoObject)}" rendered="#{loginController.isUserWriteable(userInfoObject)}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
index b9e3a59a..06d76ff1 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
@@ -12,9 +12,6 @@
         <h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
         <h:outputText id="username" value="#{userInfoObject.username}" title="Username" styleClass="entityDataEmphasizedText"/>
 
-        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
-        <h:outputText id="id" value="#{userInfoObject.id}" title="Id" styleClass="entityDataText"/>
-
         <h:outputLabel for="lastName" value="Last Name" styleClass="entityDataLabel"/>
         <h:outputText id="lastName" value="#{userInfoObject.lastName}" title="Last Name" styleClass="entityDataText"/>
 
diff --git a/src/java/DmWebPortal/web/views/userInfo/view.xhtml b/src/java/DmWebPortal/web/views/userInfo/view.xhtml
index 1a537cf3..aefe56d1 100644
--- a/src/java/DmWebPortal/web/views/userInfo/view.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/view.xhtml
@@ -25,7 +25,7 @@
                     <p:commandButton onclick="PF('userInfoDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash">
                         <f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
                     </p:commandButton>  
-                    <p:commandButton action="#{userInfoController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                    <p:commandButton action="#{userInfoController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
 
                 <ui:include src="userInfoDestroyDialog.xhtml"/>
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
index b1317e25..c38ad452 100644
--- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
@@ -19,32 +19,32 @@
                  emptyMessage="No users found."
                  tableStyleClass="systemRoleTable">
 
-        <p:column sortBy="#{systemUserObject.id}" headerText="Id" width="40">
+        <p:column sortBy="#{systemUserObject.id}" headerText="Id" >
             <h:outputText value="#{systemUserObject.id}"/>
         </p:column>
 
         <p:column sortBy="#{systemUserObject.username}" headerText="Username" 
-                  filterBy="#{systemUserObject.username}" filterMatchMode="contains" width="100">
+                  filterBy="#{systemUserObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{systemUserObject.username}"/>
         </p:column>
 
         <p:column sortBy="#{systemUserObject.lastName}" headerText="Last Name" 
-                  filterBy="#{systemUserObject.lastName}" filterMatchMode="contains" width="120">
+                  filterBy="#{systemUserObject.lastName}" filterMatchMode="contains" >
             <h:outputText value="#{systemUserObject.lastName}"/>
         </p:column>                  
 
         <p:column sortBy="#{systemUserObject.firstName}" headerText="First Name" 
-                  filterBy="#{systemUserObject.firstName}" filterMatchMode="contains" width="120">
+                  filterBy="#{systemUserObject.firstName}" filterMatchMode="contains" >
             <h:outputText value="#{systemUserObject.firstName}"/>
         </p:column> 
 
         <p:column sortBy="#{systemUserObject.email}" headerText="Email" 
-                  filterBy="#{systemUserObject.email}" filterMatchMode="contains" width="200">
+                  filterBy="#{systemUserObject.email}" filterMatchMode="contains" >
             <h:outputText value="#{systemUserObject.email}"/>
         </p:column>
 
 
-        <p:column headerText="Actions" width="70">
+        <p:column headerText="Actions" >
             <div class="actionLink" >
             <p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{userSystemRoleController.hasSystemRole(loginController.username) and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
                     <f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.current}" />
-- 
GitLab