/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2010 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.spark.plugin.ofmeet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.component.RolloverButton;
import org.jivesoftware.spark.ui.ChatRoom;
import org.jivesoftware.spark.util.*;
import org.jivesoftware.spark.util.log.*;
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.packet.*;
import org.jxmpp.util.XmppStringUtils;
import sun.misc.BASE64Decoder;
public class ChatRoomDecorator
{
public RolloverButton ofmeetButton;
public ChatRoom room;
private final String url;
public ChatRoomDecorator(final ChatRoom room, final String url, final String server, final String port, final SparkMeetPlugin plugin)
{
this.room = room;
this.url = url;
try {
BASE64Decoder decoder = new BASE64Decoder();
String imageString = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACZUlEQVR42o1TS09TQRg999mWgtTGQosiLEQhXVA0Me5swsYFRjBxoyatvwBi4g9g66p7F+2exIDvBYldGOIzbUwMGqw2Sr1YH+21Qsud2zvOTB9UkMQv+e6de2fOme+c+QaUUtCdjLF8TPdGpv7rc4wUnoEYL2F/X4VTKwuMxB8selmmWUawK5zKOpzSB5D8Mqy1e1n2K6qPTJn6iRnIB49B3Q9cL74GtSoirXeLIGt3YPuNiKIhXX2SicKxTT18RRDMdYLtjVeQJBlW7iH7qMHZLMIurGC7x0D/VVFtxLwtzVm5R/P62KU2QQP85Tlo7SdI4Sns9RUG3gBIFZRsQvJ0yCKYk4F5PuYEPlHy1wwk1S3A5P0D2MYLkBDKUJBykVBaK3eVi7ckUBU+veyf1ifOQeoKCAIRlDogqwsgH5cFWBnFIgYQZ1Omy3sd1bs3oP32Q3b7oY5OLmkj5yH3HAGrBHlOwHVD9QiwcxSp3ot0xn+GgmVyW7lZsgOgsrefqsOTJVf4clI+MMjNFwSptjhZ4c88c/oae483yePewaRP5h7IKuTuoA+6N85253PjfxPULbYglLC2mHeV+4mWP5U3U6gTVqXi7jxpPpdQW0fIPZCYBMkbzGqGAXNpKqrxIhmQmIBmAMrESTAZnURRTjAtjiN4qmGmXYXFB58yqDdX6R5mXt9hBu6DMnAaSiDcLoO3Mm1qzbK2zdKtbwlrdcGEopfqpZyQoBwaE02lHb/Q3qgZ+dZd2LHhx9tG48hajLVzCno3lN4hIXEXWEjovIn/yrP8JtL9Y3ZPBf8RQ03feJMN/wHiFFIvPgJ8vgAAAABJRU5ErkJggg==";
byte[] imageByte = decoder.decodeBuffer(imageString);
ImageIcon ofmeetIcon = new ImageIcon(imageByte);
ofmeetButton = new RolloverButton(ofmeetIcon);
ofmeetButton.setToolTipText(GraphicUtils.createToolTip("Openfire Meetings"));
final String roomId = getNode(room.getRoomname());
final String sessionID = roomId + "-" + System.currentTimeMillis();
final String nickname = getNode(XmppStringUtils.parseBareAddress(SparkManager.getSessionManager().getJID()));
ofmeetButton.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String newUrl, newRoomId;
if ("groupchat".equals(room.getChatType().toString()))
{
newRoomId = roomId;
newUrl = url + "r=" + newRoomId;
sendInvite(room.getRoomname(), newUrl, Message.Type.groupchat);
} else {
newRoomId = sessionID;
newUrl = url + "r=" + newRoomId;
sendInvite(room.getRoomname(), newUrl, Message.Type.chat);
}
plugin.openURL(newRoomId);
}
});
room.getEditorBar().add(ofmeetButton);
} catch (Exception e) {
Log.error("cannot create openfire meetings icon", e);
}
}
public void finished()
{
Log.warning("ChatRoomDecorator: finished " + room.getRoomname());
}
private String getNode(String jid)
{
String node = jid;
int pos = node.indexOf("@");
if (pos > -1)
node = jid.substring(0, pos);
return node;
}
private void sendInvite(String jid, String url, Message.Type type)
{
Message message2 = new Message();
message2.setTo(jid);
message2.setType(type);
message2.setBody(url);
room.sendMessage(message2);
}
}