show icon of the chat current protocol and allow to change the current protocol by choosing from a list of available protocols.

cusax-fix
Yana Stamcheva 20 years ago
parent 329f4af9b6
commit c8e7464a69

@ -25,6 +25,7 @@
import net.java.sip.communicator.service.contactlist.MetaContact;
import net.java.sip.communicator.service.protocol.OperationSetBasicInstantMessaging;
import net.java.sip.communicator.service.protocol.PresenceStatus;
import net.java.sip.communicator.service.protocol.ProtocolProviderService;
/**
* The ChatPanel is the panel, where users can write
@ -37,8 +38,6 @@
* each ChatPanel corresponds to a ChatWindow. When
* chat is in mode "group all messages in one chat window",
* each ChatPanel corresponds to a tab in the ChatWindow.
* In the second case, each ChatPanel stores its tab index
* in the tabbed pane.
*
* @author Yana Stamcheva
*/
@ -65,6 +64,8 @@ public class ChatPanel extends JPanel {
private OperationSetBasicInstantMessaging imOperationSet;
private ProtocolProviderService protocolProvider;
/**
* Creates a chat panel which is added to the
* given chat window.
@ -73,18 +74,20 @@ public class ChatPanel extends JPanel {
* chat panel.
*/
public ChatPanel(ChatWindow chatWindow,
OperationSetBasicInstantMessaging imOperationSet){
ProtocolProviderService protocolProvider){
super(new BorderLayout());
this.chatWindow = chatWindow;
this.imOperationSet = imOperationSet;
this.protocolProvider = protocolProvider;
this.imOperationSet = this.chatWindow.getMainFrame()
.getProtocolIM(protocolProvider);;
conversationPanel = new ChatConversationPanel(this);
this.conversationPanel = new ChatConversationPanel(this);
sendPanel = new ChatSendPanel(this);
this.sendPanel = new ChatSendPanel(this);
writeMessagePanel = new ChatWritePanel(this);
this.writeMessagePanel = new ChatWritePanel(this);
this.topSplitPane.setResizeWeight(1.0D);
this.messagePane.setResizeWeight(1.0D);
@ -99,7 +102,9 @@ public ChatPanel(ChatWindow chatWindow,
this.init();
addComponentListener(new TabSelectionFocusGainListener());
this.sendPanel.setSelectedProtocol(protocolProvider);
addComponentListener(new TabSelectionFocusGainListener());
}
/**
@ -123,12 +128,13 @@ private void init(){
*
* @param contactItem The MetaContact to add.
*/
public void addContactToChat ( MetaContact contactItem,
PresenceStatus status){
public void addContactToChat(MetaContact contactItem,
PresenceStatus status){
this.chatContacts.add(contactItem);
this.chatConferencePanel.addContactToChat(contactItem, status);
this.sendPanel.addProtocols(contactItem);
}
/**
@ -136,11 +142,13 @@ public void addContactToChat ( MetaContact contactItem,
*
* @param contactItem The MetaContact to add.
*/
public void addContactToChat(MetaContact contactItem){
public void addContactToChat(MetaContact contactItem){
this.chatContacts.add(contactItem);
this.chatConferencePanel.addContactToChat(contactItem);
this.sendPanel.addProtocols(contactItem);
}
/**
@ -263,7 +271,7 @@ public void componentMoved(ComponentEvent e) {
}
public void componentShown(ComponentEvent e) {
/*Component component = e.getComponent();
Component component = e.getComponent();
Container parent = component.getParent();
if ( parent instanceof JTabbedPane ) {
JTabbedPane tabbedPane = (JTabbedPane)parent;
@ -280,7 +288,7 @@ public void run(){
}
});
}
}*/
}
}
public void componentHidden(ComponentEvent e) {

@ -4,7 +4,6 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.gui.main.message;
import java.awt.BasicStroke;
@ -14,19 +13,27 @@
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import net.java.sip.communicator.impl.gui.main.customcontrols.SIPCommSelectorBox;
import net.java.sip.communicator.impl.gui.main.i18n.Messages;
import net.java.sip.communicator.impl.gui.utils.AntialiasingManager;
import net.java.sip.communicator.impl.gui.utils.Constants;
import net.java.sip.communicator.service.contactlist.MetaContact;
import net.java.sip.communicator.service.protocol.Contact;
import net.java.sip.communicator.service.protocol.Message;
import net.java.sip.communicator.service.protocol.OperationSetBasicInstantMessaging;
import net.java.sip.communicator.service.protocol.ProtocolProviderService;
public class ChatSendPanel extends JPanel
implements ActionListener{
@ -42,6 +49,10 @@ public class ChatSendPanel extends JPanel
private ChatPanel chatPanel;
private ArrayList protocolsList = new ArrayList();
SIPCommSelectorBox protocolSelectorBox = new SIPCommSelectorBox();
public ChatSendPanel(ChatPanel chatPanel) {
super(new BorderLayout(5, 5));
@ -52,11 +63,11 @@ public ChatSendPanel(ChatPanel chatPanel) {
this.statusPanel.add(statusLabel);
//this.sendPanel.add(sendButton, BorderLayout.CENTER);
//this.sendPanel.add(protocolSelectorBox, BorderLayout.WEST);
this.sendPanel.add(sendButton, BorderLayout.CENTER);
this.sendPanel.add(protocolSelectorBox, BorderLayout.WEST);
this.add(statusPanel, BorderLayout.CENTER);
this.add(sendButton, BorderLayout.EAST);
this.add(sendPanel, BorderLayout.EAST);
this.sendButton.addActionListener(this);
}
@ -108,17 +119,53 @@ public JButton getSendButton() {
return sendButton;
}
public void addProtocols(String[] protocolList) {
for(int i = 0; i < protocolList.length; i ++){
/* protocolSelectorBox.addItem(protocolList[i],
new ImageIcon(Constants.getProtocolIcon(protocolList[i])));
*/
}
public void addProtocols(MetaContact metaContact) {
Iterator protocolContacts = metaContact.getContacts();
while(protocolContacts.hasNext()){
Contact contact = (Contact)protocolContacts.next();
ProtocolProviderService protocolProvider
= contact.getProtocolProvider();
if(!protocolsList.contains(protocolProvider))
protocolsList.add(protocolProvider);
String protocolName = protocolProvider.getProtocolName();
protocolSelectorBox.addItem(protocolName,
new ImageIcon(Constants.getProtocolIcon(protocolName)),
new ProtocolItemListener());
}
}
public void setTypingStatus(String statusMessage){
statusLabel.setText(statusMessage);
}
public void setSelectedProtocol(ProtocolProviderService protocolProvider){
protocolSelectorBox.setIcon(new ImageIcon(Constants
.getProtocolIcon(protocolProvider.getProtocolName())));
}
private class ProtocolItemListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JMenuItem menuItem = (JMenuItem)e.getSource();
String itemTitle = menuItem.getText();
for(int i = 0; i < protocolsList.size(); i ++){
ProtocolProviderService protocolProvider
= (ProtocolProviderService)protocolsList.get(i);
if(protocolProvider.getProtocolName().equals(itemTitle)){
OperationSetBasicInstantMessaging im
= chatPanel.getChatWindow().getMainFrame()
.getProtocolIM(protocolProvider);
chatPanel.setImOperationSet(im);
protocolSelectorBox.setSelected(menuItem);
}
}
}
}
}

@ -30,6 +30,7 @@
import net.java.sip.communicator.service.contactlist.MetaContact;
import net.java.sip.communicator.service.protocol.OperationSetBasicInstantMessaging;
import net.java.sip.communicator.service.protocol.PresenceStatus;
import net.java.sip.communicator.service.protocol.ProtocolProviderService;
/**
* The chat window is the place, where users
@ -119,7 +120,7 @@ public void requestFocusInCurrentChat() {
* @return The ChatConversationPanel for the currently selected
* chat panel.
*/
public ChatConversationPanel getConversationPanel() {
public ChatConversationPanel getCurrentConversationPanel() {
return this.currentChatPanel.getConversationPanel();
}
@ -194,13 +195,10 @@ public void actionPerformed(ActionEvent e)
* adds it directly to the chat window.
*/
public void addChat(MetaContact contact,
PresenceStatus status){
PresenceStatus status,
ProtocolProviderService protocolProvider){
OperationSetBasicInstantMessaging contactIMOperationSet
= this.mainFrame.getProtocolIM
(contact.getDefaultContact().getProtocolProvider());
this.setCurrentChatPanel(new ChatPanel(this, contactIMOperationSet));
this.setCurrentChatPanel(new ChatPanel(this, protocolProvider));
this.currentChatPanel.addContactToChat(contact, status);
@ -219,17 +217,15 @@ public void addChat(MetaContact contact,
*
* @param contact The MetaContact added to the chat.
*/
public ChatPanel addChatTab(MetaContact contact, PresenceStatus status){
OperationSetBasicInstantMessaging contactIMOperationSet
= this.mainFrame.getProtocolIM
(contact.getDefaultContact().getProtocolProvider());
public ChatPanel addChatTab(MetaContact contact,
PresenceStatus status,
ProtocolProviderService protocolProvider){
ChatPanel chatPanel = null;
if(chatTabbedPane == null){
//Initialize the tabbed pane for the first time
chatPanel = new ChatPanel(this, contactIMOperationSet);
chatPanel = new ChatPanel(this, protocolProvider);
chatPanel.addContactToChat(contact, status);
@ -258,7 +254,7 @@ public void closeOperation(MouseEvent e){
if(chatTabbedPane.getTabCount() > 0){
//The tabbed pane contains already tabs.
chatPanel = new ChatPanel(this, contactIMOperationSet);
chatPanel = new ChatPanel(this, protocolProvider);
chatPanel.addContactToChat(contact, status);
@ -284,7 +280,7 @@ public void closeOperation(MouseEvent e){
(currentContactStatus)),
firstChatPanel);
chatPanel = new ChatPanel(this, contactIMOperationSet);
chatPanel = new ChatPanel(this, protocolProvider);
chatPanel.addContactToChat(contact, status);

Loading…
Cancel
Save