Author: solomax
Date: Fri May 31 17:27:48 2013
New Revision: 1488327

URL: http://svn.apache.org/r1488327
Log:
[OPENMEETINGS-626] select/delete folder works as expected;
        Styles are enhanced;
        Code clean up;

Added:
    
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/cross.png   
(with props)
    
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/folder.png   
(with props)
Modified:
    openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java

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

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

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

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

Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css 
(original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Fri 
May 31 17:27:48 2013
@@ -733,15 +733,20 @@ table.messages td.main {
 }
 .email {
        padding-left: 25px;
-       background-repeat: no-repeat;
-       background-position-x: 5px;
+       background-repeat: no-repeat !important;
+       background-position-x: 5px !important;
        padding-top: 2px;
-       background-position-y: 3px;
+       background-position-y: 3px !important;
+       display: block;
+       text-align:left;
 }
 .email.new {
        background-image: url(images/email_add.png);
        font-weight: normal;
 }
+.email.new .ui-button-text, .email.newdir .ui-button-text {
+       padding: 0;
+}
 .email.inbox {
        background-image: url(images/basket_put.png);
 }
@@ -755,3 +760,20 @@ table.messages td.main {
        background-image: url(images/folder_add.png);
        font-weight: normal;
 }
+.email.folder {
+       background-image: url(images/folder.png);
+       font-weight: normal;
+       position: relative;
+}
+.email.folder .delete {
+       position:absolute;
+       right: 2px;
+       top: 2px;
+       background-image: url(images/cross.png);
+       font-weight: normal;
+       padding: 0;
+       display: inline-block;
+       background-position: 0;
+       width: 18px;
+       height: 18px;
+}

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
 Fri May 31 17:27:48 2013
@@ -182,12 +182,14 @@ public class PrivateMessagesDao implemen
                                hql += " ) ";
                        }
                        
-                       hql += "ORDER BY "+orderBy;
-                       
-                       if (asc) {
-                               hql += " ASC";
-                       } else {
-                               hql += " DESC";
+                       if (orderBy != null && orderBy.length() > 0) {
+                               hql += "ORDER BY "+orderBy;
+                               
+                               if (asc) {
+                                       hql += " ASC";
+                               } else {
+                                       hql += " DESC";
+                               }
                        }
 
                        TypedQuery<PrivateMessage> query = em.createQuery(hql, 
PrivateMessage.class); 
@@ -246,6 +248,7 @@ public class PrivateMessagesDao implemen
                return null;
        }
        
+       //FIXME need to be rewritten
        public List<PrivateMessage> getTrashPrivateMessagesByUser(Long user_id, 
String search, 
                        String orderBy, int start, Boolean asc, int max) {
                try {
@@ -265,12 +268,14 @@ public class PrivateMessagesDao implemen
                                hql += " ) ";
                        }
                        
-                       hql += "ORDER BY "+orderBy;
-                       
-                       if (asc) {
-                               hql += " ASC";
-                       } else {
-                               hql += " DESC";
+                       if (orderBy != null && orderBy.length() > 0) {
+                               hql += "ORDER BY "+orderBy;
+                               
+                               if (asc) {
+                                       hql += " ASC";
+                               } else {
+                                       hql += " DESC";
+                               }
                        }
 
                        TypedQuery<PrivateMessage> query = em.createQuery(hql, 
PrivateMessage.class); 
@@ -321,7 +326,8 @@ public class PrivateMessagesDao implemen
                }
                return null;
        }
