Author: solomax
Date: Fri Jul 11 19:14:32 2014
New Revision: 1609773

URL: http://svn.apache.org/r1609773
Log:
[OPENMEETINGS-1040] select2 is used to set/display user groups;
        code clean-up

Modified:
    
openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
    openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java

Modified: 
openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
 (original)
+++ 
openmeetings/branches/3.0.x/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
 Fri Jul 11 19:14:32 2014
@@ -99,8 +99,7 @@
         <!--
            public synchronized Boolean startInterviewRecording()
          -->
-        <netRemoteCallHib name="startInterviewRecording" 
funcname="startInterviewRecording" 
-                          remotecontext="$once{ canvas.thishib }" >  
+        <netRemoteCallHib name="startInterviewRecording" 
funcname="startInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
             <handler name="ondata" args="value">
                 <![CDATA[
                     if ($debug) Debug.write("startInterviewRecording: ",value);
@@ -111,8 +110,7 @@
             </handler>
         </netRemoteCallHib>          
         
-        <netRemoteCallHib name="stopInterviewRecording" 
funcname="stopInterviewRecording" 
-                          remotecontext="$once{ canvas.thishib }" >  
+        <netRemoteCallHib name="stopInterviewRecording" 
funcname="stopInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
             <handler name="ondata" args="value">
                 <![CDATA[
                     if ($debug) Debug.write("stopInterviewRecording: ",value);
@@ -149,4 +147,4 @@
         
 </class>
 
-</library>
\ No newline at end of file
+</library>

Modified: 
openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx 
(original)
+++ 
openmeetings/branches/3.0.x/WebContent/swf10/base/remote/baseVideoStream.lzx 
Fri Jul 11 19:14:32 2014
@@ -236,6 +236,7 @@
                        }
                        videoStreamSettings.setQuality(camReference.bandwidth, 
camReference.quality);
                        
videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
+                       if ($debug) Debug.write("::keyFrameInterval " + 
camReference.keyFrameInterval);
                        videoStreamSettings.setMode(camReference.width, 
camReference.height, camReference.fps);
                        this._ns.videoStreamSettings = videoStreamSettings;
                }

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
 Fri Jul 11 19:14:32 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -74,6 +75,10 @@ public class OrganisationDao implements 
                return q.getSingleResult();
        }
        
+       public List<Organisation> get(Collection<Long> ids) {
+               return em.createNamedQuery("getOrganisationsByIds", 
Organisation.class).setParameter("ids", ids).getResultList();
+       }
+
        public Organisation update(Organisation entity, Long userId) {
                if (entity.getOrganisation_id() == null) {
                        if (userId != null) {

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
 Fri Jul 11 19:14:32 2014
@@ -121,17 +121,26 @@ public class OrganisationUserDao impleme
                        entity.setUpdatetime(new Date());
                        entity = em.merge(entity);
                }
+               updateUser(entity, false, userId);
                return entity;
        }
 
-       public void delete(Organisation_Users entity, Long userId) {
-               if (entity.getOrganisation_users_id() != null) {
-                       User u = usersDao.get(entity.getUser().getUser_id());
-                       int idx = u.getOrganisation_users().indexOf(entity);
-                       //entity has been detached need to re-fetch
+       private void updateUser(Organisation_Users entity, boolean delete, Long 
userId) {
+               //entity has been detached need to re-fetch
+               User u = usersDao.get(entity.getUser().getUser_id());
+               int idx = u.getOrganisation_users().indexOf(entity);
+               if (delete && idx > -1) {
                        Organisation_Users ou = 
u.getOrganisation_users().remove(idx);
                        em.remove(ou);
-                       usersDao.update(u, userId);
+               } else if (!delete && idx < 0) {
+                       u.getOrganisation_users().add(entity);
+               }
+               usersDao.update(u, userId);
+       }
+       
+       public void delete(Organisation_Users entity, Long userId) {
+               if (entity.getOrganisation_users_id() != null) {
+                       updateUser(entity, true, userId);
                }
        }
 }

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
 Fri Jul 11 19:14:32 2014
@@ -40,6 +40,8 @@ import org.simpleframework.xml.Root;
                query="SELECT c FROM Organisation AS c WHERE c.organisation_id 
= :organisation_id AND c.deleted = :deleted")
        , @NamedQuery(name="getAnyOrganisationById",
                query="SELECT c FROM Organisation AS c WHERE c.organisation_id 
= :organisation_id")
+       , @NamedQuery(name="getOrganisationsByIds",
+               query="SELECT c FROM Organisation AS c WHERE c.organisation_id 
IN :ids")
        , @NamedQuery(name="getOrganisationsByUserId",
                query="SELECT ou.organisation FROM User u, 
IN(u.organisation_users) ou WHERE u.deleted = false AND u.user_id = :user_id")
        , @NamedQuery(name="getNondeletedOrganisations", query="SELECT o FROM 
Organisation o WHERE o.deleted = false ORDER BY o.organisation_id")

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 Fri Jul 11 19:14:32 2014
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -25,7 +27,6 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmCallListener;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -64,7 +65,7 @@ public class GroupUsersPanel extends Pan
                                        @Override
                                        protected void 
onUpdate(AjaxRequestTarget target) {
                                                if 
(orgUser.getOrganisation_users_id() != null) {
-                                                       
Application.getBean(OrganisationUserDao.class).update(orgUser, 
WebSession.getUserId());
+                                                       
getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
                                                }
                                        }
                                }));
@@ -93,7 +94,7 @@ public class GroupUsersPanel extends Pan
                                                                }
                                                        }
                                                } else {
-                                                       
Application.getBean(OrganisationUserDao.class).delete(orgUser, 
WebSession.getUserId());
+                                                       
getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
                                                }
                                                
target.add(GroupUsersPanel.this);
                                        }

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 Fri Jul 11 19:14:32 2014
@@ -68,7 +68,7 @@
                <textarea wicket:id="adresses.comment" />
        </div>
        <div class="formelement">
