/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.service.protocol;
import java.awt.*;
import net.java.sip.communicator.service.protocol.event.*;
/**
* Represents an <code>OperationSet</code> giving access to video-specific
* functionality in telephony such as visual <code>Component</code>s displaying
* video and listening to dynamic availability of such <code>Component</code>s.
*
* @author Lubomir Marinov
*/
public interface OperationSetVideoTelephony
extends OperationSet
{
/**
* Adds a specific <code>VideoListener</code> to this telephony in order to
* receive notifications when visual/video <code>Component</code>s are being
* added and removed for a specific <code>CallParticipant</code>.
*
* @param participant the <code>CallParticipant</code> whose video the
* specified listener is to be notified about
* @param listener the <code>VideoListener</code> to be notified when
* visual/video <code>Component</code>s are being added or
* removed for <code>participant</code>
*/
void addVideoListener(CallParticipant participant, VideoListener listener);
Component createLocalVisualComponent(CallParticipant participant,
VideoListener listener) throws OperationFailedException;
void disposeLocalVisualComponent(CallParticipant participant,
Component component);
/**
* Gets the visual/video <code>Component</code>s available in this telephony
* for a specific <code>CallParticipant</code>.
*
* @param participant the <code>CallParticipant</code> whose videos are to
* be retrieved
* @return an array of the visual <code>Component</code>s available in this
* telephony for the specified <code>participant</code>
*/
Component[] getVisualComponents(CallParticipant participant);
/**
* Removes a specific <code>VideoListener</code> from this telephony in
* order to no longer have it receive notifications when visual/video
* <code>Component</code>s are being added and removed for a specific
* <code>CallParticipant</code>.
*
* @param participant the <code>CallParticipant</code> whose video the
* specified listener is to no longer be notified about
* @param listener the <code>VideoListener</code> to no longer be notified
* when visual/video <code>Component</code>s are being added or
* removed for <code>participant</code>
*/
void removeVideoListener(CallParticipant participant, VideoListener listener);
}