// Listeners
 // ---------------------------------------------------------------
 public void fetchAssociatedRoleGroups(ActionEvent e) {
   User selectedUser = (User) dataTable.getRowData();
   Collection<UserRole> userRoles = selectedUser.getUserRoles();
   List<String> roleNames = new ArrayList<String>();
   for (UserRole r : userRoles) {
     roleNames.add(r.getRole() + "|" + r.getRoleGroup());
   }
   setAssociatedRoleGroupRoleNames(roleNames);
   usersAssociatedRoleGroupEditable = true;
   editModeRows.put(dataTable.getRowIndex(), true);
 }
 @Override
 public void actionDelete() {
   // Get selected items.
   List<User> deleteItems = new ArrayList<User>();
   String deletedItemsNames = "";
   for (int index = 0; index < dataList.size(); index++) {
     if (isSelectedRow(index)) {
       deleteItems.add(dataList.get(index));
     }
   }
   if (deleteItems.isEmpty()) {
     ToolSet.setErrorMessage("Select at least one item to delete.");
     return;
   }
   Collection<UserRole> roles;
   for (User deleteItem : deleteItems) {
     // Check if there are roles assoicated with the user, before delete
     // action.
     roles = deleteItem.getUserRoles();
     if (roles.isEmpty()) {
       try {
         userDAO.remove(deleteItem);
         deletedItemsNames = deletedItemsNames + "(" + deleteItem.getUsername() + ");<br>";
       } catch (Exception e) {
         ToolSet.setErrorMessage(e.getMessage() + " Cause: " + e.getCause());
         e.printStackTrace();
         return;
       }
     } else {
       String message = "Disassociate from role before delete!";
       ToolSet.setErrorMessage(message);
       return;
     }
   }
   if (deletedItemsNames.length() > 0)
     ToolSet.setErrorMessage("Deleted entries: <br>" + deletedItemsNames);
 }