Added: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/tabcontent/chat/privateChatTabBottom.lzx URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/tabcontent/chat/privateChatTabBottom.lzx?rev=1356670&view=auto ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/tabcontent/chat/privateChatTabBottom.lzx (added) +++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/tabcontent/chat/privateChatTabBottom.lzx Tue Jul 3 10:57:35 2012 @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- 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. --> +<library> + <!-- FIXME need to be generalized --> + <!--- View of the buttom area of chat. It contains buttons of message,emoticons,clear. --> + <class name="privateChatTabBottom" extends="view"> + + <view x="0" y="0" height="20" width="${ parent.width }" name="message" + bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"> + <method name="getText"> + return this._ctext.getText(); + </method> + <method name="setText" args="txt"> + this._ctext.setAttribute('text',txt); + </method> + <customInputtext name="_ctext" width="${ parent.width-2 }" + height="$once{ parent.height-2 }" x="1" y="1" bgcolor="white"> + <!-- RTL should be fixed separately --> + <handler name="onkeyup" args="key"> + <![CDATA[ + /* RTL should be fixed separately + if ($debug) Debug.write("onkeyup"); + + var reverse = canvas.reverseAll(parent.getText()); + if ($debug) Debug.write("reverse : ", reverse); + */ + // parent.setText(reverse); + // 13 is return + if ((key==27) || (key==13)) { + this.parent.parent._button._button.onclick.sendEvent(); + } + ]]> + </handler> + </customInputtext> + </view> + + <labelCheckbox name="_inverseWording" x="2" y="24" + labelid="580"> + <attribute name="doUpdate" value="false" type="boolean" /> + <handler name="oninit"> + var t = new lz.sharedObject(); + t.getLocal('userdata'); + var g = t.getData('userdata'); + var save = g["rtlCheckbox"]; + //if ($debug) Debug.write("oninit doUpdate",save,g); + if(save) { + this.doUpdate = false; + this.setValue(true); + } + this.doUpdate = true; + </handler> + <handler name="onvalue" args="v"> + if (this.doUpdate) { + //if ($debug) Debug.write("onvalue doUpdate",this.getValue()); + var t = new lz.sharedObject(); + t.getLocal('userdata'); + var g = t.getData('userdata'); + if (g==null) g = new Array(); + g["rtlCheckbox"]=this.getValue(); + //if ($debug) Debug.write("onvalue doUpdate",g["rtlCheckbox"]); + t.setData('userdata',g); + t.flush(); + } + </handler> + <labelTooltip labelid="581" /> + </labelCheckbox> + + <view name="_button" layout="axis:x;spacing:0" y="22" align="right"> + + <attribute name="objMessage" value="null" /> + <simpleLabelButton align="right" y="0" labelid="220" + name="_button" width="70"> + <handler name="onclick"> + parent.objMessage = new Array (); + parent.objMessage[0] = 'privatechat'; + //The server side will put time here + parent.objMessage[1] = ""; + parent.objMessage[2] = 'newtextmessage'; + parent.objMessage[3] = hib.userobject.login; + var message = this.parent.parent.message.getText(); + //if (parent.parent._inverseWording.getValue()) message = canvas.reverseAll(message) + parent.objMessage[4] = message; + parent.objMessage[5] = canvas.currentusercolor; + parent.objMessage[6] = parent.parent.parent.refObj.publicSID; + parent.objMessage[7] = canvas.isrtl; + parent.objMessage[8] = hib.userobject.user_id; + if (this.parent.parent.message.getText().length!=0){ + //Debug.write("send: ",this.parent.objMessage); + parent.sendMessageWithClientByPublicSID.doCall(); + this.parent.parent.message.setText(''); + } + </handler> + </simpleLabelButton> + + <netRemoteCallHib name="sendMessageWithClientByPublicSID" + funcname="chatservice.sendMessageWithClientByPublicSID" + remotecontext="$once{ canvas.thishib }"> + <netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam> + <netparam><method name="getValue"> return parent.parent.parent.parent.refObj.publicSID; </method></netparam> + <handler name="ondata" args="value"> + <![CDATA[ + //The onResult-Handler will be called be the rtmpconnection + if ($debug) Debug.write("chatservice.sendMessageWithClientByPublicSID getValue : ",parent.parent.parent.refObj.publicSID,value); + ]]> + </handler> + </netRemoteCallHib> + + </view> + <miniIcons y="22" name="_show_emots" resource="smile_chat_log_rsc" + width="16" height="16" showhandcursor="true" align="right" x="90" layout="axis:x;spacing:5" > + <handler name="onclick"> + if ($debug) Debug.write("this: ", this); + var pick = new lz.emotIconsSelector(canvas,{ + btnRef: this.parent, + x:(this.getAttributeRelative('x',canvas)-140), + y:(this.getAttributeRelative('y',canvas)-140) + }); + lz.ModeManager.makeModal( pick ); + </handler> + <labelTooltip labelid="445" /> + </miniIcons> + </class> +</library>
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/ChatService.java URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/ChatService.java?rev=1356670&r1=1356669&r2=1356670&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/ChatService.java (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/ChatService.java Tue Jul 3 10:57:35 2012 @@ -94,44 +94,44 @@ public class ChatService implements IPen * @param newMessage * @return */ - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings("unchecked") public int sendMessageWithClient(Object newMessage) { try { IConnection current = Red5.getConnectionLocal(); RoomClient currentClient = this.clientListManager.getClientByStreamId(current.getClient().getId()); Long room_id = currentClient.getRoom_id(); - log.debug("room_id: "+room_id); - log.debug("currentClient.getIsChatNotification(): "+currentClient.getIsChatNotification()); - if (currentClient.getIsChatNotification()){ + log.debug("room_id: " + room_id); + log.debug("currentClient.getIsChatNotification(): " + currentClient.getIsChatNotification()); + if (currentClient.getIsChatNotification()) { room_id = currentClient.getChatUserRoomId(); } - //log.error(newMessage.getClass().getName()); + @SuppressWarnings("rawtypes") ArrayList messageMap = (ArrayList) newMessage; - //adding delimiter space, cause otherwise an emoticon in the last string would not be found - String messageText = messageMap.get(4).toString()+" "; - //log.error("messageText"+messageText); - //add server time - messageMap.set(1,parseDateAsTimeString()); + // adding delimiter space, cause otherwise an emoticon in the last + // string would not be found + String messageText = messageMap.get(4).toString() + " "; + // add server time + messageMap.set(1, parseDateAsTimeString()); LinkedList<String[]> parsedStringObjects = ChatString.parseChatString(messageText, emoticonsManager.getEmotfilesList()); - //log.error("parsedStringObjects"+parsedStringObjects.size()); - log.debug("size:"+messageMap.size()); + // log.error("parsedStringObjects"+parsedStringObjects.size()); + log.debug("size:" + messageMap.size()); messageMap.add(parsedStringObjects); newMessage = messageMap; - HashMap<String,Object> hsm = new HashMap<String,Object>(); + HashMap<String, Object> hsm = new HashMap<String, Object>(); hsm.put("client", currentClient); hsm.put("message", newMessage); - List<HashMap<String,Object>> myChatList = myChats.get(room_id); - if (myChatList==null) myChatList = new LinkedList<HashMap<String,Object>>(); + List<HashMap<String, Object>> myChatList = myChats.get(room_id); + if (myChatList == null) myChatList = new LinkedList<HashMap<String, Object>>(); - if (myChatList.size()==chatRoomHistory) myChatList.remove(0); + if (myChatList.size() == chatRoomHistory) myChatList.remove(0); myChatList.add(hsm); - myChats.put(room_id,myChatList); + myChats.put(room_id, myChatList); - log.debug("SET CHATROOM: "+room_id); + log.debug("SET CHATROOM: " + room_id); //broadcast to everybody in the room/domain Collection<Set<IConnection>> conCollection = current.getScope().getConnections(); @@ -154,7 +154,7 @@ public class ChatService implements IPen log.debug("*..*idremote room_id: " + room_id); log.debug("*..*my idstreamid room_id: " + rcl.getRoom_id()); - if (room_id!=null && room_id.equals(rcl.getRoom_id())) { + if (room_id != null && room_id.equals(rcl.getRoom_id())) { ((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient",new Object[] { hsm }, this); log.debug("sending sendVarsToMessageWithClient to " + conn); } else if (rcl.getIsChatNotification()) { @@ -162,19 +162,86 @@ public class ChatService implements IPen ((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient",new Object[] { hsm }, this); } } - } } } } - } catch (Exception err) { log.error("[ChatService sendMessageWithClient] ",err); return -1; } return 1; } - + + //FIXME copy/past need to be removed + @SuppressWarnings("unchecked") + public int sendMessageWithClientByPublicSID(Object newMessage, String publicSID) { + try { + IConnection current = Red5.getConnectionLocal(); + RoomClient currentClient = this.clientListManager.getClientByStreamId(current.getClient().getId()); + Long room_id = currentClient.getRoom_id(); + + log.debug("room_id: " + room_id); + log.debug("currentClient.getIsChatNotification(): " + currentClient.getIsChatNotification()); + if (currentClient.getIsChatNotification()) { + room_id = currentClient.getChatUserRoomId(); + } + + @SuppressWarnings("rawtypes") + ArrayList messageMap = (ArrayList) newMessage; + // adding delimiter space, cause otherwise an emoticon in the last + // string would not be found + String messageText = messageMap.get(4).toString() + " "; + // add server time + messageMap.set(1, parseDateAsTimeString()); + LinkedList<String[]> parsedStringObjects = ChatString.parseChatString(messageText, emoticonsManager.getEmotfilesList()); + // log.error("parsedStringObjects"+parsedStringObjects.size()); + log.debug("size:" + messageMap.size()); + messageMap.add(parsedStringObjects); + newMessage = messageMap; + + HashMap<String, Object> hsm = new HashMap<String, Object>(); + hsm.put("client", currentClient); + hsm.put("message", newMessage); + + // broadcast to everybody in the room/domain + Collection<Set<IConnection>> conCollection = current.getScope().getConnections(); + for (Set<IConnection> conset : conCollection) { + for (IConnection conn : conset) { + if (conn != null) { + if (conn instanceof IServiceCapableConnection) { + + RoomClient rcl = this.clientListManager.getClientByStreamId(conn.getClient().getId()); + + if (rcl == null) { + continue; + } + if (rcl.getIsAVClient()) { + continue; + } + if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) { + continue; + } + + if (rcl.getPublicSID().equals(publicSID) + || rcl.getPublicSID().equals( + currentClient.getPublicSID())) { + ((IServiceCapableConnection) conn).invoke( + "sendVarsToMessageWithClient", + new Object[] { hsm }, this); + } + + } + } + } + } + } catch (Exception err) { + log.error("[ChatService sendMessageWithClient] ", err); + return -1; + } + return 1; + } + public List<HashMap<String,Object>> clearChat() { try { IConnection current = Red5.getConnectionLocal(); Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/sip/xmlrpc/OpenXGHttpClient.java URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/sip/xmlrpc/OpenXGHttpClient.java?rev=1356670&r1=1356669&r2=1356670&view=diff ============================================================================== --- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/sip/xmlrpc/OpenXGHttpClient.java (original) +++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/sip/xmlrpc/OpenXGHttpClient.java Tue Jul 3 10:57:35 2012 @@ -61,6 +61,7 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +@SuppressWarnings("deprecation") public class OpenXGHttpClient { private static final Logger log = Red5LoggerFactory.getLogger(
