Author: solomax
Date: Thu Aug 30 19:02:24 2012
New Revision: 1379068

URL: http://svn.apache.org/viewvc?rev=1379068&view=rev
Log:
Web interface is improved:
1) Wicket works at /openmeetings/html
2) Admin users page displays paged user list and selects users with Ajax

Added:
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_down.png
   (with props)
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_right.png
   (with props)
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/NaviDTO.java
Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/web.xml
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/jMenu.jquery.css
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/basic/Navimanagement.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/user/Users.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/app/WebSession.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/MenuPage.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.html
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.java

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/web.xml?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/web.xml 
(original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/web.xml Thu 
Aug 30 19:02:24 2012
@@ -64,10 +64,9 @@
     
     <filter-mapping>
         <filter-name>ServletRequestExFilter</filter-name>
-        <url-pattern>/*</url-pattern>
+        <url-pattern>*</url-pattern>
     </filter-mapping>
 
-       <!--  Commented for now
        <filter>
                <filter-name>OpenmeetingsApplication</filter-name>
                
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
@@ -78,9 +77,8 @@
        </filter>
        <filter-mapping>
                <filter-name>OpenmeetingsApplication</filter-name>
-               <url-pattern>/*</url-pattern>
+               <url-pattern>/html/*</url-pattern>
        </filter-mapping>
-       -->
         
     <context-param>
         <param-name>contextConfigLocation</param-name>

Added: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_down.png
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_down.png?rev=1379068&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_down.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_right.png
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_right.png?rev=1379068&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/arrow_right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/jMenu.jquery.css
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/jMenu.jquery.css?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/jMenu.jquery.css
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/jMenu.jquery.css
 Thu Aug 30 19:02:24 2012
@@ -15,6 +15,7 @@
        background-color: #322f32;
        margin: 0; //
        float: left;
+       width: 120px;
 }
 
 #jMenu li a {

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/basic/Navimanagement.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/basic/Navimanagement.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/basic/Navimanagement.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/basic/Navimanagement.java
 Thu Aug 30 19:02:24 2012
@@ -20,7 +20,6 @@ package org.openmeetings.app.data.basic;
 
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -28,6 +27,8 @@ import javax.persistence.PersistenceCont
 import javax.persistence.TypedQuery;
 
 import org.openmeetings.app.OpenmeetingsVariables;
+import org.openmeetings.app.dto.NaviDTO;
+import org.openmeetings.app.dto.NaviDTO.MenuActions;
 import org.openmeetings.app.persistence.beans.basic.Naviglobal;
 import org.openmeetings.app.persistence.beans.basic.Navimain;
 import org.red5.logging.Red5LoggerFactory;
@@ -60,26 +61,45 @@ public class Navimanagement {
        }
        
        public List<Naviglobal> getMainMenu(long user_level, long USER_ID, long 
language_id) {
-               List<Naviglobal> ll = this.getMainMenu(user_level, USER_ID);
-               for (Iterator<Naviglobal> it2 = ll.iterator(); it2.hasNext();) {
-                       Naviglobal navigl = it2.next();
+               List<Naviglobal> ll = getMainMenu(user_level, USER_ID);
+               for (Naviglobal navigl : ll) {
                        
navigl.setLabel(fieldmanagment.getFieldByIdAndLanguageByNavi(
                                        navigl.getFieldvalues_id(), 
language_id));
                        
navigl.setTooltip(fieldmanagment.getFieldByIdAndLanguageByNavi(
                                        navigl.getTooltip_fieldvalues_id(), 
language_id));
-                       List<Navimain> s = navigl.getMainnavi();
-                       for (Iterator<Navimain> it3 = s.iterator(); 
it3.hasNext();) {
-                               Navimain navim = it3.next();
+                       for (Navimain navim : navigl.getMainnavi()) {
                                
navim.setLabel(fieldmanagment.getFieldByIdAndLanguageByNavi(
                                                navim.getFieldvalues_id(), 
language_id));
                                
navim.setTooltip(fieldmanagment.getFieldByIdAndLanguageByNavi(
                                                
navim.getTooltip_fieldvalues_id(), language_id));
-
                        }
                }
                return ll;
        }
 
+       //FIXME need to be refactored
+       public List<NaviDTO> getMainMenuDTO(long user_level, long USER_ID, long 
language_id) {
+               ArrayList<NaviDTO> result = new ArrayList<NaviDTO>();
+               for (Naviglobal ng: getMainMenu(user_level, USER_ID, 
language_id)) {
+                       NaviDTO nd = new NaviDTO();
+                       //nd.setAction(MenuActions.valueOf(ng.getAction()));
+                       nd.setLabel(ng.getLabel().getValue());
+                       nd.setTooltip(ng.getTooltip().getValue());
+                       ArrayList<NaviDTO> items = new ArrayList<NaviDTO>();
+                       for (Navimain navim : ng.getMainnavi()) {
+                               NaviDTO mnd = new NaviDTO();
+                               
mnd.setAction(MenuActions.valueOf(navim.getAction()));
+                               mnd.setParam(navim.getParams());
+                               mnd.setLabel(navim.getLabel().getValue());
+                               mnd.setTooltip(navim.getTooltip().getValue());
+                               items.add(mnd);
+                       }
+                       nd.setItems(items);
+                       result.add(nd);
+               }
+               return result;
+       }
+       
        public List<Naviglobal> getMainMenu(long user_level, long USER_ID) {
                try {
                        TypedQuery<Naviglobal> query = 
em.createNamedQuery("getNavigation", Naviglobal.class);

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/user/dao/UsersDaoImpl.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
 Thu Aug 30 19:02:24 2012
@@ -137,6 +137,13 @@ public class UsersDaoImpl {
                return null;
        }
 
+       public List<Users> getNondeletedUsers(int first, int count) {
+               TypedQuery<Users> q = em.createNamedQuery("getNondeletedUsers", 
Users.class);
+               q.setFirstResult(first);
+               q.setMaxResults(count);
+               return q.getResultList();
+       }
+
        public List<Users> getAllUsers() {
                try {
                        // get all non-deleted users

Added: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/NaviDTO.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/NaviDTO.java?rev=1379068&view=auto
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/NaviDTO.java
 (added)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/dto/NaviDTO.java
 Thu Aug 30 19:02:24 2012
@@ -0,0 +1,81 @@
+/*
+ * 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.openmeetings.app.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class NaviDTO implements Serializable {
+       private static final long serialVersionUID = -5791532960902753608L;
+       public enum MenuActions {
+               dashboardModuleStartScreen
+               , dashboardModuleCalendar
+               , recordModule
+               , conferenceModuleRoomList
+               , eventModuleRoomList
+               , moderatorModuleUser
+               , moderatorModuleRoom
+               , adminModuleUser
+               , adminModuleConnections
+               , adminModuleOrg
+               , adminModuleRoom
+               , adminModuleConfiguration
+               , adminModuleLanguages
+               , adminModuleLDAP
+               , adminModuleBackup
+               , adminModuleServers
+       }
+
+       private String label;
+       private String tooltip;
+       private MenuActions action;
+       private String param;
+       private List<NaviDTO> items;
+       
+       public String getLabel() {
+               return label;
+       }
+       public void setLabel(String label) {
+               this.label = label;
+       }
+       public String getTooltip() {
+               return tooltip;
+       }
+       public void setTooltip(String tooltip) {
+               this.tooltip = tooltip;
+       }
+       public MenuActions getAction() {
+               return action;
+       }
+       public void setAction(MenuActions action) {
+               this.action = action;
+       }
+       public String getParam() {
+               return param;
+       }
+       public void setParam(String param) {
+               this.param = param;
+       }
+       public List<NaviDTO> getItems() {
+               return items;
+       }
+       public void setItems(List<NaviDTO> items) {
+               this.items = items;
+       }
+}

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/user/Users.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/user/Users.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/user/Users.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/user/Users.java
 Thu Aug 30 19:02:24 2012
@@ -51,9 +51,9 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @NamedQueries({
-    @NamedQuery(name="getAllUsers",
-               query="SELECT u FROM Users u")
-    , @NamedQuery(name="getUsersByOrganisationId",
+       @NamedQuery(name="getAllUsers", query="SELECT u FROM Users u")
+       , @NamedQuery(name="getNondeletedUsers", query="SELECT u FROM Users u 
WHERE u.deleted = false")
+       , @NamedQuery(name="getUsersByOrganisationId",
        query="SELECT u FROM Users u WHERE u.deleted = false AND 
u.organisation_users.organisation.organisation_id = :organisation_id")
 })
 @Table(name = "users")

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/app/WebSession.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/app/WebSession.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/app/WebSession.java
 Thu Aug 30 19:02:24 2012
@@ -18,15 +18,19 @@
  */
 package org.openmeetings.web.app;
 
+import java.util.List;
+
 import 
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.request.Request;
 import org.openmeetings.app.data.basic.AuthLevelmanagement;
 import org.openmeetings.app.data.basic.Configurationmanagement;
 import org.openmeetings.app.data.basic.Fieldmanagment;
+import org.openmeetings.app.data.basic.Navimanagement;
 import org.openmeetings.app.data.basic.Sessionmanagement;
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
+import org.openmeetings.app.dto.NaviDTO;
 import org.openmeetings.app.persistence.beans.basic.Sessiondata;
 import org.openmeetings.app.persistence.beans.user.Users;
 
@@ -35,6 +39,7 @@ public class WebSession extends Abstract
        private long userId = -1;
        private long userLevel = -1;
        private String SID = null;
+       private List<NaviDTO> menu = null;
        
        public WebSession(Request request) {
                super(request);
@@ -84,6 +89,15 @@ public class WebSession extends Abstract
                return fieldManagment.getString(id, getLanguage());
        }
        
+       public static List<NaviDTO> getNavMenu() {
+               WebSession session = get();
+               if (session.menu == null) {
+                       session.menu = Application.getBean(Navimanagement.class)
+                                       .getMainMenuDTO(session.userLevel, 
session.userId, getLanguage());
+               }
+               return session.menu;
+       }
+       
        public static long getLanguage() {
                WebSession session = get();
                if (session.isSignedIn()) {

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/MenuPage.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/MenuPage.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/MenuPage.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/MenuPage.java
 Thu Aug 30 19:02:24 2012
@@ -18,101 +18,76 @@
  */
 package org.openmeetings.web.pages;
 
-import java.util.List;
-
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.markup.html.list.AbstractItem;
-import org.apache.wicket.markup.repeater.RepeatingView;
-import org.openmeetings.app.data.basic.Navimanagement;
-import org.openmeetings.app.persistence.beans.basic.Naviglobal;
-import org.openmeetings.app.persistence.beans.basic.Navimain;
-import org.openmeetings.web.app.Application;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.openmeetings.app.dto.NaviDTO;
 import org.openmeetings.web.app.WebSession;
 import org.openmeetings.web.pages.admin.UsersPage;
 
 public class MenuPage extends UserPage {
        private static final long serialVersionUID = 6421960759218157999L;
-       private enum MenuActions {
-               dashboardModuleStartScreen
-               , dashboardModuleCalendar
-               , recordModule
-               , conferenceModuleRoomList
-               , eventModuleRoomList
-               , moderatorModuleUser
-               , moderatorModuleRoom
-               , adminModuleUser
-               , adminModuleConnections
-               , adminModuleOrg
-               , adminModuleRoom
-               , adminModuleConfiguration
-               , adminModuleLanguages
-               , adminModuleLDAP
-               , adminModuleBackup
-               , adminModuleServers
-       }
        
        public MenuPage() {
-               //FIXME all this need to be refactored
-               List<Naviglobal> menu = 
Application.getBean(Navimanagement.class)
-                       .getMainMenu(WebSession.getUserLevel(), 
WebSession.getUserId(), WebSession.getLanguage());
-
-               RepeatingView repeater = new RepeatingView("mainItem");
-               add(repeater);
-               for (Naviglobal global : menu) {
-                       AbstractItem item = new 
AbstractItem(repeater.newChildId());
-                       repeater.add(item);
-                       item.add(new Label("label", 
global.getLabel().getValue()).setRenderBodyOnly(true));
+               add(new ListView<NaviDTO>("mainItem", WebSession.getNavMenu()) {
+                       private static final long serialVersionUID = 
2173926553418745231L;
 
-                       RepeatingView subRepeater = new 
RepeatingView("childItem");
-                       item.add(subRepeater);
-                       for (Navimain subMenu : global.getMainnavi()) {
-                               AbstractItem subItem = new 
AbstractItem(subRepeater.newChildId());
-                               subRepeater.add(subItem);
+                       @Override
+                       protected void populateItem(ListItem<NaviDTO> item) {
+                               NaviDTO gl = item.getModelObject();
+                               item.add(new Label("label", 
gl.getLabel()).setRenderBodyOnly(true));
                                
+                               item.add(new ListView<NaviDTO>("childItem", 
gl.getItems()) {
+                                       private static final long 
serialVersionUID = 3609635268338379087L;
 
-                               Link<Void> link = new 
BookmarkablePageLink<Void>("link", MenuPage.class);
-                               
switch(MenuActions.valueOf(subMenu.getAction())) {
-                                       case dashboardModuleStartScreen:
-                                               break;
-                                       case dashboardModuleCalendar:
-                                               break;
-                                       case recordModule:
-                                               break;
-                                       case conferenceModuleRoomList:
-                                               //requires params
-                                               break;
-                                       case eventModuleRoomList:
-                                               break;
-                                       case moderatorModuleUser:
-                                               break;
-                                       case moderatorModuleRoom:
-                                               break;
-                                       case adminModuleUser:
-                                               link = new 
BookmarkablePageLink<Void>("link", UsersPage.class);
-                                               break;
-                                       case adminModuleConnections:
-                                               break;
-                                       case adminModuleOrg:
-                                               break;
-                                       case adminModuleRoom:
-                                               break;
-                                       case adminModuleConfiguration:
-                                               break;
-                                       case adminModuleLanguages:
-                                               break;
-                                       case adminModuleLDAP:
-                                               break;
-                                       case adminModuleBackup:
-                                               break;
-                                       case adminModuleServers:
-                                               break;
-                               }
-                               subItem.add(link);
-                               link.add(new Label("name", 
subMenu.getLabel().getValue()).setRenderBodyOnly(true));
-                               link.add(new Label("description", 
subMenu.getTooltip().getValue()).setRenderBodyOnly(true));
+                                       @Override
+                                       protected void 
populateItem(ListItem<NaviDTO> item) {
+                                               NaviDTO m = 
item.getModelObject();
+                                               Link<Void> link = new 
BookmarkablePageLink<Void>("link", MenuPage.class);
+                                               switch(m.getAction()) {
+                                                       case 
dashboardModuleStartScreen:
+                                                               break;
+                                                       case 
dashboardModuleCalendar:
+                                                               break;
+                                                       case recordModule:
+                                                               break;
+                                                       case 
conferenceModuleRoomList:
+                                                               //requires 
params
+                                                               break;
+                                                       case 
eventModuleRoomList:
+                                                               break;
+                                                       case 
moderatorModuleUser:
+                                                               break;
+                                                       case 
moderatorModuleRoom:
+                                                               break;
+                                                       case adminModuleUser:
+                                                               link = new 
BookmarkablePageLink<Void>("link", UsersPage.class);
+                                                               break;
+                                                       case 
adminModuleConnections:
+                                                               break;
+                                                       case adminModuleOrg:
+                                                               break;
+                                                       case adminModuleRoom:
+                                                               break;
+                                                       case 
adminModuleConfiguration:
+                                                               break;
+                                                       case 
adminModuleLanguages:
+                                                               break;
+                                                       case adminModuleLDAP:
+                                                               break;
+                                                       case adminModuleBackup:
+                                                               break;
+                                                       case adminModuleServers:
+                                                               break;
+                                               }
+                                               item.add(link);
+                                               link.add(new Label("name", 
m.getLabel()).setRenderBodyOnly(true));
+                                               link.add(new 
Label("description", m.getTooltip()).setRenderBodyOnly(true));
+                                       }
+                               }.setReuseItems(true));
                        }
-               }
+               }.setReuseItems(true));
        }
 }

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.html
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.html?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.html
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.html
 Thu Aug 30 19:02:24 2012
@@ -21,6 +21,29 @@
 <html xmlns="http://www.w3.org/1999/xhtml"; 
        
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.5-strict.dtd"; 
lang="en">
        <wicket:extend>
-               Users will goes here
+               <table>
+                       <tr>
+                               <td>
+                                       <span wicket:id="navigator">[dataview 
navigator]</span>
+                                       <table>
+                                               <tr>
+                                                       <th><wicket:ommessage 
key="146" /></th>
+                                                       <th><wicket:ommessage 
key="147" /></th>
+                                                       <th><wicket:ommessage 
key="148" /></th>
+                                                       <th><wicket:ommessage 
key="149" /></th>
+                                               </tr>                   
+                                       <tr wicket:id="userList">
+                                                       <td><span 
wicket:id="userId"></span></td>
+                                                       <td><span 
wicket:id="login"></span></td>
+                                                       <td><span 
wicket:id="firstName"></span></td>
+                                                       <td><span 
wicket:id="lastName"></span></td>
+                                               </tr>
+                                       </table>
+                               </td>
+                               <td>
+                                       <span wicket:id="selected"></span>
+                               </td>
+                       </tr>
+               </table>
        </wicket:extend>
 </html>

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.java?rev=1379068&r1=1379067&r2=1379068&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/web/pages/admin/UsersPage.java
 Thu Aug 30 19:02:24 2012
@@ -18,9 +18,75 @@
  */
 package org.openmeetings.web.pages.admin;
 
+import java.util.Iterator;
+
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+import org.openmeetings.app.data.user.dao.UsersDaoImpl;
+import org.openmeetings.app.persistence.beans.user.Users;
+import org.openmeetings.web.app.Application;
+
 public class UsersPage extends AdminPage {
        private static final long serialVersionUID = -4463107742579790120L;
-
+       @SuppressWarnings("unused")
+       private String selectedText = "Click on the table to change the user";
+       private Label selected = null;
+       
        public UsersPage() {
+               DataView<Users> dataView = new DataView<Users>("userList", new 
IDataProvider<Users>(){
+                       private static final long serialVersionUID = 
-6822789354860988626L;
+
+                       public void detach() {
+                               //empty
+                       }
+
+                       public Iterator<? extends Users> iterator(long first, 
long count) {
+                               return 
Application.getBean(UsersDaoImpl.class).getNondeletedUsers((int)first, 
(int)count).iterator();
+                       }
+
+                       public long size() {
+                               return 
Application.getBean(UsersDaoImpl.class).selectMaxFromUsers();
+                       }
+
+                       public IModel<Users> model(Users object) {
+                               return new CompoundPropertyModel<Users>(object);
+                       }
+                       
+               }) {
+                       private static final long serialVersionUID = 
8715559628755439596L;
+
+                       @Override
+                       protected void populateItem(Item<Users> item) {
+                               Users u = item.getModelObject();
+                               item.add(new Label("userId", "" + 
u.getUser_id()));
+                               item.add(new Label("login", u.getLogin()));
+                               final String fName = u.getFirstname();
+                               item.add(new Label("firstName", fName));
+                               final String lName = u.getLastname();
+                               item.add(new Label("lastName", lName));
+                               item.add(new AjaxEventBehavior("onclick") {
+                                       private static final long 
serialVersionUID = -8069413566800571061L;
+
+                                       protected void 
onEvent(AjaxRequestTarget target) {
+                                               selectedText = fName + " " + 
lName + " selected.";
+                                               target.add(selected);
+                                       }
+                               });
+                       }
+               };
+               selected = new Label("selected", new 
PropertyModel<String>(this, "selectedText"));
+               selected.setOutputMarkupId(true);
+               add(selected);
+               dataView.setItemsPerPage(8); //FIXME need to be parametrized
+               add(dataView);
+               add(new PagingNavigator("navigator", dataView));
        }
 }


Reply via email to