/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* 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 net.java.sip.communicator.plugin.whiteboard;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
/**
* WhiteboardMenuItem
*
* @author Julien Waechter
*/
public class WhiteboardMenuItem
extends AbstractPluginComponent
implements ActionListener
{
private final JMenu whiteboardMenu
= new JMenu(Resources.getString("plugin.whiteboard.MENU_ITEM"));
/**
* The current meta contact
*/
private MetaContact metaContact;
/**
* The Whiteboard session manager
*/
private final WhiteboardSessionManager session;
/**
* WhiteboardMenuItem constructor.
*
* @param session the whiteboard session manager
*/
public WhiteboardMenuItem (WhiteboardSessionManager session,
PluginComponentFactory parentFactory)
{
super(Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU, parentFactory);
this.session = session;
this.whiteboardMenu.setIcon (
Resources.getImage ("plugin.whiteboard.MPEN_ICON"));
}
@Override
public void setCurrentContact (Contact contact)
{
}
/**
* Sets the current meta contact.
*
* @param metaContact the current meta contact
*/
@Override
public void setCurrentContact (MetaContact metaContact)
{
this.metaContact = metaContact;
this.whiteboardMenu.removeAll();
Iterator<Contact> iter = metaContact.getContacts();
while (iter.hasNext())
{
Contact contact = iter.next();
ProtocolProviderService pps = contact.getProtocolProvider();
OperationSetWhiteboarding opSetWb
= pps.getOperationSet(OperationSetWhiteboarding.class);
String contactDisplayName = contact.getDisplayName();
JMenuItem contactItem = new JMenuItem(contactDisplayName);
contactItem.setName(contact.getDisplayName() + pps.getProtocolName());
if (opSetWb != null)
{
contactItem.addActionListener(this);
}
else
{
contactItem.setEnabled(false);
contactItem.setToolTipText(
Resources.getString("plugin.whiteboard.NOT_SUPPORTED"));
}
this.whiteboardMenu.add(contactItem);
}
}
/**
* Sets the current meta group.
*
* @param metaGroup the current meta contact group
*/
@Override
public void setCurrentContactGroup (MetaContactGroup metaGroup)
{
}
/**
* Invoked when an action occurs: user start a whiteboard session.
*
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
String itemID = ((JMenuItem)e.getSource()).getName();
Iterator<Contact> i = this.metaContact.getContacts();
while(i.hasNext())
{
Contact contact = i.next();
String id = contact.getAddress()
+ contact.getProtocolProvider().getProtocolName();
if(itemID.equals(id))
session.initWhiteboard (contact);
}
}
public Object getComponent()
{
if(metaContact == null)
{
whiteboardMenu.setEnabled(false);
return whiteboardMenu;
}
Iterator<Contact> iter = metaContact.getContacts();
while (iter.hasNext())
{
Contact contact = iter.next();
ProtocolProviderService pps = contact.getProtocolProvider();
OperationSetWhiteboarding opSetWb
= pps.getOperationSet(OperationSetWhiteboarding.class);
if (opSetWb != null)
{
whiteboardMenu.setEnabled(true);
return whiteboardMenu;
}
}
whiteboardMenu.setEnabled(false);
return whiteboardMenu;
}
public String getName()
{
return whiteboardMenu.getText();
}
}