/*
* 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.impl.gui.main.call;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactsource.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
/**
* Represents a <tt>Dialog</tt> which allows specifying the target contact
* address of a transfer-call operation.
*
* @author Yana Stamcheva
*/
public class TransferCallDialog
extends OneChoiceInviteDialog
{
/**
* The peer to transfer.
*/
private final CallPeer transferPeer;
/**
* Creates a <tt>TransferCallDialog</tt> by specifying the peer to transfer
* @param peer the peer to transfer
*/
public TransferCallDialog(final CallPeer peer)
{
super(GuiActivator.getResources()
.getI18NString("service.gui.TRANSFER_CALL_TITLE"));
this.transferPeer = peer;
this.initContactListData(peer.getProtocolProvider());
this.setInfoText(GuiActivator.getResources()
.getI18NString("service.gui.TRANSFER_CALL_MSG"));
this.setOkButtonText(GuiActivator.getResources()
.getI18NString("service.gui.TRANSFER"));
this.setMinimumSize(new Dimension(300, 300));
addOkButtonListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
UIContact uiContact = getSelectedContact();
if (uiContact != null)
{
transferToContact(uiContact);
}
setVisible(false);
dispose();
}
});
addCancelButtonListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(false);
dispose();
}
});
}
/**
* Initializes contact list sources.
*/
private void initContactSources()
{
DemuxContactSourceService demuxCSService
= GuiActivator.getDemuxContactSourceService();
// If the DemuxContactSourceService isn't registered we use the default
// contact source set.
if (demuxCSService == null)
return;
Iterator<UIContactSource> sourcesIter
= new ArrayList<UIContactSource>(
contactList.getContactSources()).iterator();
contactList.removeAllContactSources();
while (sourcesIter.hasNext())
{
ContactSourceService contactSource
= sourcesIter.next().getContactSourceService();
contactList.addContactSource(
demuxCSService.createDemuxContactSource(contactSource));
}
}
/**
* Initializes the left contact list with the contacts that could be added
* to the current chat session.
*
* @param protocolProvider the protocol provider from which to initialize
* the contact list data
*/
private void initContactListData(ProtocolProviderService protocolProvider)
{
initContactSources();
contactList.addContactSource(
new ProtocolContactSourceServiceImpl(
protocolProvider, OperationSetBasicTelephony.class));
contactList.addContactSource(
new StringContactSourceServiceImpl(
protocolProvider, OperationSetBasicTelephony.class));
contactList.applyDefaultFilter();
}
/**
* Transfer the transfer peer to the given <tt>UIContact</tt>.
*
* @param uiContact the contact to transfer to
*/
private void transferToContact(UIContact uiContact)
{
UIContactDetail contactDetail = uiContact
.getDefaultContactDetail(
OperationSetBasicTelephony.class);
CallManager.transferCall( transferPeer,
contactDetail.getAddress());
}
}