|
|
|
|
@ -8,6 +8,7 @@
|
|
|
|
|
package net.java.sip.communicator.impl.gui.main.contactlist;
|
|
|
|
|
|
|
|
|
|
import java.awt.Cursor;
|
|
|
|
|
import java.util.Enumeration;
|
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
|
|
|
|
import javax.swing.BorderFactory;
|
|
|
|
|
@ -19,17 +20,33 @@
|
|
|
|
|
import net.java.sip.communicator.impl.gui.main.ui.SIPCommTreeUI;
|
|
|
|
|
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.contactlist.event.MetaContactEvent;
|
|
|
|
|
import net.java.sip.communicator.service.contactlist.event.MetaContactGroupEvent;
|
|
|
|
|
import net.java.sip.communicator.service.contactlist.event.MetaContactListListener;
|
|
|
|
|
import net.java.sip.communicator.service.protocol.Contact;
|
|
|
|
|
|
|
|
|
|
public class ContactListTree extends JTree {
|
|
|
|
|
public class ContactListTree extends JTree
|
|
|
|
|
implements MetaContactListListener {
|
|
|
|
|
|
|
|
|
|
private ContactListTreeModel treeModel;
|
|
|
|
|
|
|
|
|
|
private ContactNode rootNode;
|
|
|
|
|
|
|
|
|
|
private MetaContactListService contactList;
|
|
|
|
|
|
|
|
|
|
private MetaContactGroup root;
|
|
|
|
|
|
|
|
|
|
public ContactListTree(ContactNode rootNode){
|
|
|
|
|
public ContactListTree(MetaContactListService contactList){
|
|
|
|
|
|
|
|
|
|
this.rootNode = rootNode;
|
|
|
|
|
this.contactList = contactList;
|
|
|
|
|
|
|
|
|
|
this.contactList.addContactListListener(this);
|
|
|
|
|
|
|
|
|
|
this.root = contactList.getRoot();
|
|
|
|
|
|
|
|
|
|
this.rootNode = new ContactNode(this.root);
|
|
|
|
|
|
|
|
|
|
this.treeModel = new ContactListTreeModel(rootNode);
|
|
|
|
|
|
|
|
|
|
this.setModel(this.treeModel);
|
|
|
|
|
@ -55,7 +72,7 @@ public ContactListTree(ContactNode rootNode){
|
|
|
|
|
|
|
|
|
|
((BasicTreeUI)this.getUI()).setRightChildIndent(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adds a child directly to the root node.
|
|
|
|
|
*
|
|
|
|
|
@ -138,4 +155,75 @@ public void addAllContacts(ContactNode groupNode, MetaContactGroup group){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void metaContactAdded(MetaContactEvent evt) {
|
|
|
|
|
|
|
|
|
|
this.addChild(this.rootNode, evt.getSourceContact(), true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void metaContactRemoved(MetaContactEvent evt) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void metaContactGroupAdded(MetaContactGroupEvent evt) {
|
|
|
|
|
|
|
|
|
|
MetaContactGroup contactGroup = evt.getSourceContactGroup();
|
|
|
|
|
|
|
|
|
|
ContactNode newGroupNode
|
|
|
|
|
= this.addChild(this.rootNode, contactGroup, true);
|
|
|
|
|
|
|
|
|
|
Iterator childContacts = contactGroup.getChildContacts();
|
|
|
|
|
while (childContacts.hasNext()){
|
|
|
|
|
|
|
|
|
|
MetaContact childContact
|
|
|
|
|
= (MetaContact)childContacts.next();
|
|
|
|
|
|
|
|
|
|
this.addChild(newGroupNode, childContact, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void metaContactGroupRemoved(MetaContactGroupEvent evt) {
|
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public MetaContactGroup getRoot() {
|
|
|
|
|
return root;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContactNode getRootNode() {
|
|
|
|
|
return rootNode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContactNode contains(Contact contact){
|
|
|
|
|
|
|
|
|
|
return this.contains(this.rootNode, contact);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ContactNode contains( ContactNode parentNode,
|
|
|
|
|
Contact contact){
|
|
|
|
|
|
|
|
|
|
Enumeration childNodes = parentNode.children();
|
|
|
|
|
|
|
|
|
|
while(childNodes.hasMoreElements()){
|
|
|
|
|
|
|
|
|
|
ContactNode node = (ContactNode)childNodes.nextElement();
|
|
|
|
|
|
|
|
|
|
if(node.getUserObject() instanceof MetaContact){
|
|
|
|
|
|
|
|
|
|
MetaContact currentContact = (MetaContact)node.getUserObject();
|
|
|
|
|
|
|
|
|
|
if(currentContact.getDefaultContact().getAlias()
|
|
|
|
|
.equals(contact.getAlias())){
|
|
|
|
|
|
|
|
|
|
return node;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(node.getUserObject() instanceof MetaContactGroup){
|
|
|
|
|
return this.contains(node, contact);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|