Open chat window by clicking the protocol icon behind contact name.

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

@ -17,6 +17,8 @@
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import javax.swing.BorderFactory;
@ -25,7 +27,9 @@
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;
import net.java.sip.communicator.impl.gui.main.contactlist.ContactListPanel.RunMessageWindow;
import net.java.sip.communicator.impl.gui.main.customcontrols.SIPCommButton;
import net.java.sip.communicator.impl.gui.utils.AntialiasingManager;
import net.java.sip.communicator.impl.gui.utils.Constants;
@ -58,8 +62,10 @@ public ContactListCellRenderer() {
super(new BorderLayout());
this.setBackground(Color.WHITE);
this.buttonsPanel.setOpaque(false);
this.buttonsPanel.setOpaque(false);
this.buttonsPanel.setName("buttonsPanel");
this.setOpaque(true);
this.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
@ -102,26 +108,36 @@ public Component getListCellRendererComponent(
//this.buttonsPanel.add(extendPanelButton);
Iterator i = contactItem.getContacts();
int buttonsPanelWidth = 0;
while(i.hasNext()){
Contact protocolContact = (Contact)i.next();
String protocolName
= protocolContact.getProtocolProvider().getProtocolName();
Image protocolStatusIcon = (Image)Constants.getProtocolStatusIcons
(protocolName).get(protocolContact.getPresenceStatus());
Image protocolStatusIcon
= (Image)Constants.getProtocolStatusIcons
(protocolName).get(protocolContact.getPresenceStatus());
ContactProtocolButton contactProtocolButton
= new ContactProtocolButton(protocolStatusIcon,
protocolStatusIcon);
contactProtocolButton.setProtocolProvider
(protocolContact.getProtocolProvider());
contactProtocolButton.setSize(protocolStatusIcon.getWidth(null),
protocolStatusIcon.getHeight(null));
SIPCommButton contactProtocolButton = new SIPCommButton(protocolStatusIcon,
protocolStatusIcon);
this.buttonsPanel.add(contactProtocolButton);
buttonsPanelWidth += contactProtocolButton.getWidth();
//toolTipText
//+= "<img src='"
//+ ImageLoader.getImagePath(protocolStatusIcon)
//+ "'></img>";
//+= "<img src='"
//+ ImageLoader.getImagePath(protocolStatusIcon)
//+ "'></img>";
}
this.add(buttonsPanel, BorderLayout.EAST);
toolTipText += "</html>";

@ -43,6 +43,7 @@
import net.java.sip.communicator.service.contactlist.MetaContact;
import net.java.sip.communicator.service.contactlist.MetaContactGroup;
import net.java.sip.communicator.service.contactlist.MetaContactListService;
import net.java.sip.communicator.service.protocol.Contact;
import net.java.sip.communicator.service.protocol.Message;
import net.java.sip.communicator.service.protocol.OperationSetTypingNotifications;
import net.java.sip.communicator.service.protocol.PresenceStatus;
@ -212,12 +213,29 @@ public void mousePressed(MouseEvent e) {
popupMenu.setVisible(true);
}
} else if (component instanceof JButton) {
} else if (component instanceof JButton) {
//Click on the info button opens the info popup panel
SwingUtilities.invokeLater
(new RunInfoWindow(selectedCellPoint,
contact));
}
} else if (component instanceof JPanel
&& component.getName().equals("buttonsPanel")){
JPanel panel = (JPanel)component;
int internalX = translatedX - (renderer.getWidth() - panel.getWidth() - 2);
int internalY = translatedY - (renderer.getHeight() - panel.getHeight());
Component c = panel.getComponentAt(4, 4);
if(c instanceof ContactProtocolButton){
SwingUtilities.invokeLater
(new RunMessageWindow(contact,
((ContactProtocolButton)c)
.getProtocolProvider()));
}
}
}
}
@ -233,16 +251,25 @@ public void mouseReleased(MouseEvent e) {
public class RunMessageWindow implements Runnable {
private MetaContact contactItem;
private ProtocolProviderService protocolProvider;
public RunMessageWindow(MetaContact contactItem) {
this.contactItem = contactItem;
this.protocolProvider
= contactItem.getDefaultContact().getProtocolProvider();
}
public RunMessageWindow(MetaContact contactItem,
ProtocolProviderService protocolProvider){
this.contactItem = contactItem;
this.protocolProvider = protocolProvider;
}
public void run() {
PresenceStatus contactStatus
= ((ContactListModel)contactList.getModel())
.getMetaContactStatus(this.contactItem);
if(!Constants.TABBED_CHAT_WINDOW){
//If in mode "open all messages in new window"
if (contactMsgWindows.containsKey(this.contactItem)) {
@ -266,7 +293,8 @@ public void run() {
contactMsgWindows.put(this.contactItem, msgWindow);
msgWindow.addChat(this.contactItem, contactStatus);
msgWindow.addChat(this.contactItem,
contactStatus, protocolProvider);
msgWindow.pack();
@ -299,7 +327,7 @@ public void windowClosing(WindowEvent e) {
// If there's no open tab for the given contact.
ChatPanel chatPanel = tabbedChatWindow.addChatTab(this.contactItem,
contactStatus);
contactStatus, protocolProvider);
tabbedChatWindow.setCurrentChatPanel(chatPanel);
@ -378,10 +406,14 @@ public void messageReceived(MessageReceivedEvent evt) {
MetaContact metaContact
= mainFrame.getContactList()
.findMetaContactByContact(evt.getSourceContact());
PresenceStatus contactStatus
= ((ContactListModel)this.contactList.getModel())
.getMetaContactStatus(metaContact);
ProtocolProviderService protocolProvider
= evt.getSourceContact().getProtocolProvider();
if(!Constants.TABBED_CHAT_WINDOW){
//If in mode "open all messages in new window"
if (contactMsgWindows.containsKey(metaContact)) {
@ -408,7 +440,8 @@ public void messageReceived(MessageReceivedEvent evt) {
contactMsgWindows.put(metaContact, msgWindow);
msgWindow.addChat(metaContact, contactStatus);
msgWindow.addChat(metaContact, contactStatus,
protocolProvider);
msgWindow.getCurrentChatPanel().getConversationPanel()
.processMessage(evt.getSourceContact().getDisplayName(),
@ -445,7 +478,8 @@ public void windowClosing(WindowEvent e) {
== null){
// If there's no open tab for the given contact.
chatPanel
= tabbedChatWindow.addChatTab(metaContact, contactStatus);
= tabbedChatWindow.addChatTab(metaContact, contactStatus,
protocolProvider);
chatPanel.getConversationPanel()
.processMessage(evt.getSourceContact().getDisplayName(),

@ -0,0 +1,23 @@
package net.java.sip.communicator.impl.gui.main.contactlist;
import java.awt.Image;
import net.java.sip.communicator.impl.gui.main.customcontrols.SIPCommButton;
import net.java.sip.communicator.service.protocol.ProtocolProviderService;
public class ContactProtocolButton extends SIPCommButton {
private ProtocolProviderService protocolProvider;
public ContactProtocolButton(Image bgImage, Image rolloverImage){
super(bgImage, rolloverImage);
}
public ProtocolProviderService getProtocolProvider() {
return protocolProvider;
}
public void setProtocolProvider(ProtocolProviderService protocolProvider) {
this.protocolProvider = protocolProvider;
}
}
Loading…
Cancel
Save