-       
+
+       //FIXME need to be rewritten
        public List<PrivateMessage> getSendPrivateMessagesByUser(Long toUserId, 
String search, 
                        String orderBy, int start, Boolean asc, Long 
privateMessageFolderId, int max) {
                try {
@@ -343,14 +349,15 @@ public class PrivateMessagesDao implemen
                                hql += " ) ";
                        }
                        
-                       hql += "ORDER BY "+orderBy;
-                       
-                       if (asc) {
-                               hql += " ASC";
-                       } else {
-                               hql += " DESC";
+                       if (orderBy != null && orderBy.length() > 0) {
+                               hql += "ORDER BY "+orderBy;
+                               
+                               if (asc) {
+                                       hql += " ASC";
+                               } else {
+                                       hql += " DESC";
+                               }
                        }
-
                        TypedQuery<PrivateMessage> query = em.createQuery(hql, 
PrivateMessage.class); 
                        query.setParameter("toUserId", toUserId);
                        query.setParameter("privateMessageFolderId", 
privateMessageFolderId);
@@ -404,6 +411,7 @@ public class PrivateMessagesDao implemen
                return null;
        }
        
+       //FIXME need to be rewritten
        public List<PrivateMessage> getFolderPrivateMessagesByUser(Long 
toUserId, String search, String orderBy, 
                        int start, Boolean asc, Long privateMessageFolderId, 
int max) {
                try {
@@ -424,12 +432,14 @@ public class PrivateMessagesDao implemen
                                hql += " ) ";
                        }
                        
-                       hql += "ORDER BY "+orderBy;
-                       
-                       if (asc) {
-                               hql += " ASC";
-                       } else {
-                               hql += " DESC";
+                       if (orderBy != null && orderBy.length() > 0) {
+                               hql += "ORDER BY "+orderBy;
+                               
+                               if (asc) {
+                                       hql += " ASC";
+                               } else {
+                                       hql += " DESC";
+                               }
                        }
                        
                        log.debug("HQL "+hql);

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
 Fri May 31 17:27:48 2013
@@ -103,8 +103,14 @@ import org.simpleframework.xml.Root;
 @Table(name = "om_user")
 @Root(name = "user")
 public class User implements Serializable, IDataProviderEntity {
-
        private static final long serialVersionUID = -2265479712596674065L;
+       
+       public enum Type {
+               user
+               , ldap //should we add it???
+               , external
+               , contact
+       }
 
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -255,6 +261,10 @@ public class User implements Serializabl
        @Element(data = true, required = false)
        private Boolean showContactDataToContacts;
 
+       @Column(name = "type")
+       @Element(data = true, required = false)
+       private Type type = Type.user;
+       
        public Long getUser_id() {
                return user_id;
        }
@@ -598,4 +608,11 @@ public class User implements Serializabl
                return getSendSMS() ? getAdresses().getPhone() : "";
        }
 
+       public Type getType() {
+               return type;
+       }
+
+       public void setType(Type type) {
+               this.type = type;
+       }
 }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 Fri May 31 17:27:48 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static java.text.DateFormat.SHORT;
 import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_MYROOMS_KEY;
 import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_RSS_KEY;
 import static 
org.apache.openmeetings.persistence.beans.basic.Configuration.DEFAUT_LANG_KEY;
@@ -57,12 +58,14 @@ import ro.fortsoft.wicket.dashboard.web.
 
 public class WebSession extends AbstractAuthenticatedWebSession {
        private static final long serialVersionUID = 1123393236459095315L;
+       //private static final Map<String, Locale> LNG_TO_LOCALE_MAP = new 
HashMap<String, Locale> ();
        private long userId = -1;
        private long userLevel = -1;
        private String SID = null;
        private OmUrlFragment area = null;
        private TimeZone tz;
        private SimpleDateFormat ISO8601FORMAT = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
+       private DateFormat sdf;
        private Dashboard dashboard;
        
        public WebSession(Request request) {
@@ -75,6 +78,7 @@ public class WebSession extends Abstract
                userId = -1;
                userLevel = -1;
                SID = null;
+               sdf = null;
        }
        
        @Override
@@ -108,6 +112,8 @@ public class WebSession extends Abstract
                        userId = user.getUser_id();
                        tz = 
TimeZone.getTimeZone(user.getOmTimeZone().getIcal());
                        ISO8601FORMAT.setTimeZone(tz);
+                       //FIXMW locale need to be set by User language first
+                       sdf = DateFormat.getDateTimeInstance(SHORT, SHORT, 
getLocale());
                        if (null == getId()) {
                                bind();
                        }
@@ -151,10 +157,14 @@ public class WebSession extends Abstract
                return Calendar.getInstance(get().tz);
        }
 
-       public static DateFormat getDateFormat() {
+       public static DateFormat getIsoDateFormat() {
                return get().ISO8601FORMAT;
        }
-
+       
+       public static DateFormat getDateFormat() {
+               return get().sdf;
+       }
+       
        public static long getUserLevel() {
                return get().userLevel;
        }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
 Fri May 31 17:27:48 2013
@@ -23,6 +23,7 @@
        <form wicket:id="form">
                <span style="padding-left: 20px; padding-right: 
20px;"><wicket:ommessage key="572"/></span><input type="text" 
wicket:id="title"/>
                <div wicket:id="feedback"></div>
+               <input type="submit" wicket:id="submit" style="position: 
absolute; top: -9999px; width: 1px; height: 1px;"/>
        </form>
 </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
 Fri May 31 17:27:48 2013
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
@@ -53,6 +54,19 @@ public abstract class AddFolderDialog ex
                                add(title = new 
RequiredTextField<String>("title", getModel()));
                                
title.setLabel(Model.of(WebSession.getString(572)));
                                add(feedback.setOutputMarkupId(true));
+                               add(new AjaxButton("submit") { //FAKE button so 
"submit-on-enter" works as expected
+                                       private static final long 
serialVersionUID = -3612671587183668912L;
+
+                                       @Override
+                                       protected void 
onSubmit(AjaxRequestTarget target, Form<?> form) {
+                                               
AddFolderDialog.this.onSubmit(target);
+                                       }
+                                       
+                                       @Override
+                                       protected void 
onError(AjaxRequestTarget target, Form<?> form) {
+                                               
AddFolderDialog.this.onError(target);
+                                       }
+                               });
                        }
                };
                add(form);
@@ -65,6 +79,11 @@ public abstract class AddFolderDialog ex
                setModelObject(name);
                getFeedbackMessages().clear();
        }
