diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java
index 1ad148fb9..c86fff2b8 100755
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java
@@ -42,7 +42,7 @@ public class ContactListPane
extends SCScrollPane
implements MessageListener,
TypingNotificationsListener,
- FileTransferRequestListener,
+ FileTransferListener,
ContactListListener,
PluginComponentListener
{
@@ -571,10 +571,10 @@ else if (typingState == OperationSetTypingNotifications.STATE_UNKNOWN)
* When a request has been received we show it to the user through the
* chat session renderer.
*
- * @see FileTransferRequestListener#incomingRequestReceived(
+ * @see FileTransferListener#incomingRequestReceived(
* FileTransferRequestEvent)
*/
- public void incomingRequestReceived(FileTransferRequestEvent event)
+ public void fileTransferRequestReceived(FileTransferRequestEvent event)
{
IncomingFileTransferRequest request = event.getRequest();
@@ -613,9 +613,15 @@ public void run()
NotificationManager.INCOMING_FILE,
title,
request.getFileName());
-
}
+ /**
+ * Nothing to do here, because we already know when a file transfer is
+ * created.
+ */
+ public void fileTransferCreated(FileTransfer fileTransfer)
+ {}
+
/**
* Send a proactive notification according to the proactive timer.
* The notification is fired only if another notification hasn't been
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/IncomingFileTransferRequestJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/IncomingFileTransferRequestJabberImpl.java
index ccdf89117..f12f7dccd 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/IncomingFileTransferRequestJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/IncomingFileTransferRequestJabberImpl.java
@@ -36,6 +36,8 @@ public class IncomingFileTransferRequestJabberImpl
*/
private final FileTransferRequest fileTransferRequest;
+ private final OperationSetFileTransferJabberImpl fileTransferOpSet;
+
private Contact sender;
/**
@@ -43,12 +45,15 @@ public class IncomingFileTransferRequestJabberImpl
* given fileTransferRequest, coming from the Jabber protocol.
*
* @param jabberProvider the protocol provider
+ * @param fileTransferOpSet file transfer operation set
* @param fileTransferRequest the request coming from the Jabber protocol
*/
public IncomingFileTransferRequestJabberImpl(
ProtocolProviderServiceJabberImpl jabberProvider,
+ OperationSetFileTransferJabberImpl fileTransferOpSet,
FileTransferRequest fileTransferRequest)
{
+ this.fileTransferOpSet = fileTransferOpSet;
this.fileTransferRequest = fileTransferRequest;
String fromUserID
@@ -118,12 +123,13 @@ public FileTransfer acceptFile(File file)
incomingTransfer
= new IncomingFileTransferJabberImpl(jabberTransfer);
+ fileTransferOpSet.fireFileTransferCreated(incomingTransfer);
+
jabberTransfer.recieveFile(file);
new OperationSetFileTransferJabberImpl
.FileTransferProgressThread(
jabberTransfer, incomingTransfer, getFileSize()).start();
-
}
catch (XMPPException e)
{
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetFileTransferJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetFileTransferJabberImpl.java
index 0bd29a6e5..f53ca001f 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetFileTransferJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetFileTransferJabberImpl.java
@@ -13,6 +13,7 @@
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.FileTransfer;
import net.java.sip.communicator.service.protocol.event.*;
+import net.java.sip.communicator.service.protocol.event.FileTransferListener;
import net.java.sip.communicator.util.*;
import org.jivesoftware.smack.*;
@@ -53,10 +54,10 @@ public class OperationSetFileTransferJabberImpl
private JabberFileTransferListener jabberFileTransferListener;
/**
- * A list of listeners registered for message events.
+ * A list of listeners registered for file transfer events.
*/
- private Vector fileTransferListeners
- = new Vector();
+ private Vector fileTransferListeners
+ = new Vector();
/**
* Constructor
@@ -103,8 +104,14 @@ public FileTransfer sendFile( Contact toContact,
outgoingTransfer
= new OutgoingFileTransferJabberImpl(transfer);
+ // Notify all interested listeners that a file transfer has been
+ // created.
+ fireFileTransferCreated(outgoingTransfer);
+
+ // Send the file through the Jabber file transfer.
transfer.sendFile(file, "Sending file.");
+ // Start the status and progress thread.
new FileTransferProgressThread(
transfer, outgoingTransfer).start();
}
@@ -146,7 +153,7 @@ public FileTransfer sendFile( Contact toContact,
* @param listener the FileTransferRequestListener to add
*/
public void addFileTransferRequestListener(
- FileTransferRequestListener listener)
+ FileTransferListener listener)
{
synchronized(fileTransferListeners)
{
@@ -165,7 +172,7 @@ public void addFileTransferRequestListener(
* @param listener the FileTransferRequestListener to remove
*/
public void removeFileTransferRequestListener(
- FileTransferRequestListener listener)
+ FileTransferListener listener)
{
synchronized(fileTransferListeners)
{
@@ -242,7 +249,7 @@ else if (evt.getNewState() == RegistrationState.UNREGISTERED)
* Listener for Jabber incoming file transfer requests.
*/
private class JabberFileTransferListener
- implements FileTransferListener
+ implements org.jivesoftware.smackx.filetransfer.FileTransferListener
{
/**
* Function called when a jabber file transfer request arrive.
@@ -254,7 +261,9 @@ public void fileTransferRequest(FileTransferRequest request)
// Create a global incoming file transfer request.
IncomingFileTransferRequest incomingFileTransferRequest
= new IncomingFileTransferRequestJabberImpl(
- jabberProvider, request);
+ jabberProvider,
+ OperationSetFileTransferJabberImpl.this,
+ request);
// Create an event associated to this global request.
FileTransferRequestEvent fileTransferRequestEvent
@@ -274,18 +283,41 @@ public void fileTransferRequest(FileTransferRequest request)
*/
private void fireFileTransferRequest(FileTransferRequestEvent event)
{
- Iterator listeners = null;
+ Iterator listeners = null;
+ synchronized (fileTransferListeners)
+ {
+ listeners = new ArrayList
+ (fileTransferListeners).iterator();
+ }
+
+ while (listeners.hasNext())
+ {
+ FileTransferListener listener = listeners.next();
+
+ listener.fileTransferRequestReceived(event);
+ }
+ }
+
+ /**
+ * Delivers the file transfer to all registered listeners.
+ *
+ * @param fileTransfer the FileTransfer that we'd like delivered to
+ * all registered file transfer listeners.
+ */
+ void fireFileTransferCreated(FileTransfer fileTransfer)
+ {
+ Iterator listeners = null;
synchronized (fileTransferListeners)
{
- listeners = new ArrayList
+ listeners = new ArrayList
(fileTransferListeners).iterator();
}
while (listeners.hasNext())
{
- FileTransferRequestListener listener = listeners.next();
+ FileTransferListener listener = listeners.next();
- listener.incomingRequestReceived(event);
+ listener.fileTransferCreated(fileTransfer);
}
}
diff --git a/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetFileTransferSSHImpl.java b/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetFileTransferSSHImpl.java
index f2bbcc1ad..a91926f14 100644
--- a/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetFileTransferSSHImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetFileTransferSSHImpl.java
@@ -32,8 +32,8 @@ public class OperationSetFileTransferSSHImpl
/**
* Currently registered message listeners.
*/
- private Vector fileTransferListeners
- = new Vector();
+ private Vector fileTransferListeners
+ = new Vector();
/**
* The protocol provider that created us.
@@ -55,7 +55,7 @@ public OperationSetFileTransferSSHImpl(
* @param listener the FileListener to register.
*/
public void addFileTransferRequestListener(
- FileTransferRequestListener listener)
+ FileTransferListener listener)
{
synchronized (fileTransferListeners)
{
@@ -65,7 +65,7 @@ public void addFileTransferRequestListener(
}
public void removeFileTransferRequestListener(
- FileTransferRequestListener listener)
+ FileTransferListener listener)
{
synchronized (fileTransferListeners)
{
diff --git a/src/net/java/sip/communicator/service/protocol/OperationSetFileTransfer.java b/src/net/java/sip/communicator/service/protocol/OperationSetFileTransfer.java
index 6b006a76f..451c3c37f 100644
--- a/src/net/java/sip/communicator/service/protocol/OperationSetFileTransfer.java
+++ b/src/net/java/sip/communicator/service/protocol/OperationSetFileTransfer.java
@@ -72,7 +72,7 @@ public FileTransfer sendFile( Contact toContact,
* @param listener the FileTransferRequestListener to add
*/
public void addFileTransferRequestListener(
- FileTransferRequestListener listener);
+ FileTransferListener listener);
/**
* Removes the given FileTransferRequestListener that listens for
@@ -82,5 +82,5 @@ public void addFileTransferRequestListener(
* @param listener the FileTransferRequestListener to remove
*/
public void removeFileTransferRequestListener(
- FileTransferRequestListener listener);
+ FileTransferListener listener);
}
diff --git a/src/net/java/sip/communicator/service/protocol/event/FileTransferRequestListener.java b/src/net/java/sip/communicator/service/protocol/event/FileTransferListener.java
similarity index 60%
rename from src/net/java/sip/communicator/service/protocol/event/FileTransferRequestListener.java
rename to src/net/java/sip/communicator/service/protocol/event/FileTransferListener.java
index 718aaca16..2da42fa58 100644
--- a/src/net/java/sip/communicator/service/protocol/event/FileTransferRequestListener.java
+++ b/src/net/java/sip/communicator/service/protocol/event/FileTransferListener.java
@@ -8,6 +8,8 @@
import java.util.*;
+import net.java.sip.communicator.service.protocol.*;
+
/**
* A listener that would gather events notifying of incoming file transfer
* requests.
@@ -15,7 +17,7 @@
* @author Emil Ivov
* @author Yana Stamcheva
*/
-public interface FileTransferRequestListener
+public interface FileTransferListener
extends EventListener
{
/**
@@ -24,5 +26,12 @@ public interface FileTransferRequestListener
* @param event the FileTransferRequestEvent containing the newly
* received request and other details.
*/
- public void incomingRequestReceived(FileTransferRequestEvent event);
+ public void fileTransferRequestReceived(FileTransferRequestEvent event);
+
+ /**
+ * Called when an incoming or outgoing FileTransfer has been
+ * created.
+ * @param fileTransfer the file transfer object that has been created
+ */
+ public void fileTransferCreated(FileTransfer fileTransfer);
}