-               <label><wicket:ommessage key="161" /></label><select 
wicket:id="organisation_users" style="height: 80px" />
+               <label><wicket:ommessage key="161" /></label><input 
type="hidden" class="input" wicket:id="organisation_users" style="height: 80px" 
/>
        </div>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Fri Jul 11 19:14:32 2014
@@ -25,8 +25,10 @@ import static org.apache.openmeetings.we
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
+import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
@@ -49,7 +51,6 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -60,6 +61,10 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
+
 public class GeneralUserForm extends Form<User> {
        private static final long serialVersionUID = 5360667099083510234L;
        private Salutation salutation;
@@ -135,7 +140,7 @@ public class GeneralUserForm extends For
                                , new ChoiceRenderer<State>("name", 
"state_id")));
                add(new TextArea<String>("adresses.comment"));
 
-               List<Organisation_Users> orgUsers;
+               final List<Organisation_Users> orgUsers;
                if (isAdminForm) {
                        List<Organisation> orgList = 
getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
                        orgUsers = new 
ArrayList<Organisation_Users>(orgList.size());
@@ -145,10 +150,41 @@ public class GeneralUserForm extends For
                } else {
                        orgUsers = getModelObject().getOrganisation_users();
                }
-               ListMultipleChoice<Organisation_Users> orgChoiceList = new 
ListMultipleChoice<Organisation_Users>(
-                               "organisation_users", orgUsers,
-                               new 
ChoiceRenderer<Organisation_Users>("organisation.name", 
"organisation.organisation_id"));
-               add(orgChoiceList.setEnabled(isAdminForm));
+               add(new 
Select2MultiChoice<Organisation_Users>("organisation_users", null, new 
TextChoiceProvider<Organisation_Users>() {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected String getDisplayText(Organisation_Users 
choice) {
+                               return choice.getOrganisation().getName();
+                       }
+
+                       @Override
+                       protected Object getId(Organisation_Users choice) {
+                               return 
choice.getOrganisation().getOrganisation_id();
+                       }
+
+                       @Override
+                       public void query(String term, int page, 
Response<Organisation_Users> response) {
+                               for (Organisation_Users ou : orgUsers) {
+                                       if (Strings.isEmpty(term) || 
(!Strings.isEmpty(term) && ou.getOrganisation().getName().contains(term))) {
+                                               response.add(ou);
+                                       }
+                               }
+                       }
+
+                       @Override
+                       public Collection<Organisation_Users> 
toChoices(Collection<String> _ids) {
+                               List<Long> ids = new ArrayList<Long>();
+                               for (String id : _ids) {
+                                       ids.add(Long.parseLong(id));
+                               }
+                               List<Organisation_Users> list = new 
ArrayList<Organisation_Users>();
+                               for (Organisation o : 
getBean(OrganisationDao.class).get(ids)) {
+                                       list.add(new Organisation_Users(o));
+                               }
+                               return list;
+                       }
+               }).setEnabled(isAdminForm));
        }
 
        @Override

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
 Fri Jul 11 19:14:32 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -74,6 +75,10 @@ public class OrganisationDao implements 
                return q.getSingleResult();
        }
        
