diff options
author | George Politis <666f6f@java.net> | 2009-09-11 13:00:04 +0000 |
---|---|---|
committer | George Politis <666f6f@java.net> | 2009-09-11 13:00:04 +0000 |
commit | ccc25a13e60b31220216b4ff880c0ea90a240cd8 (patch) | |
tree | 22b67f5fd0cbb01adc3ca7318631344708fbfb5c | |
parent | 6e67b4a3ced3b111a07cac4458bd6ae02e9cc26e (diff) | |
download | jitsi-ccc25a13e60b31220216b4ff880c0ea90a240cd8.zip jitsi-ccc25a13e60b31220216b4ff880c0ea90a240cd8.tar.gz jitsi-ccc25a13e60b31220216b4ff880c0ea90a240cd8.tar.bz2 |
Added PluginComponent.setCurrentContact(Contact) method. The method is initially added so the OTR button in the toolbar can correctly react when user changes the chat transport via the chat transport selector box. The method is called from MainToolBar as of this revision.
22 files changed, 197 insertions, 10 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java index 17e7f49..806c1f2 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java @@ -94,7 +94,7 @@ public class ChatPanel private boolean isShown = false; - private ChatSession chatSession; + public ChatSession chatSession; private long firstHistoryMsgTimestamp; diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatSession.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatSession.java index a9f5b75..e607cd8 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatSession.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatSession.java @@ -22,7 +22,6 @@ public interface ChatSession final String[] chatHistoryFilter = new String[]{ MessageHistoryService.class.getName(), FileHistoryService.class.getName()}; - /** * Returns the descriptor of this chat session. * @@ -186,4 +185,20 @@ public interface ChatSession * list of (multiple) participants; otherwise, <tt>false</tt> */ public boolean isContactListSupported(); + + /** + * Adds the given {@link ChatSessionChangeListener} to this + * <tt>ChatSession</tt>. + * + * @param l the <tt>ChatSessionChangeListener</tt> to add + */ + public void addChatTransportChangeListener(ChatSessionChangeListener l); + + /** + * Removes the given {@link ChatSessionChangeListener} to this + * <tt>ChatSession</tt>. + * + * @param l the <tt>ChatSessionChangeListener</tt> to add + */ + public void removeChatTransportChangeListener(ChatSessionChangeListener l); } diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatSessionChangeListener.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatSessionChangeListener.java new file mode 100755 index 0000000..594a799 --- /dev/null +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatSessionChangeListener.java @@ -0,0 +1,23 @@ +/*
+ * 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.impl.gui.main.chat;
+
+/**
+ * Listens for changes in {@link ChatSession}.
+ * @author George Politis
+ */
+public interface ChatSessionChangeListener
+{
+ /**
+ * Called when the current {@link ChatTransport} has
+ * changed.
+ *
+ * @param chatSession the {@link ChatSession} it's current
+ * {@link ChatTransport} has changed
+ */
+ public void currentChatTransportChanged(ChatSession chatSession);
+}
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/MetaContactChatSession.java b/src/net/java/sip/communicator/impl/gui/main/chat/MetaContactChatSession.java index 0f42544..b2e83b1 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/MetaContactChatSession.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/MetaContactChatSession.java @@ -46,6 +46,9 @@ public class MetaContactChatSession private ChatTransport currentChatTransport; private final ChatSessionRenderer sessionRenderer; + + private final java.util.List<ChatSessionChangeListener> chatTransportChangeListeners = + new Vector<ChatSessionChangeListener>(); /** * Creates an instance of <tt>MetaContactChatSession</tt> by specifying the @@ -365,6 +368,10 @@ public class MetaContactChatSession public void setCurrentChatTransport(ChatTransport chatTransport) { this.currentChatTransport = chatTransport; + for (ChatSessionChangeListener l : chatTransportChangeListeners) + { + l.currentChatTransportChanged(this); + } } public void childContactsReordered(MetaContactGroupEvent evt) @@ -621,4 +628,21 @@ public class MetaContactChatSession { return false; } + + public void addChatTransportChangeListener(ChatSessionChangeListener l) + { + synchronized (chatTransportChangeListeners) + { + if (!chatTransportChangeListeners.contains(l)) + chatTransportChangeListeners.add(l); + } + } + + public void removeChatTransportChangeListener(ChatSessionChangeListener l) + { + synchronized (chatTransportChangeListeners) + { + chatTransportChangeListeners.remove(l); + } + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatSession.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatSession.java index 2707c45..e1582cd 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatSession.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatSession.java @@ -39,6 +39,9 @@ public class ConferenceChatSession private final ChatRoomWrapper chatRoomWrapper; private final ChatSessionRenderer sessionRenderer; + + private final java.util.List<ChatSessionChangeListener> chatTransportChangeListeners = + new Vector<ChatSessionChangeListener>(); /** * Creates an instance of <tt>ConferenceChatSession</tt>, by specifying the @@ -346,6 +349,10 @@ public class ConferenceChatSession public void setCurrentChatTransport(ChatTransport chatTransport) { this.currentChatTransport = chatTransport; + for (ChatSessionChangeListener l : chatTransportChangeListeners) + { + l.currentChatTransportChanged(this); + } } /** @@ -560,4 +567,21 @@ public class ConferenceChatSession !chatRoom.isSystem() && !ConferenceChatManager.isPrivate(chatRoom); } + + public void addChatTransportChangeListener(ChatSessionChangeListener l) + { + synchronized (chatTransportChangeListeners) + { + if (!chatTransportChangeListeners.contains(l)) + chatTransportChangeListeners.add(l); + } + } + + public void removeChatTransportChangeListener(ChatSessionChangeListener l) + { + synchronized (chatTransportChangeListeners) + { + chatTransportChangeListeners.remove(l); + } + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java index d82ed7c..7d25ec1 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java @@ -23,6 +23,7 @@ import net.java.sip.communicator.impl.gui.utils.*; import net.java.sip.communicator.service.contactlist.MetaContact; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; +import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.swing.*; @@ -132,6 +133,9 @@ public class MainToolBar { public void chatChanged(ChatPanel panel) { + if (panel == null) + return; + MetaContact contact = GuiActivator.getUIService().getChatContact(panel); @@ -142,6 +146,37 @@ public class MainToolBar ((PluginComponent)c).setCurrentContact(contact); } + + if (panel.chatSession != null) + { + panel.chatSession + .addChatTransportChangeListener(new ChatSessionChangeListener() + { + public void currentChatTransportChanged( + ChatSession chatSession) + { + if (chatSession == null) + return; + + ChatTransport currentTransport = + chatSession.getCurrentChatTransport(); + if (currentTransport.getDescriptor() instanceof Contact) + { + Contact contact = + (Contact) currentTransport + .getDescriptor(); + for (Component c : getComponents()) + { + if (!(c instanceof PluginComponent)) + continue; + + ((PluginComponent) c) + .setCurrentContact(contact); + } + } + } + }); + } } }); } diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java b/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java index 2fd89b4..bad9432 100644 --- a/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java @@ -17,6 +17,7 @@ import net.java.sip.communicator.impl.gui.utils.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; +import net.java.sip.communicator.service.protocol.*; /** * @author Yana Stamcheva @@ -76,6 +77,10 @@ public class MoreButton this.repaint(); } + public void setCurrentContact(Contact contact) + { + } + public void setCurrentContact(MetaContact metaContact) { } diff --git a/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java b/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java index 759551c..e9be610 100644 --- a/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java +++ b/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java @@ -12,6 +12,7 @@ import javax.swing.*; import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.protocol.*;
public class AboutWindowPluginComponent
implements PluginComponent
@@ -73,6 +74,10 @@ public class AboutWindowPluginComponent .getI18NString("plugin.branding.ABOUT_MENU_ENTRY");
}
+ public void setCurrentContact(Contact contact)
+ {
+ }
+
public void setCurrentContact(MetaContact metaContact)
{
}
diff --git a/src/net/java/sip/communicator/plugin/branding/branding.manifest.mf b/src/net/java/sip/communicator/plugin/branding/branding.manifest.mf index 10ccdbf..1126369 100755 --- a/src/net/java/sip/communicator/plugin/branding/branding.manifest.mf +++ b/src/net/java/sip/communicator/plugin/branding/branding.manifest.mf @@ -10,6 +10,7 @@ Import-Package: org.osgi.framework, net.java.sip.communicator.service.resources, net.java.sip.communicator.service.gui, net.java.sip.communicator.service.gui.event, + net.java.sip.communicator.service.protocol, net.java.sip.communicator.util, net.java.sip.communicator.util.swing, javax.swing, diff --git a/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java b/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java index eca4c58..0d3e28a 100644 --- a/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java +++ b/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java @@ -15,6 +15,7 @@ import javax.swing.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; +import net.java.sip.communicator.service.protocol.*; /** * The <tt>ExtendedCallHistorySearchButton</tt> is the button that will be @@ -86,6 +87,10 @@ public class ExtendedCallHistorySearchItem return historyMenuItem.getText(); } + public void setCurrentContact(Contact contact) + { + } + public void setCurrentContact(MetaContact metaContact) { } diff --git a/src/net/java/sip/communicator/plugin/callhistoryform/callhistoryform.manifest.mf b/src/net/java/sip/communicator/plugin/callhistoryform/callhistoryform.manifest.mf index 09e9468..aae3673 100644 --- a/src/net/java/sip/communicator/plugin/callhistoryform/callhistoryform.manifest.mf +++ b/src/net/java/sip/communicator/plugin/callhistoryform/callhistoryform.manifest.mf @@ -12,6 +12,7 @@ Import-Package: org.osgi.framework, net.java.sip.communicator.service.gui, net.java.sip.communicator.service.gui.event, net.java.sip.communicator.service.resources, + net.java.sip.communicator.service.protocol, net.java.sip.communicator.util, net.java.sip.communicator.util.swing, javax.swing, diff --git a/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java b/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java index 0a1b12c..1b9ee22 100644 --- a/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java +++ b/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java @@ -14,6 +14,7 @@ import javax.swing.*; import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.gui.Container;
+import net.java.sip.communicator.service.protocol.*;
/**
*
@@ -38,6 +39,9 @@ public class ContactInfoMenuItem menuItem.addActionListener(this);
}
+ public void setCurrentContact(Contact contact)
+ {}
+
/**
* Sets the currently selected <tt>MetaContact</tt>.
* @param metaContact the currently selected meta contact
diff --git a/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java b/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java index 7716dc6..3346226 100644 --- a/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java +++ b/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java @@ -12,9 +12,9 @@ import java.awt.event.ActionListener; import javax.swing.JMenuItem; -import net.java.sip.communicator.service.contactlist.MetaContact; -import net.java.sip.communicator.service.contactlist.MetaContactGroup; +import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; +import net.java.sip.communicator.service.protocol.*; /** * The <tt>ExamplePluginMenuItem</tt> is a <tt>JMenuItem</tt> that implements @@ -42,6 +42,9 @@ public class ExamplePluginMenuItem this.addActionListener(this); } + public void setCurrentContact(Contact contact) + {} + /** * Sets the current <tt>MetaContact</tt>. This in the case of the contact * right button menu container would be the underlying contact in the diff --git a/src/net/java/sip/communicator/plugin/exampleplugin/exampleplugin.manifest.mf b/src/net/java/sip/communicator/plugin/exampleplugin/exampleplugin.manifest.mf index 0248b3c..31f89c6 100644 --- a/src/net/java/sip/communicator/plugin/exampleplugin/exampleplugin.manifest.mf +++ b/src/net/java/sip/communicator/plugin/exampleplugin/exampleplugin.manifest.mf @@ -9,6 +9,7 @@ Import-Package: org.osgi.framework, net.java.sip.communicator.service.contactlist.event, net.java.sip.communicator.service.gui, net.java.sip.communicator.service.gui.event, + net.java.sip.communicator.service.protocol, net.java.sip.communicator.util, net.java.sip.communicator.util.swing, javax.swing, diff --git a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java index 35d584c..4ba5fff 100644 --- a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java +++ b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java @@ -66,7 +66,7 @@ public class OtrMetaContactButton if (OtrMetaContactButton.this.contact != null) setPolicy(OtrActivator.scOtrEngine .getContactPolicy(contact)); - } + } }); OtrActivator.scOtrKeyManager.addListener(new ScOtrKeyManagerListener() @@ -79,10 +79,10 @@ public class OtrMetaContactButton setStatus(OtrActivator.scOtrEngine .getSessionStatus(contact)); } - + } }); - + this.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -94,7 +94,8 @@ public class OtrMetaContactButton { case ENCRYPTED: case FINISHED: - // Default action for finished and encrypted sessions is end session. + // Default action for finished and encrypted sessions is end + // session. OtrActivator.scOtrEngine.endSession(contact); break; case PLAINTEXT: @@ -132,6 +133,13 @@ public class OtrMetaContactButton return false; } + public void setCurrentContact(Contact contact) + { + this.contact = contact; + this.setStatus(OtrActivator.scOtrEngine.getSessionStatus(contact)); + this.setPolicy(OtrActivator.scOtrEngine.getContactPolicy(contact)); + } + public void setCurrentContact(MetaContact metaContact) { contact = metaContact.getDefaultContact(); @@ -165,8 +173,7 @@ public class OtrMetaContactButton .setImage(ImageIO .read(OtrActivator.resourceService .getImageURL((OtrActivator.scOtrKeyManager - .isVerified(contact)) - ? "plugin.otr.ENCRYPTED_ICON_22x22" + .isVerified(contact)) ? "plugin.otr.ENCRYPTED_ICON_22x22" : "plugin.otr.ENCRYPTED_UNVERIFIED_ICON_22x22"))); } catch (IOException e) diff --git a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java index 2c08493..ad5ed9f 100644 --- a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java +++ b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java @@ -71,6 +71,10 @@ public class OtrMetaContactMenu return false; } + public void setCurrentContact(Contact contact) + { + } + public void setCurrentContact(MetaContact metaContact) { // Rebuild menu. diff --git a/src/net/java/sip/communicator/plugin/otr/ScOtrKeyManagerImpl.java b/src/net/java/sip/communicator/plugin/otr/ScOtrKeyManagerImpl.java index 8678eed..8145097 100755 --- a/src/net/java/sip/communicator/plugin/otr/ScOtrKeyManagerImpl.java +++ b/src/net/java/sip/communicator/plugin/otr/ScOtrKeyManagerImpl.java @@ -167,6 +167,9 @@ public class ScOtrKeyManagerImpl public KeyPair loadKeyPair(AccountID account)
{
+ if (account == null)
+ return null;
+
String accountID = account.getAccountUniqueID();
// Load Private Key.
byte[] b64PrivKey =
@@ -212,6 +215,9 @@ public class ScOtrKeyManagerImpl public void generateKeyPair(AccountID account)
{
+ if (account == null)
+ return;
+
String accountID = account.getAccountUniqueID();
KeyPair keyPair;
try
diff --git a/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java b/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java index 5b14895..083c936 100644 --- a/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java +++ b/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java @@ -15,6 +15,7 @@ import java.awt.event.*; import javax.swing.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.protocol.*;
import net.sf.profiler4j.console.*;
public class SettingsWindowMenuEntry implements PluginComponent
@@ -66,6 +67,10 @@ public class SettingsWindowMenuEntry implements PluginComponent return Resources.getString( PROFILER_NAME );
}
+ public void setCurrentContact(Contact contact)
+ {
+ }
+
public void setCurrentContact(MetaContact metaContact)
{
}
diff --git a/src/net/java/sip/communicator/plugin/profiler4j/profiler4j.manifest.mf b/src/net/java/sip/communicator/plugin/profiler4j/profiler4j.manifest.mf index 8b0c0ca..3b946d6 100644 --- a/src/net/java/sip/communicator/plugin/profiler4j/profiler4j.manifest.mf +++ b/src/net/java/sip/communicator/plugin/profiler4j/profiler4j.manifest.mf @@ -12,6 +12,7 @@ Import-Package: org.apache.commons.logging, net.java.sip.communicator.service.contactlist, net.java.sip.communicator.service.gui, net.java.sip.communicator.service.resources, + net.java.sip.communicator.service.protocol, net.java.sip.communicator.util, javax.swing, javax.swing.border, diff --git a/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java b/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java index b2f44e0..32d66ca 100644 --- a/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java +++ b/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java @@ -650,6 +650,10 @@ public class UpdateCheckActivator return updateMenuItem; } + public void setCurrentContact(Contact contact) + { + } + public void setCurrentContact(MetaContact metaContact) { } diff --git a/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java b/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java index 55a0ca5..5a7b7cc 100644 --- a/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java +++ b/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java @@ -49,6 +49,10 @@ public class WhiteboardMenuItem Resources.getImage ("plugin.whiteboard.MPEN_ICON")); } + public void setCurrentContact (Contact contact) + { + } + /** * Sets the current meta contact. * diff --git a/src/net/java/sip/communicator/service/gui/PluginComponent.java b/src/net/java/sip/communicator/service/gui/PluginComponent.java index 076d623..ff5d0c1 100644 --- a/src/net/java/sip/communicator/service/gui/PluginComponent.java +++ b/src/net/java/sip/communicator/service/gui/PluginComponent.java @@ -7,6 +7,7 @@ package net.java.sip.communicator.service.gui; import net.java.sip.communicator.service.contactlist.*; +import net.java.sip.communicator.service.protocol.*; /** * The <tt>PluginComponent</tt> is an interface meant to be implemented by @@ -77,6 +78,15 @@ public interface PluginComponent public Object getComponent(); /** + * Sets the current contact. Meant to be used by plugin components that + * are interested of the current contact. The current contact is the contact + * for the currently selected chat transport. + * + * @param contact the current contact + */ + public void setCurrentContact(Contact contact); + + /** * Sets the current meta contact. Meant to be used by plugin components that * are interested of the current contact. The current contact could be the * contact currently selected in the contact list or the contact for the |