Author: solomax Date: Thu Dec 20 11:51:13 2012 New Revision: 1424421 URL: http://svn.apache.org/viewvc?rev=1424421&view=rev Log: Wicket: chat, initial implementation
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.html incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.java incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.html incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.java Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1424421&r1=1424420&r2=1424421&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css (original) +++ incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Thu Dec 20 11:51:13 2012 @@ -66,6 +66,7 @@ z-index: 2000; bottom: 0px; right: 10px; + width: 300px; } #chatPanel #chat { @@ -372,7 +373,7 @@ div.tableWrapper { display: inline-block; } -.pagedEntityListPanel .searchForm { +.searchForm { display: inline-block; } Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.html URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.html?rev=1424421&r1=1424420&r2=1424421&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.html (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.html Thu Dec 20 11:51:13 2012 @@ -24,10 +24,10 @@ <form wicket:id="pagingForm" class="pagedEntityListPanel"> <select wicket:id="entitiesPerPage"></select> <span wicket:id="navigator">[dataview navigator]</span> - <form wicket:id="searchForm" class="searchForm"> - <input type="text" wicket:id="searchText" wicket:ommessage="title:714"/> - <input type="submit" wicket:id="search" wicket:ommessage="value:715"/> - </form> + </form> + <form wicket:id="searchForm" class="searchForm"> + <input type="text" wicket:id="searchText" wicket:ommessage="title:714"/> + <input type="submit" wicket:id="search" wicket:ommessage="value:715"/> </form> </wicket:panel> </html> \ No newline at end of file Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.java URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.java?rev=1424421&r1=1424420&r2=1424421&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.java (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/PagedEntityListPanel.java Thu Dec 20 11:51:13 2012 @@ -41,7 +41,6 @@ public abstract class PagedEntityListPan dataView.setItemsPerPage(entitiesPerPage); final Form<Void> f = new Form<Void>("pagingForm"); - f.setOutputMarkupId(true); f.add(new AdminPagingNavigator("navigator", dataView).setOutputMarkupId(true)) .add(new DropDownChoice<Integer>("entitiesPerPage", new PropertyModel<Integer>(this, "entitiesPerPage"), numbers) @@ -60,7 +59,7 @@ public abstract class PagedEntityListPan final SearchableDataProvider<? extends IDataProviderEntity> dp = dataView.getDataProvider(); Form<Void> searchForm = new Form<Void>("searchForm"); - f.add(searchForm); + add(searchForm.setOutputMarkupId(true)); searchForm.add(new TextField<String>("searchText", new PropertyModel<String>(dp, "search")).setOutputMarkupId(true)); searchForm.add(new AjaxButton("search", searchForm) { private static final long serialVersionUID = -1659023337945692814L; @@ -71,7 +70,7 @@ public abstract class PagedEntityListPan PagedEntityListPanel.this.onEvent(target); } }); - add(f); + add(f.setOutputMarkupId(true)); } protected abstract void onEvent(AjaxRequestTarget target); Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.html URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.html?rev=1424421&r1=1424420&r2=1424421&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.html (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.html Thu Dec 20 11:51:13 2012 @@ -26,6 +26,11 @@ var chat = $('#chat'); chat.animate({ height: chat.height() < 20 ? "300px" : "16px" }, 1000); } + Wicket.Event.subscribe("/websocket/message", function(jqEvent, message) { + $('#messageArea').append('<div>' + message + '</div>'); + // do something with the message. + // it may be a text or a binary message depending on what you pushed from the server side + }); </script> </wicket:head> <wicket:panel> Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.java URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.java?rev=1424421&r1=1424420&r2=1424421&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.java (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/ChatPanel.java Thu Dec 20 11:51:13 2012 @@ -18,33 +18,64 @@ */ package org.apache.openmeetings.web.components.user; +import java.io.Serializable; + +import org.apache.openmeetings.OpenmeetingsVariables; import org.apache.openmeetings.web.components.UserPanel; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextArea; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.protocol.ws.IWebSocketSettings; +import org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster; +import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage; +import org.apache.wicket.protocol.ws.api.message.TextMessage; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; public class ChatPanel extends UserPanel { + private static final Logger log = Red5LoggerFactory.getLogger(ChatPanel.class, OpenmeetingsVariables.webAppRootKey); private static final long serialVersionUID = -9144707674886211557L; + private String message; + + private class ChatMessage extends TextMessage implements IWebSocketPushMessage, Serializable { + private static final long serialVersionUID = -3802182673895471248L; + public ChatMessage(String msg) { + super(msg); + } + } + public ChatPanel(String id) { super(id); setOutputMarkupId(true); setMarkupId(id); - add(new WebMarkupContainer("messages")); - add(new Form<Void>("sendForm") { - private static final long serialVersionUID = -6367566664201921428L; - - { - add(new TextArea<String>("message").setOutputMarkupId(true)); - add(new Button("send").add(new AjaxFormSubmitBehavior("onclick"){ - private static final long serialVersionUID = -3746739738826501331L; - - })); - } - }); + add(new WebMarkupContainer("messages").setMarkupId("messageArea")); + final Form<Void> f = new Form<Void>("sendForm"); + f.add(new TextArea<String>("message", new PropertyModel<String>(ChatPanel.this, "message")).setOutputMarkupId(true)); + f.add(new Button("send").add(new AjaxFormSubmitBehavior("onclick"){ + private static final long serialVersionUID = -3746739738826501331L; + + protected void onSubmit(AjaxRequestTarget target) { + //Application.getBean(ChatService) sendMessageToOverallChat + new WebSocketPushBroadcaster(IWebSocketSettings.Holder.get(getApplication()).getConnectionRegistry()) + .broadcastAll(getApplication(), new ChatMessage(message)); + /*for (IWebSocketConnection c : IWebSocketSettings.Holder.get(getApplication()).getConnectionRegistry().getConnections(getApplication())) { + try { + c.sendMessage(message); + } catch(Exception e) { + log.error("Error while sending message", e); + } + }*/ + ChatPanel.this.message = ""; + target.add(f); + }; + })); + add(f.setOutputMarkupId(true)); } }