+       public List<Organisation> get(Collection<Long> ids) {
+               return em.createNamedQuery("getOrganisationsByIds", 
Organisation.class).setParameter("ids", ids).getResultList();
+       }
+
        public Organisation update(Organisation entity, Long userId) {
                if (entity.getId() == null) {
                        if (userId != null) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
 Fri Jul 11 19:14:32 2014
@@ -121,17 +121,26 @@ public class OrganisationUserDao impleme
                        entity.setUpdatetime(new Date());
                        entity = em.merge(entity);
                }
+               updateUser(entity, false, userId);
                return entity;
        }
 
-       public void delete(Organisation_Users entity, Long userId) {
-               if (entity.getId() != null) {
-                       User u = usersDao.get(entity.getUser().getId());
-                       int idx = u.getOrganisation_users().indexOf(entity);
-                       //entity has been detached need to re-fetch
+       private void updateUser(Organisation_Users entity, boolean delete, Long 
userId) {
+               //entity has been detached need to re-fetch
+               User u = usersDao.get(entity.getUser().getId());
+               int idx = u.getOrganisation_users().indexOf(entity);
+               if (delete && idx > -1) {
                        Organisation_Users ou = 
u.getOrganisation_users().remove(idx);
                        em.remove(ou);
-                       usersDao.update(u, userId);
+               } else if (!delete && idx < 0) {
+                       u.getOrganisation_users().add(entity);
+               }
+               usersDao.update(u, userId);
+       }
+       
+       public void delete(Organisation_Users entity, Long userId) {
+               if (entity.getId() != null) {
+                       updateUser(entity, true, userId);
                }
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
 Fri Jul 11 19:14:32 2014
@@ -571,10 +571,10 @@ public class UserDao implements IDataPro
        /**
         * login logic
         * 
-        * @param SID
-        * @param Username
-        * @param Userpass
-        * @return
+        * @param userOrEmail: login or email of the user being tested
+        * @param userpass: password of the user being tested
+        * @return User object in case of successful login
+        * @throws OmException in case of any issue 
         */
        public User login(String userOrEmail, String userpass) throws 
OmException {
                List<User> users = em.createNamedQuery("getUserByLoginOrEmail", 
User.class)

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation.java
 Fri Jul 11 19:14:32 2014
@@ -39,6 +39,8 @@ import org.simpleframework.xml.Root;
                query="SELECT c FROM Organisation AS c WHERE c.id = 
:organisation_id AND c.deleted = :deleted")
        , @NamedQuery(name="getAnyOrganisationById",
                query="SELECT c FROM Organisation AS c WHERE c.id = 
:organisation_id")
+       , @NamedQuery(name="getOrganisationsByIds",
+               query="SELECT c FROM Organisation AS c WHERE c.id IN :ids")
        , @NamedQuery(name="getOrganisationsByUserId",
                query="SELECT ou.organisation FROM User u, 
IN(u.organisation_users) ou WHERE u.deleted = false AND u.id = :user_id")
        , @NamedQuery(name="getNondeletedOrganisations", query="SELECT o FROM 
Organisation o WHERE o.deleted = false ORDER BY o.id")

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 Fri Jul 11 19:14:32 2014
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -25,7 +27,6 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmCallListener;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -64,7 +65,7 @@ public class GroupUsersPanel extends Pan
                                        @Override
                                        protected void 
onUpdate(AjaxRequestTarget target) {
                                                if (orgUser.getId() != null) {
-                                                       
Application.getBean(OrganisationUserDao.class).update(orgUser, 
WebSession.getUserId());
+                                                       
getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
                                                }
                                        }
                                }));
@@ -93,7 +94,7 @@ public class GroupUsersPanel extends Pan
                                                                }
                                                        }
                                                } else {
-                                                       
Application.getBean(OrganisationUserDao.class).delete(orgUser, 
WebSession.getUserId());
+                                                       
getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
                                                }
                                                
target.add(GroupUsersPanel.this);
                                        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 Fri Jul 11 19:14:32 2014
@@ -68,7 +68,7 @@
                <textarea wicket:id="adresses.comment" />
        </div>
        <div class="formelement">
-               <label><wicket:ommessage key="161" /></label><select 
wicket:id="organisation_users" style="height: 80px" />
+               <label><wicket:ommessage key="161" /></label><input 
type="hidden" class="input" wicket:id="organisation_users" style="height: 80px" 
/>
        </div>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1609773&r1=1609772&r2=1609773&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Fri Jul 11 19:14:32 2014
@@ -25,8 +25,10 @@ import static org.apache.openmeetings.we
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
+import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
@@ -49,7 +51,6 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -60,6 +61,10 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
+
 public class GeneralUserForm extends Form<User> {
        private static final long serialVersionUID = 1L;
        private Salutation salutation;
@@ -135,7 +140,7 @@ public class GeneralUserForm extends For
                                , new ChoiceRenderer<State>("name", 
"state_id")));
                add(new TextArea<String>("adresses.comment"));
 