+
+       @Override
+       protected void onSubmit(AjaxRequestTarget target) {
+               close(target, getSubmitButton());
+       }
        
        @Override
        protected List<DialogButton> getButtons() {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
 Fri May 31 17:27:48 2013
@@ -44,7 +44,7 @@ public class UploadableProfileImagePanel
                final Form<Void> form = new Form<Void>("form");
                form.setMultiPart(true);
                
form.setMaxSize(Bytes.bytes(getMaxUploadSize(getBean(ConfigurationDao.class))));
-               //Model is necessary here to avoidwriting image to the User 
object
+               // Model is necessary here to avoid writing image to the User 
object
                form.add(fileUploadField = new FileUploadField("image", new 
IModel<List<FileUpload>>() {
                        private static final long serialVersionUID = 
-8514518605278263956L;
 

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Fri May 31 17:27:48 2013
@@ -238,7 +238,6 @@ public class SignInDialog extends Abstra
                                
                                @Override
                                protected void onError(AjaxRequestTarget 
target, Form<?> form) {
-                                       // TODO Auto-generated method stub
                                        SignInDialog.this.onError(target);
                                }
                        });

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
 Fri May 31 17:27:48 2013
@@ -19,15 +19,15 @@
 package org.apache.openmeetings.web.user;
 
 import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
-import java.text.DateFormat;
 import java.util.Date;
 
 import org.apache.openmeetings.data.chat.ChatDao;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.chat.ChatMessage;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.UserPanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -49,11 +49,11 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 
 import com.googlecode.wicket.jquery.ui.plugins.emoticons.EmoticonsBehavior;
+
 public class ChatPanel extends UserPanel {
        private static final Logger log = 
Red5LoggerFactory.getLogger(ChatPanel.class, webAppRootKey);
        private static final long serialVersionUID = -9144707674886211557L;
        private static final String MESSAGE_AREA_ID = "messageArea";
-       private final DateFormat sdf;
        private String message;
        
        private JSONObject getMessage(ChatMessage m) throws JSONException {
@@ -62,13 +62,12 @@ public class ChatPanel extends UserPanel
                        .put("msg", new JSONObject()
                                .put("id", m.getId())
                                .put("message", m.getMessage())
-                               .put("sent", sdf.format(m.getSent()))
+                               .put("sent", 
getDateFormat().format(m.getSent()))
                        );
        }
 
        public ChatPanel(String id) {
                super(id);
-               sdf = DateFormat.getDateInstance(DateFormat.MEDIUM, 
getSession().getLocale());
                setOutputMarkupId(true);
                setMarkupId(id);
 
@@ -78,7 +77,7 @@ public class ChatPanel extends UserPanel
 
                        @Override
                        public void renderHead(Component component, 
IHeaderResponse response) {
-                               ChatDao dao = 
Application.getBean(ChatDao.class);
+                               ChatDao dao = getBean(ChatDao.class);
                                try {                           
                                        StringBuilder sb = new StringBuilder();
                                        //FIXME limited count should be loaded 
with "earlier" link
@@ -103,11 +102,11 @@ public class ChatPanel extends UserPanel
                        private static final long serialVersionUID = 
-3746739738826501331L;
                        
                        protected void onSubmit(AjaxRequestTarget target) {
-                               ChatDao dao = 
Application.getBean(ChatDao.class);
+                               ChatDao dao = getBean(ChatDao.class);
                                ChatMessage m = new ChatMessage();
                                m.setMessage(message);
                                m.setSent(new Date());
-                               
m.setFromUser(Application.getBean(UsersDao.class).get(WebSession.getUserId()));
+                               
m.setFromUser(getBean(UsersDao.class).get(getUserId()));
                                dao.update(m);
                                IWebSocketConnectionRegistry reg = 
IWebSocketSettings.Holder.get(getApplication()).getConnectionRegistry();
                                for (IWebSocketConnection c : 
reg.getConnections(getApplication())) {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 Fri May 31 17:27:48 2013
@@ -24,13 +24,16 @@
        <table class="messages">
                <tr>
                        <td class="side left">
-                               <div class="email new clickable 
ui-widget-header ui-corner-all" wicket:id="new" 
wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
-                               <div class="email inbox clickable" 
wicket:id="inbox"><wicket:ommessage key="1222"/></div>
-                               <div class="email sent clickable" 
wicket:id="sent"><wicket:ommessage key="1223"/></div>
-                               <div class="email trash clickable" 
wicket:id="trash"><wicket:ommessage key="1224"/></div>
-                               <div class="email newdir clickable 
ui-widget-header ui-corner-all" wicket:id="newdir" 
wicket:ommessage="title:1259"><wicket:ommessage key="1258"/></div>
+                               <div class="email new" wicket:id="new" 
wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
                                <div wicket:id="folders">
-                                       <div wicket:id="folder"><div 
wicket:id="name"></div><div wicket:id="delete"></div></div>
+                                       <div 
wicket:id="inbox"><wicket:ommessage key="1222"/></div>
+                                       <div wicket:id="sent"><wicket:ommessage 
key="1223"/></div>
+                                       <div 
wicket:id="trash"><wicket:ommessage key="1224"/></div>
+                                       <div class="email newdir" 
wicket:id="newdir" wicket:ommessage="title:1259"><wicket:ommessage 
key="1258"/></div>
+                                       <div wicket:id="folder">
+                                               <div wicket:id="name"></div>
+                                               <div class="delete" 
wicket:id="delete" wicket:ommessage="title:1262"></div>
+                                       </div>
                                </div>
                        </td>
                        <td class="main">

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 Fri May 31 17:27:48 2013
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.user.profile;
 
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.wicket.util.time.Duration.seconds;
 
@@ -29,7 +30,9 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.data.user.dao.PrivateMessagesDao;
 import org.apache.openmeetings.persistence.beans.user.PrivateMessage;
 import org.apache.openmeetings.persistence.beans.user.PrivateMessageFolder;
+import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.AddFolderDialog;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.common.UserPanel;
@@ -39,6 +42,8 @@ import org.apache.openmeetings.web.data.
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -47,6 +52,10 @@ import org.apache.wicket.markup.repeater
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
+import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+
 public class MessagesContactsPanel extends UserPanel {
        private static final long serialVersionUID = 8098087441571734957L;
        private final WebMarkupContainer container = new 
WebMarkupContainer("container");
@@ -57,6 +66,42 @@ public class MessagesContactsPanel exten
        private final static long TRASH_FOLDER_ID = -3;
        private final IModel<Long> selectedModel = Model.of(INBOX_FOLDER_ID);
        private final IModel<List<? extends PrivateMessageFolder>> foldersModel;
+       private final WebMarkupContainer inbox = new 
WebMarkupContainer("inbox");
+       private final WebMarkupContainer sent = new WebMarkupContainer("sent");
+       private final WebMarkupContainer trash = new 
WebMarkupContainer("trash");
+       
+       private void setDefaultFolderClass() {
+               inbox.add(AttributeAppender.replace("class", "email inbox 
clickable"));
+               sent.add(AttributeAppender.replace("class", "email sent 
clickable"));
+               trash.add(AttributeAppender.replace("class", "email trash 
clickable"));
+       }
+       
+       private void selectFolder(WebMarkupContainer folder) {
+               folder.add(AttributeAppender.append("class", "ui-widget-header 
ui-corner-all"));
+       }
+       
+       private void setFolderClass(ListItem<PrivateMessageFolder> folder) {
+               folder.add(AttributeAppender.replace("class", "email folder 
clickable"));
+               if (folder.getModelObject().getPrivateMessageFolderId() == 
selectedModel.getObject()) {
+                       selectFolder(folder);
+               }
+       }
+       
+       private void selectFolder(WebMarkupContainer folder, long id, 
AjaxRequestTarget target) {
+               selectedModel.setObject(id);
+               setDefaultFolderClass();
+               selectFolder(folder);
+               if (target != null) {
+                       target.add(folders, container);
+               }
+       }
+       
+       private String getDisplayName(User u) {
+               return new StringBuilder().append(u.getFirstname()).append(" ")
+                               .append(u.getLastname()).append(" ")
+                               
.append("<").append(u.getAdresses().getEmail()).append(">")
+                               .toString();
+       }
        
        @SuppressWarnings("unchecked")
        public MessagesContactsPanel(String id) {
@@ -68,6 +113,7 @@ public class MessagesContactsPanel exten
 
                        @Override
                        protected void onSubmit(AjaxRequestTarget target) {
+                               super.onSubmit(target);
                                PrivateMessageFolderDao fDao = 
getBean(PrivateMessageFolderDao.class);
                                fDao.addPrivateMessageFolder(getModelObject(), 
getUserId());
                                foldersModel.setObject(fDao.get(0, 
Integer.MAX_VALUE));
@@ -81,49 +127,71 @@ public class MessagesContactsPanel exten
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
                        }
-               }));
-               add(new WebMarkupContainer("inbox").add(new 
AjaxEventBehavior("click") {
+               }).add(new JQueryBehavior(".email.new", "button")));
+               folders.add(inbox.add(new AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
-                               selectedModel.setObject(INBOX_FOLDER_ID);
-                               target.add(container);
+                               selectFolder(inbox, INBOX_FOLDER_ID, target);
                        }
                }));
-               add(new WebMarkupContainer("sent").add(new 
AjaxEventBehavior("click") {
+               folders.add(sent.add(new AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
-                               selectedModel.setObject(SENT_FOLDER_ID);
-                               target.add(container);
+                               selectFolder(sent, SENT_FOLDER_ID, target);
                        }
                }));
-               add(new WebMarkupContainer("trash").add(new 
AjaxEventBehavior("click") {
+               folders.add(trash.add(new AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
-                               selectedModel.setObject(TRASH_FOLDER_ID);
-                               target.add(container);
+                               selectFolder(trash, TRASH_FOLDER_ID, target);
                        }
                }));
-               add(new WebMarkupContainer("newdir").add(new 
AjaxEventBehavior("click") {
+               folders.add(new WebMarkupContainer("newdir").add(new 
AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
                                addFolder.open(target);
                        }
-               }));
+               }).add(new JQueryBehavior(".email.newdir", "button")));
                add(folders.add(new ListView<PrivateMessageFolder>("folder", 
foldersModel) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void 
populateItem(ListItem<PrivateMessageFolder> item) {
+                       protected void populateItem(final 
ListItem<PrivateMessageFolder> item) {
                                item.add(new Label("name", 
item.getModelObject().getFolderName()));
-                               item.add(new WebMarkupContainer("delete"));
+                               item.add(new 
WebMarkupContainer("delete").add(new AjaxEventBehavior("click") {
+                                       private static final long 
serialVersionUID = 1L;
+
+                                       @Override
+                                       protected void 
onEvent(AjaxRequestTarget target) {
+                                               PrivateMessageFolderDao fDao = 
getBean(PrivateMessageFolderDao.class);
+                                               
fDao.delete(item.getModelObject(), getUserId());
+                                               
foldersModel.setObject(fDao.get(0, Integer.MAX_VALUE));
+                                               target.add(folders);
+                                       }
+                                       
+                                       @Override
+                                       protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                                               
super.updateAjaxAttributes(attributes);
+                                               
attributes.getAjaxCallListeners().add(new 
ConfirmAjaxCallListener(WebSession.getString(713)));
+                                       }
+                               }));
+                               item.add(new AjaxEventBehavior("click") {
+                                       private static final long 
serialVersionUID = 1L;
+
+                                       @Override
+                                       protected void 
onEvent(AjaxRequestTarget target) {
+                                               selectFolder(item, 
item.getModelObject().getPrivateMessageFolderId(), target);
+                                       }
+                               });
+                               setFolderClass(item);
                        }
                }).setOutputMarkupId(true));
                
unreadModel.setObject(getBean(PrivateMessagesDao.class).count(getUserId(), 
null, false, false));
@@ -173,9 +241,9 @@ public class MessagesContactsPanel exten
                        protected void populateItem(Item<PrivateMessage> item) {
                                PrivateMessage m = item.getModelObject();
                                item.add(new Label("id", 
m.getPrivateMessageId()));
-                               item.add(new Label("from", m.getFrom()));
+                               item.add(new Label("from", 
getDisplayName(m.getFrom())));
                                item.add(new Label("subject", m.getSubject()));
-                               item.add(new Label("send", m.getInserted()));
+                               item.add(new Label("send", 
getDateFormat().format(m.getInserted())));
                        }
                };
                DataViewContainer<PrivateMessage> dataContainer = new 
DataViewContainer<PrivateMessage>(container, dv);
@@ -193,6 +261,7 @@ public class MessagesContactsPanel exten
                        }
                });
                
+               selectFolder(inbox, INBOX_FOLDER_ID, null);
                container.add(new Label("unread", unreadModel));
                add(new WebMarkupContainer("pendingContacts"));//FIXME
                add(new WebMarkupContainer("na1"));//FIXME


Reply via email to