-               List<Organisation_Users> orgUsers;
+               final List<Organisation_Users> orgUsers;
                if (isAdminForm) {
                        List<Organisation> orgList = 
getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
                        orgUsers = new 
ArrayList<Organisation_Users>(orgList.size());
@@ -145,10 +150,41 @@ public class GeneralUserForm extends For
                } else {
                        orgUsers = getModelObject().getOrganisation_users();
                }
-               ListMultipleChoice<Organisation_Users> orgChoiceList = new 
ListMultipleChoice<Organisation_Users>(
-                               "organisation_users", orgUsers,
-                               new 
ChoiceRenderer<Organisation_Users>("organisation.name", "organisation.id"));
-               add(orgChoiceList.setEnabled(isAdminForm));
+               add(new 
Select2MultiChoice<Organisation_Users>("organisation_users", null, new 
TextChoiceProvider<Organisation_Users>() {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected String getDisplayText(Organisation_Users 
choice) {
+                               return choice.getOrganisation().getName();
+                       }
+
+                       @Override
+                       protected Object getId(Organisation_Users choice) {
+                               return choice.getOrganisation().getId();
+                       }
+
+                       @Override
+                       public void query(String term, int page, 
Response<Organisation_Users> response) {
+                               for (Organisation_Users ou : orgUsers) {
+                                       if (Strings.isEmpty(term) || 
(!Strings.isEmpty(term) && ou.getOrganisation().getName().contains(term))) {
+                                               response.add(ou);
+                                       }
+                               }
+                       }
+
+                       @Override
+                       public Collection<Organisation_Users> 
toChoices(Collection<String> _ids) {
+                               List<Long> ids = new ArrayList<Long>();
+                               for (String id : _ids) {
+                                       ids.add(Long.parseLong(id));
+                               }
+                               List<Organisation_Users> list = new 
ArrayList<Organisation_Users>();
+                               for (Organisation o : 
getBean(OrganisationDao.class).get(ids)) {
+                                       list.add(new Organisation_Users(o));
+                               }
+                               return list;
+                       }
+               }).setEnabled(isAdminForm));
        }
 
        @Override


Reply via email to