aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/gui/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/impl/gui/main')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/call/CallTransferHandler.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/call/ChooseCallAccountPopupMenu.java11
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java3
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/call/ReceivedCallDialog.java2
-rwxr-xr-xsrc/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/ChatTransferHandler.java1
-rwxr-xr-xsrc/net/java/sip/communicator/impl/gui/main/chat/ChatWritePanel.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/ContactPhotoPanel.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomMemberListPanel.java4
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/history/DatesPanel.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListUI.java4
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomTableUI.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java14
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ChooseUIContactDetailPopupMenu.java10
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListEvent.java96
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListFilter.java41
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListListener.java32
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListNode.java23
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java17
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListSourceFilter.java4
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTransferHandler.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java50
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeModel.java6
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactNode.java15
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultTreeContactList.java5
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQueryListener.java29
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/GroupNode.java37
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java11
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/MoveSubcontactMessageDialog.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java32
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/SimpleContactList.java (renamed from src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java)7
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java291
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIContact.java166
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetail.java222
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailAction.java25
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailImpl.java83
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactImpl.java56
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java (renamed from src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQuery.java)16
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroup.java100
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroupImpl.java23
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java78
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java73
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java9
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIGroup.java3
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java22
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/SourceUIContact.java21
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java7
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java1
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java3
54 files changed, 669 insertions, 1005 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java
index 0d107e7..1d3919f 100644
--- a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java
+++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java
@@ -24,7 +24,7 @@ import net.java.sip.communicator.util.swing.*;
* @author Yana Stamcheva
*/
public class AccountRegSummaryPage
- extends SCScrollPane
+ extends SIPCommScrollPane
implements WizardPage
{
private final Logger logger = Logger.getLogger(AccountRegSummaryPage.class);
diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallTransferHandler.java b/src/net/java/sip/communicator/impl/gui/main/call/CallTransferHandler.java
index df54503..5f3f0cd 100644
--- a/src/net/java/sip/communicator/impl/gui/main/call/CallTransferHandler.java
+++ b/src/net/java/sip/communicator/impl/gui/main/call/CallTransferHandler.java
@@ -15,6 +15,7 @@ import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/call/ChooseCallAccountPopupMenu.java b/src/net/java/sip/communicator/impl/gui/main/call/ChooseCallAccountPopupMenu.java
index a2ade87..d5019eb 100644
--- a/src/net/java/sip/communicator/impl/gui/main/call/ChooseCallAccountPopupMenu.java
+++ b/src/net/java/sip/communicator/impl/gui/main/call/ChooseCallAccountPopupMenu.java
@@ -147,8 +147,9 @@ public class ChooseCallAccountPopupMenu
for (Object o : telephonyObjects)
{
- if (o instanceof UIContactDetail)
- this.addTelephonyContactItem((UIContactDetail) o, opSetClass);
+ if (o instanceof UIContactDetailImpl)
+ this.addTelephonyContactItem(
+ (UIContactDetailImpl) o, opSetClass);
else if (o instanceof ChatTransport)
this.addTelephonyChatTransportItem((ChatTransport) o,
opSetClass);
@@ -225,7 +226,7 @@ public class ChooseCallAccountPopupMenu
* would be performed when an item is selected
*/
private void addTelephonyContactItem(
- final UIContactDetail telephonyContact,
+ final UIContactDetailImpl telephonyContact,
final Class<? extends OperationSet> opSetClass)
{
final ContactMenuItem contactItem
@@ -473,9 +474,9 @@ public class ChooseCallAccountPopupMenu
*/
private static final long serialVersionUID = 0L;
- private final UIContactDetail contact;
+ private final UIContactDetailImpl contact;
- public ContactMenuItem(UIContactDetail contact)
+ public ContactMenuItem(UIContactDetailImpl contact)
{
this.contact = contact;
diff --git a/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java
index 0add775..7242a22 100644
--- a/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/call/OneToOneCallPeerPanel.java
@@ -15,7 +15,6 @@ import javax.swing.*;
import javax.swing.text.*;
import net.java.sip.communicator.impl.gui.*;
-import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
@@ -503,7 +502,7 @@ public class OneToOneCallPeerPanel
{
if (image == null || image.length <= 0)
{
- TreeContactList.setSourceContactImage(
+ GuiActivator.getContactList().setSourceContactImage(
peerName, photoLabel, 100, 100);
}
else
diff --git a/src/net/java/sip/communicator/impl/gui/main/call/ReceivedCallDialog.java b/src/net/java/sip/communicator/impl/gui/main/call/ReceivedCallDialog.java
index e97c2f5..81807bc 100644
--- a/src/net/java/sip/communicator/impl/gui/main/call/ReceivedCallDialog.java
+++ b/src/net/java/sip/communicator/impl/gui/main/call/ReceivedCallDialog.java
@@ -129,7 +129,7 @@ public class ReceivedCallDialog
{
public void run()
{
- TreeContactList
+ GuiActivator.getContactList()
.setSourceContactImage( peer.getAddress(),
callLabel[0],
50, 50);
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
index ff6859a..fba0eee 100755
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java
@@ -47,7 +47,7 @@ import net.java.sip.communicator.util.swing.SwingWorker;
* @author Adam Netocny
*/
public class ChatConversationPanel
- extends SCScrollPane
+ extends SIPCommScrollPane
implements HyperlinkListener,
MouseListener,
ClipboardOwner,
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatTransferHandler.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatTransferHandler.java
index b49a2c4..5e36b20 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatTransferHandler.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatTransferHandler.java
@@ -19,6 +19,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.service.contactlist.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatWritePanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatWritePanel.java
index 855dd77..7cdb61f 100755
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatWritePanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatWritePanel.java
@@ -71,7 +71,7 @@ public class ChatWritePanel
private final ArrayList<ChatMenuListener> menuListeners
= new ArrayList<ChatMenuListener>();
- private final SCScrollPane scrollPane = new SCScrollPane();
+ private final SIPCommScrollPane scrollPane = new SIPCommScrollPane();
private ChatTransportSelectorBox transportSelectorBox;
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ContactPhotoPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ContactPhotoPanel.java
index 54c8ac6..1f5f1da 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/ContactPhotoPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/ContactPhotoPanel.java
@@ -17,6 +17,7 @@ import net.java.sip.communicator.impl.gui.main.chat.conference.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.*;
+import net.java.sip.communicator.util.swing.*;
/**
* The photo label corresponding to the current chat.
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomMemberListPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomMemberListPanel.java
index 25364e9..d3ef1b3 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomMemberListPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomMemberListPanel.java
@@ -11,11 +11,11 @@ import java.awt.event.*;
import javax.swing.*;
-import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.skin.*;
+import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatContactListPanel</tt> is the panel added on the right of the
@@ -99,7 +99,7 @@ public class ChatRoomMemberListPanel
}
- JScrollPane contactsScrollPane = new SCScrollPane();
+ JScrollPane contactsScrollPane = new SIPCommScrollPane();
contactsScrollPane.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
contactsScrollPane.setOpaque(false);
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/history/DatesPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/history/DatesPanel.java
index 45d71f2..1f1595e 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/history/DatesPanel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/history/DatesPanel.java
@@ -23,7 +23,7 @@ import net.java.sip.communicator.util.swing.*;
* @author Lubomir Marinov
*/
public class DatesPanel
- extends SCScrollPane
+ extends SIPCommScrollPane
implements ListSelectionListener
{
private final JList datesList = new JList();
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 a2fa7f2..14faa61 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
@@ -605,7 +605,7 @@ public class MainToolBar
}
UIContactDetail cd =
- new UIContactDetail(
+ new UIContactDetailImpl(
pnd.getNumber(),
pnd.getNumber() +
" (" + localizedType + ")",
diff --git a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListUI.java b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListUI.java
index 4ca0420..c9f4a9f 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListUI.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListUI.java
@@ -12,9 +12,9 @@ import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
-import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.chat.conference.*;
+import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatRoomsListPanel</tt> is the panel that contains the
@@ -24,7 +24,7 @@ import net.java.sip.communicator.impl.gui.main.chat.conference.*;
* @author Lubomir Marinov
*/
public class ChatRoomListUI
- extends SCScrollPane
+ extends SIPCommScrollPane
implements MouseListener,
ChatRoomListChangeListener,
AdHocChatRoomListChangeListener
diff --git a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomTableUI.java b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomTableUI.java
index 55f30df..fba6560 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomTableUI.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomTableUI.java
@@ -30,7 +30,7 @@ import net.java.sip.communicator.util.swing.*;
* @author Lyubomir Marinov
*/
public class ChatRoomTableUI
- extends SCScrollPane
+ extends SIPCommScrollPane
implements MouseListener
{
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
index 8ccf6aa..b688c21 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
@@ -9,9 +9,9 @@ package net.java.sip.communicator.impl.gui.main.contactlist;
import java.util.*;
import net.java.sip.communicator.impl.gui.*;
-import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.impl.gui.main.contactlist.notifsource.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
/**
* The <tt>CallHistoryFilter</tt> is a filter over the history contact sources.
@@ -36,11 +36,11 @@ public class CallHistoryFilter
if (notificationSource != null)
addMatching(notificationSource);
- Collection<ExternalContactSource> contactSources
- = TreeContactList.getContactSources();
+ Collection<UIContactSource> contactSources
+ = GuiActivator.getContactList().getContactSources();
// Then add Call history contact source.
- for (ExternalContactSource contactSource : contactSources)
+ for (UIContactSource contactSource : contactSources)
{
ContactSourceService sourceService
= contactSource.getContactSourceService();
@@ -54,8 +54,8 @@ public class CallHistoryFilter
filterQuery.addContactQuery(query);
// Add first available results.
- this.addMatching( query.getQueryResults(),
- contactSource);
+ addMatching(query.getQueryResults(),
+ contactSource);
// We know that this query should be finished here and we do not
// expect any further results from it.
@@ -109,7 +109,7 @@ public class CallHistoryFilter
* we're adding
*/
private void addMatching( List<SourceContact> sourceContacts,
- ExternalContactSource uiSource)
+ UIContactSource uiSource)
{
Iterator<SourceContact> contactsIter = sourceContacts.iterator();
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ChooseUIContactDetailPopupMenu.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ChooseUIContactDetailPopupMenu.java
index c1bbcd5..0568aa6 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ChooseUIContactDetailPopupMenu.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ChooseUIContactDetailPopupMenu.java
@@ -16,6 +16,7 @@ import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.utils.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
@@ -61,7 +62,8 @@ public class ChooseUIContactDetailPopupMenu
for (UIContactDetail detail : contactDetails)
{
- this.addContactDetailItem(detail, action);
+ if (detail instanceof UIContactDetailImpl)
+ this.addContactDetailItem((UIContactDetailImpl) detail, action);
}
}
@@ -91,7 +93,7 @@ public class ChooseUIContactDetailPopupMenu
* would be performed when an item is selected
*/
private void addContactDetailItem(
- final UIContactDetail contactDetail,
+ final UIContactDetailImpl contactDetail,
final UIContactDetailAction contactDetailAction)
{
final ContactMenuItem contactItem
@@ -168,9 +170,9 @@ public class ChooseUIContactDetailPopupMenu
*/
private static final long serialVersionUID = 0L;
- private final UIContactDetail contact;
+ private final UIContactDetailImpl contact;
- public ContactMenuItem(UIContactDetail contact)
+ public ContactMenuItem(UIContactDetailImpl contact)
{
this.contact = contact;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListEvent.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListEvent.java
deleted file mode 100644
index 8a8a9af..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListEvent.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-import java.util.*;
-
-/**
- * The <tt>ContactListEvent</tt> is triggered when a contact or a group is
- * clicked in the contact list.
- * @author Yana Stamcheva
- */
-public class ContactListEvent
- extends EventObject
-{
- private int eventID = -1;
-
- /**
- * Indicates that the ContactListEvent instance was triggered by
- * selecting a contact in the contact list.
- */
- public static final int CONTACT_CLICKED = 1;
-
- /**
- * Indicates that the ContactListEvent instance was triggered by selecting
- * a group in the contact list.
- */
- public static final int GROUP_CLICKED = 2;
-
- /**
- * Indicated the number of click accompanying the event
- */
- private int clickCount;
-
- /**
- * Creates a new ContactListEvent according to the specified parameters.
- * @param source the MetaContact which was selected
- * @param eventID one of the XXX_SELECTED static fields indicating the
- * nature of the event.
- * @param clickCount the number of clicks that was produced when clicking
- * over the contact list
- */
- public ContactListEvent(Object source, int eventID, int clickCount)
- {
- super(source);
-
- this.eventID = eventID;
- this.clickCount = clickCount;
- }
-
- /**
- * Returns an event id specifying whether the type of this event
- * (CONTACT_SELECTED or PROTOCOL_CONTACT_SELECTED)
- * @return one of the XXX_SELECTED int fields of this class.
- */
- public int getEventID()
- {
- return eventID;
- }
-
- /**
- * Returns the <tt>UIContactDescriptor</tt> for which this event occured.
- * @return the </tt>UIContactDescriptor</tt> for which this event occured
- */
- public UIContact getSourceContact()
- {
- if(getSource() instanceof UIContact)
- return (UIContact) getSource();
-
- return null;
- }
-
- /**
- * Returns the <tt>UIGroupDescriptor</tt> for which this event occured.
- * @return the <tt>UIGroupDescriptor</tt> for which this event occured
- */
- public UIGroup getSourceGroup()
- {
- if(getSource() instanceof UIGroup)
- return (UIGroup) getSource();
-
- return null;
- }
-
- /**
- * Returns the number of click of this event.
- * @return the number of click of this event.
- */
- public int getClickCount()
- {
- return clickCount;
- }
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListFilter.java
deleted file mode 100644
index 901be8f..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListFilter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-/**
- * The <tt>ContactListFilter</tt> is an interface meant to be implemented by
- * modules interested in filtering the contact list. An implementation of this
- * interface should be able to answer if an <tt>UIContact</tt> or an
- * <tt>UIGroup</tt> is matching the corresponding filter.
- *
- * @author Yana Stamcheva
- */
-public interface ContactListFilter
-{
- /**
- * Indicates if the given <tt>uiGroup</tt> is matching the current filter.
- * @param uiContact the <tt>UIContact</tt> to check
- * @return <tt>true</tt> to indicate that the given <tt>uiContact</tt>
- * matches this filter, <tt>false</tt> - otherwise
- */
- public boolean isMatching(UIContact uiContact);
-
- /**
- * Indicates if the given <tt>uiGroup</tt> is matching the current filter.
- * @param uiGroup the <tt>UIGroup</tt> to check
- * @return <tt>true</tt> to indicate that the given <tt>uiGroup</tt>
- * matches this filter, <tt>false</tt> - otherwise
- */
- public boolean isMatching(UIGroup uiGroup);
-
- /**
- * Applies this filter to any interested sources
- * @param filterQuery the <tt>FilterQuery</tt> that tracks the results of
- * this filtering
- */
- public void applyFilter(FilterQuery filterQuery);
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListListener.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListListener.java
deleted file mode 100644
index e6f31e0..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-import java.util.*;
-
-/**
- * Listens for events coming from mouse events over the contact list. For
- * example a contact been clicked or a group been selected.
- *
- * @author Yana Stamcheva
- */
-public interface ContactListListener extends EventListener
-{
- /**
- * Indicates that a group has been selected.
- * @param evt the <tt>ContactListEvent</tt> that has been triggered from
- * the user selection
- */
- public void groupClicked(ContactListEvent evt);
-
- /**
- * Indicates that a contact has been clicked.
- * @param evt the <tt>ContactListEvent</tt> that has been triggered from
- * the user click
- */
- public void contactClicked(ContactListEvent evt);
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListNode.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListNode.java
deleted file mode 100644
index eb12943..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListNode.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-/**
- * The <tt>ContactListNode</tt> represents a node in the contact list data
- * model. An implementation of this interface should be able to determine the
- * index of this node in its contact source.
- *
- * @author Yana Stamcheva
- */
-public interface ContactListNode
-{
- /**
- * Returns the index of this node in the <tt>MetaContactListService</tt>.
- * @return the index of this node in the <tt>MetaContactListService</tt>
- */
- public int getSourceIndex();
-}
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 9243cb9..1707f6b 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java
@@ -14,7 +14,6 @@ import javax.swing.*;
import javax.swing.Timer;
import net.java.sip.communicator.impl.gui.*;
-import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.impl.gui.event.*;
import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
@@ -22,6 +21,7 @@ import net.java.sip.communicator.service.contacteventhandler.*;
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.gui.event.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
import net.java.sip.communicator.util.*;
@@ -37,7 +37,7 @@ import org.osgi.framework.*;
* @author Yana Stamcheva
*/
public class ContactListPane
- extends SCScrollPane
+ extends SIPCommScrollPane
implements MessageListener,
TypingNotificationsListener,
FileTransferListener,
@@ -212,8 +212,17 @@ public class ContactListPane
* Implements the ContactListListener.groupSelected method.
* @param evt the <tt>ContactListEvent</tt> that notified us
*/
- public void groupClicked(ContactListEvent evt)
- {}
+ public void groupClicked(ContactListEvent evt) {}
+
+ /**
+ * We're not interested in group selection events here.
+ */
+ public void groupSelected(ContactListEvent evt) {}
+
+ /**
+ * We're not interested in contact selection events here.
+ */
+ public void contactSelected(ContactListEvent evt) {}
/**
* When a message is received determines whether to open a new chat window
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListSourceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListSourceFilter.java
index 0f71721..aecad64 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListSourceFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListSourceFilter.java
@@ -10,6 +10,7 @@ import java.util.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
/**
* The <tt>ContactListSourceFilter</tt> is a <tt>ContactListFilter</tt> that
@@ -17,7 +18,8 @@ import net.java.sip.communicator.service.contactsource.*;
*
* @author Yana Stamcheva
*/
-public interface ContactListSourceFilter extends ContactListFilter
+public interface ContactListSourceFilter
+ extends ContactListFilter
{
/**
* Applies this filter to the given <tt>contactSource</tt>.
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTransferHandler.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTransferHandler.java
index e763466..21c4859 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTransferHandler.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTransferHandler.java
@@ -17,6 +17,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.service.contactlist.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java
index c6b6fe2..951cc1c 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java
@@ -22,6 +22,7 @@ import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail;
@@ -182,7 +183,7 @@ public class ContactListTreeCellRenderer
/**
* The icon showing the contact status.
*/
- protected ImageIcon statusIcon = new ImageIcon();
+ protected Icon statusIcon = new ImageIcon();
/**
* Indicates if the current list cell is selected.
@@ -372,7 +373,7 @@ public class ContactListTreeCellRenderer
// Make appropriate adjustments for contact nodes and group nodes.
if (value instanceof ContactNode)
{
- UIContact contact
+ UIContactImpl contact
= ((ContactNode) value).getContactDescriptor();
String displayName = contact.getDisplayName();
@@ -387,10 +388,13 @@ public class ContactListTreeCellRenderer
this.nameLabel.setText(displayName);
- if(statusIcon != null && contactList.isContactActive(contact))
- statusIcon.setImage(msgReceivedImage);
+ if(statusIcon != null
+ && contactList.isContactActive(contact)
+ && statusIcon instanceof ImageIcon)
+ ((ImageIcon) statusIcon).setImage(msgReceivedImage);
else
statusIcon = contact.getStatusIcon();
+
this.statusLabel.setIcon(statusIcon);
this.nameLabel.setFont(this.getFont().deriveFont(Font.PLAIN));
@@ -400,7 +404,7 @@ public class ContactListTreeCellRenderer
// Initializes status message components if the given meta contact
// contains a status message.
- this.initDisplayDetails(contact);
+ this.initDisplayDetails(contact.getDisplayDetails());
this.initButtonsPanel(contact);
@@ -417,7 +421,7 @@ public class ContactListTreeCellRenderer
avatarHeight = AVATAR_HEIGHT;
}
- ImageIcon avatar
+ Icon avatar
= contact.getAvatar(isSelected, avatarWidth, avatarHeight);
if (avatar != null)
@@ -441,7 +445,7 @@ public class ContactListTreeCellRenderer
}
else if (value instanceof GroupNode)
{
- UIGroup groupItem
+ UIGroupImpl groupItem
= ((GroupNode) value).getGroupDescriptor();
this.nameLabel.setText(groupItem.getDisplayName());
@@ -485,6 +489,7 @@ public class ContactListTreeCellRenderer
+ "/" + groupItem.countChildContacts());
}
+ this.initDisplayDetails(groupItem.getDisplayDetails());
this.setToolTipText(groupItem.getDescriptor().toString());
}
@@ -579,21 +584,36 @@ public class ContactListTreeCellRenderer
public Dimension getPreferredSize()
{
Dimension preferredSize = new Dimension();
+ int preferredHeight;
if (treeNode instanceof ContactNode)
{
UIContact contact
= ((ContactNode) treeNode).getContactDescriptor();
- if (contact instanceof ShowMoreContact)
+ preferredHeight = contact.getPreferredHeight();
+
+ if (preferredHeight > 0)
+ preferredSize.height = preferredHeight;
+ else if (contact instanceof ShowMoreContact)
preferredSize.height = 18;
else if (isSelected)
preferredSize.height = 70;
else
preferredSize.height = 30;
}
- else
- preferredSize.height = 18;
+ else if (treeNode instanceof GroupNode)
+ {
+ UIGroup group
+ = ((GroupNode) treeNode).getGroupDescriptor();
+
+ preferredHeight = group.getPreferredHeight();
+
+ if (preferredHeight > 0)
+ preferredSize.height = preferredHeight;
+ else
+ preferredSize.height = 18;
+ }
return preferredSize;
}
@@ -646,16 +666,13 @@ public class ContactListTreeCellRenderer
/**
* Initializes the display details component for the given
* <tt>UIContact</tt>.
- * @param contact the <tt>UIContact</tt>, for which we initialize the
- * details component
+ * @param details the display details to show
*/
- private void initDisplayDetails(UIContact contact)
+ private void initDisplayDetails(String displayDetails)
{
remove(displayDetailsLabel);
displayDetailsLabel.setText("");
- String displayDetails = contact.getDisplayDetails();
-
if (displayDetails != null && displayDetails.length() > 0)
{
// Replace all occurrences of new line with slash.
@@ -829,6 +846,7 @@ public class ContactListTreeCellRenderer
this.add(callButton, constraints);
callButton.setBounds(x, y, 28, 28);
+
callButton.setEnabled(telephonyContact != null || hasPhone);
x += callButton.getWidth();
@@ -1415,7 +1433,7 @@ public class ContactListTreeCellRenderer
phones.add(pnd.getNumber());
UIContactDetail cd =
- new UIContactDetail(
+ new UIContactDetailImpl(
pnd.getNumber(),
pnd.getNumber() +
" (" + localizedType + ")",
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeModel.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeModel.java
index 579464c..41d6390 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeModel.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeModel.java
@@ -11,6 +11,8 @@ import java.lang.reflect.*;
import javax.swing.*;
import javax.swing.tree.*;
+import net.java.sip.communicator.service.gui.*;
+
/**
* The data model of the contact list.
*
@@ -40,7 +42,7 @@ public class ContactListTreeModel
this.parentTree = tree;
- RootUIGroup rootDescriptor = new RootUIGroup();
+ UIGroupImpl rootDescriptor = new RootUIGroup();
rootGroupNode = new GroupNode(this, rootDescriptor);
rootDescriptor.setGroupNode(rootGroupNode);
@@ -157,7 +159,7 @@ public class ContactListTreeModel
* The <tt>RootUIGroup</tt> is the root group in this contact list model.
*/
private static class RootUIGroup
- implements UIGroup
+ extends UIGroupImpl
{
/**
* The corresponding group node.
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactNode.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactNode.java
index 7fc66d4..c756518 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactNode.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactNode.java
@@ -8,6 +8,8 @@ package net.java.sip.communicator.impl.gui.main.contactlist;
import javax.swing.tree.*;
+import net.java.sip.communicator.service.gui.*;
+
/**
* The <tt>ContactNode</tt> is a <tt>ContactListNode</tt> corresponding to a
* given <tt>UIContact</tt>.
@@ -31,21 +33,22 @@ public class ContactNode
/**
* Creates a <tt>ContactNode</tt> by specifying the corresponding
* <tt>contact</tt>.
- * @param contact the <tt>UIContact</tt> corresponding to this node
+ * @param contact the <tt>UIContactImpl</tt> corresponding to this node
*/
- public ContactNode(UIContact contact)
+ public ContactNode(UIContactImpl contact)
{
super(contact);
this.contact = contact;
}
/**
- * Returns the corresponding <tt>UIContact</tt>.
- * @return the corresponding <tt>UIContact</tt>
+ * Returns the corresponding <tt>UIContactImpl</tt>.
+ *
+ * @return the corresponding <tt>UIContactImpl</tt>
*/
- public UIContact getContactDescriptor()
+ public UIContactImpl getContactDescriptor()
{
- return (UIContact) getUserObject();
+ return (UIContactImpl) getUserObject();
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java
index 3ff9626..7113a6a 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java
@@ -16,10 +16,10 @@ import javax.swing.text.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.chat.conference.*;
-import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.skin.*;
+import net.java.sip.communicator.util.swing.*;
/**
* DeafultContactlist used to display <code>JList</code>s with contacts.
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultTreeContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultTreeContactList.java
index b795c48..aebf844 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultTreeContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultTreeContactList.java
@@ -18,9 +18,10 @@ import net.java.sip.communicator.impl.gui.lookandfeel.*;
import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
-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.util.skin.*;
+import net.java.sip.communicator.util.swing.*;
/**
* DeafultContactlist used to display <code>JList</code>s with contacts.
@@ -47,7 +48,7 @@ public class DefaultTreeContactList
static
{
UIManager.getDefaults().put(uiClassID,
- SIPCommTreeUI.class.getName());
+ ExtendedTreeUI.class.getName());
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQueryListener.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQueryListener.java
deleted file mode 100644
index cd4eaa3..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQueryListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-/**
- * The <tt>FilterQueryListener</tt> is notified when a filter query finishes.
- *
- * @author Yana Stamcheva
- */
-public interface FilterQueryListener
-{
- /**
- * Indicates that the given <tt>query</tt> has finished with success, i.e.
- * the filter has returned results.
- * @param query the <tt>FilterQuery</tt>, where this listener is registered
- */
- public void filterQuerySucceeded(FilterQuery query);
-
- /**
- * Indicates that the given <tt>query</tt> has finished with failure, i.e.
- * no results for the filter were found.
- * @param query the <tt>FilterQuery</tt>, where this listener is registered
- */
- public void filterQueryFailed(FilterQuery query);
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/GroupNode.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/GroupNode.java
index 11753db..2d053ae 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/GroupNode.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/GroupNode.java
@@ -12,8 +12,9 @@ import javax.swing.*;
import javax.swing.plaf.*;
import javax.swing.tree.*;
-import net.java.sip.communicator.impl.gui.lookandfeel.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.util.*;
+import net.java.sip.communicator.util.swing.plaf.*;
/**
* The <tt>GroupNode</tt> is a <tt>ContactListNode</tt> corresponding to a
@@ -39,7 +40,7 @@ public class GroupNode
/**
* The corresponding <tt>UIGroup</tt>.
*/
- private final UIGroup group;
+ private final UIGroupImpl group;
/**
* The <tt>ContactListNode</tt> <tt>Comparator</tt> used to sort the list of
@@ -62,10 +63,10 @@ public class GroupNode
* and the corresponding <tt>uiGroup</tt>.
*
* @param treeModel the parent tree model containing this group
- * @param uiGroup the corresponding <tt>UIGroup</tt>
+ * @param uiGroup the corresponding <tt>UIGroupImpl</tt>
*/
public GroupNode( ContactListTreeModel treeModel,
- UIGroup uiGroup)
+ UIGroupImpl uiGroup)
{
super(uiGroup, true);
@@ -78,10 +79,10 @@ public class GroupNode
/**
* Creates a <tt>ContactNode</tt> for the given <tt>uiContact</tt>
* and adds it to this group.
- * @param uiContact the <tt>UIContact</tt> to add
+ * @param uiContact the <tt>UIContactImpl</tt> to add
* @return the created <tt>ContactNode</tt>
*/
- public ContactNode addContact(UIContact uiContact)
+ public ContactNode addContact(UIContactImpl uiContact)
{
if (logger.isDebugEnabled())
logger.debug("Group node add contact: "
@@ -107,11 +108,11 @@ public class GroupNode
/**
* Creates a <tt>ContactNode</tt> for the given <tt>uiContact</tt>,
* adds it to this group and performs a sort at the end.
- * @param uiContact the <tt>UIContact</tt> to add
+ * @param uiContact the <tt>UIContactImpl</tt> to add
* @return the created <tt>ContactNode</tt>
*/
@SuppressWarnings("unchecked")
- public ContactNode sortedAddContact(UIContact uiContact)
+ public ContactNode sortedAddContact(UIContactImpl uiContact)
{
if (logger.isDebugEnabled())
logger.debug("Group node sorted add contact: "
@@ -136,9 +137,9 @@ public class GroupNode
/**
* Removes the node corresponding to the given <tt>uiContact</tt> from this
* group.
- * @param uiContact the <tt>UIContact</tt> to remove
+ * @param uiContact the <tt>UIContactImpl</tt> to remove
*/
- public void removeContact(UIContact uiContact)
+ public void removeContact(UIContactImpl uiContact)
{
final ContactNode contactNode = uiContact.getContactNode();
@@ -164,10 +165,10 @@ public class GroupNode
/**
* Creates a <tt>GroupNode</tt> for the given <tt>uiGroup</tt> and
* adds it to this group.
- * @param uiGroup the <tt>UIGroup</tt> to add
+ * @param uiGroup the <tt>UIGroupImpl</tt> to add
* @return the created <tt>GroupNode</tt>
*/
- public GroupNode addContactGroup(UIGroup uiGroup)
+ public GroupNode addContactGroup(UIGroupImpl uiGroup)
{
int selectedIndex = getLeadSelectionRow();
@@ -189,9 +190,9 @@ public class GroupNode
/**
* Removes the node corresponding to the given <tt>uiGroup</tt> from this
* group node.
- * @param uiGroup the <tt>UIGroup</tt> to remove
+ * @param uiGroup the <tt>UIGroupImpl</tt> to remove
*/
- public void removeContactGroup(UIGroup uiGroup)
+ public void removeContactGroup(UIGroupImpl uiGroup)
{
GroupNode groupNode = uiGroup.getGroupNode();
@@ -216,11 +217,11 @@ public class GroupNode
/**
* Creates a <tt>GroupNode</tt> for the given <tt>uiGroup</tt>,
* adds it to this group node and performs a sort at the end.
- * @param uiGroup the <tt>UIGroup</tt> to add
+ * @param uiGroup the <tt>UIGroupImpl</tt> to add
* @return the created <tt>GroupNode</tt>
*/
@SuppressWarnings("unchecked")
- public GroupNode sortedAddContactGroup(UIGroup uiGroup)
+ public GroupNode sortedAddContactGroup(UIGroupImpl uiGroup)
{
GroupNode groupNode = new GroupNode(treeModel, uiGroup);
@@ -243,9 +244,9 @@ public class GroupNode
* Returns the <tt>UIGroup</tt> corresponding to this <tt>GroupNode</tt>.
* @return the <tt>UIGroup</tt> corresponding to this <tt>GroupNode</tt>
*/
- public UIGroup getGroupDescriptor()
+ public UIGroupImpl getGroupDescriptor()
{
- return (UIGroup) getUserObject();
+ return (UIGroupImpl) getUserObject();
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java
index 7a21c08..9a543cb 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java
@@ -26,6 +26,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.gui.event.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.SubscriptionStatus;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail;
@@ -1198,6 +1199,16 @@ public class MetaContactRightButtonMenu
}
/**
+ * We're not interested in group selection events here.
+ */
+ public void groupSelected(ContactListEvent evt) {}
+
+ /**
+ * We're not interested in contact selection events here.
+ */
+ public void contactSelected(ContactListEvent evt) {}
+
+ /**
* Moves the previously chosen sub-contact in the given toMetaContact.
*
* @param toMetaContact the MetaContact, where to move the previously
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/MoveSubcontactMessageDialog.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/MoveSubcontactMessageDialog.java
index 787efb9..2d95a87 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/MoveSubcontactMessageDialog.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/MoveSubcontactMessageDialog.java
@@ -15,6 +15,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.utils.*;
+import net.java.sip.communicator.service.gui.event.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
index 1393569..3bf255e 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
@@ -12,6 +12,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
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.protocol.*;
import net.java.sip.communicator.util.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java
index 931eed7..c97ad48 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchField.java
@@ -13,6 +13,8 @@ import javax.swing.event.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.*;
+import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.gui.event.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
import net.java.sip.communicator.util.swing.event.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
index aa36661..202ae0c 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
@@ -12,6 +12,7 @@ import java.util.regex.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
/**
* The <tt>SearchFilter</tt> is a <tt>ContactListFilter</tt> that filters the
@@ -50,7 +51,7 @@ public class SearchFilter
/**
* The list of external contact sources to search in.
*/
- private Collection<ExternalContactSource> contactSources;
+ private Collection<UIContactSource> contactSources;
/**
* The type of the search source. One of the above defined DEFAUT_SOURCE or
@@ -88,13 +89,14 @@ public class SearchFilter
if (filterQuery.isCanceled())
return;
- Iterator<ExternalContactSource> filterSources
+ Iterator<UIContactSource> filterSources
= getContactSources().iterator();
// Then we apply the filter on all its contact sources.
while (filterSources.hasNext())
{
- final ExternalContactSource filterSource = filterSources.next();
+ final UIContactSource filterSource
+ = filterSources.next();
// If we have stopped filtering in the mean time we return here.
if (filterQuery.isCanceled())
@@ -115,7 +117,7 @@ public class SearchFilter
* filter to
* @return the <tt>ContactQuery</tt> that tracks this filter
*/
- public ContactQuery applyFilter(ExternalContactSource contactSource)
+ public ContactQuery applyFilter(UIContactSource contactSource)
{
ContactSourceService sourceService
= contactSource.getContactSourceService();
@@ -236,8 +238,9 @@ public class SearchFilter
{
ContactSourceService contactSource
= sourceContact.getContactSource();
- ExternalContactSource sourceUI
- = TreeContactList.getContactSource(contactSource);
+
+ UIContactSource sourceUI
+ = GuiActivator.getContactList().getContactSource(contactSource);
if (sourceUI != null
// ExtendedContactSourceService has already matched the
@@ -252,7 +255,7 @@ public class SearchFilter
true);
}
else
- ExternalContactSource.removeUIContact(sourceContact);
+ sourceUI.removeUIContact(sourceContact);
}
/**
@@ -266,14 +269,15 @@ public class SearchFilter
switch(searchSourceType)
{
case DEFAULT_SOURCE:
- contactSources = TreeContactList.getContactSources();
+ contactSources
+ = GuiActivator.getContactList().getContactSources();
break;
case HISTORY_SOURCE:
{
- Collection<ExternalContactSource> historySources
- = new LinkedList<ExternalContactSource>();
- ExternalContactSource historySource
- = TreeContactList.getContactSource(
+ Collection<UIContactSource> historySources
+ = new LinkedList<UIContactSource>();
+ UIContactSource historySource
+ = GuiActivator.getContactList().getContactSource(
ContactSourceService.CALL_HISTORY);
historySources.add(historySource);
@@ -289,10 +293,10 @@ public class SearchFilter
* @return the list of <tt>ExternalContactSource</tt> this filter searches
* in
*/
- public Collection<ExternalContactSource> getContactSources()
+ public Collection<UIContactSource> getContactSources()
{
if (contactSources == null)
- contactSources = TreeContactList.getContactSources();
+ contactSources = GuiActivator.getContactList().getContactSources();
return contactSources;
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SimpleContactList.java
index ae2a392..15eeb86 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SimpleContactList.java
@@ -19,6 +19,7 @@ import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.contactlist.event.*;
+import net.java.sip.communicator.service.gui.event.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.systray.*;
import net.java.sip.communicator.util.*;
@@ -32,7 +33,7 @@ import net.java.sip.communicator.util.*;
* @author Yana Stamcheva
* @author Lubomir Marinov
*/
-public class ContactList
+public class SimpleContactList
extends DefaultContactList
implements MetaContactListListener,
MouseListener
@@ -48,7 +49,7 @@ public class ContactList
private static final String MODIFY_OPERATION = "ModifyOperation";
- private final Logger logger = Logger.getLogger(ContactList.class);
+ private final Logger logger = Logger.getLogger(SimpleContactList.class);
private final MetaContactListService contactListService;
@@ -91,7 +92,7 @@ public class ContactList
*
* @param mainFrame The main application window.
*/
- public ContactList(MainFrame mainFrame)
+ public SimpleContactList(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
index e11ad77..545955c 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
@@ -23,6 +23,8 @@ import net.java.sip.communicator.impl.gui.main.contactlist.notifsource.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.gui.event.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.Logger;
@@ -38,11 +40,13 @@ import org.osgi.framework.*;
*/
public class TreeContactList
extends DefaultTreeContactList
- implements ContactQueryListener,
+ implements ContactList,
+ ContactQueryListener,
MetaContactQueryListener,
MouseListener,
MouseMotionListener,
- TreeExpansionListener
+ TreeExpansionListener,
+ TreeSelectionListener
{
/**
* Serial version UID.
@@ -63,7 +67,7 @@ public class TreeContactList
/**
* The right button menu.
*/
- private JPopupMenu rightButtonMenu;
+ private Component rightButtonMenu;
/**
* A list of all contacts that are currently "active". An "active" contact
@@ -107,7 +111,7 @@ public class TreeContactList
/**
* The current filter.
*/
- private ContactListFilter currentFilter;
+ private ContactListFilter currentFilter = defaultFilter;
/**
* Indicates if the click on a group node has been already consumed. This
@@ -120,12 +124,12 @@ public class TreeContactList
*/
private MouseListener[] originalMouseListeners;
- private static final Collection<ExternalContactSource> contactSources
- = new LinkedList<ExternalContactSource>();
+ private final Collection<UIContactSource>
+ contactSources = new LinkedList<UIContactSource>();
private static NotificationContactSource notificationSource;
- private FilterQuery currentFilterQuery;
+ private UIFilterQuery currentFilterQuery;
private FilterThread filterThread;
@@ -148,6 +152,7 @@ public class TreeContactList
this.addMouseListener(this);
this.addMouseMotionListener(this);
this.addTreeExpansionListener(this);
+ this.addTreeSelectionListener(this);
GuiActivator.getContactListService()
.addMetaContactListListener(mclSource);
@@ -176,8 +181,7 @@ public class TreeContactList
ContactSourceService contactSource
= sourceContact.getContactSource();
- ExternalContactSource sourceUI
- = TreeContactList.getContactSource(contactSource);
+ UIContactSource sourceUI = getContactSource(contactSource);
if (sourceUI == null)
return;
@@ -196,7 +200,7 @@ public class TreeContactList
}
else
{
- ExternalContactSource.removeUIContact(sourceContact);
+ sourceUI.removeUIContact(sourceContact);
uiContact = null;
}
}
@@ -213,14 +217,13 @@ public class TreeContactList
ContactSourceService contactSource
= sourceContact.getContactSource();
- ExternalContactSource sourceUI
- = TreeContactList.getContactSource(contactSource);
+ UIContactSource sourceUI = getContactSource(contactSource);
if (sourceUI == null)
return;
UIContact uiContact
- = ExternalContactSource.getUIContact(sourceContact);
+ = sourceUI.getUIContact(sourceContact);
if(uiContact == null)
return;
@@ -235,6 +238,35 @@ public class TreeContactList
}
/**
+ * Indicates that a contact has been updated after a search.
+ * @param event the <tt>ContactQueryEvent</tt> containing information
+ * about the updated <tt>SourceContact</tt>
+ */
+ public void contactChanged(ContactChangedEvent event)
+ {
+ final SourceContact sourceContact = event.getContact();
+
+ ContactSourceService contactSource
+ = sourceContact.getContactSource();
+
+ UIContactSource sourceUI = getContactSource(contactSource);
+
+ if (sourceUI == null)
+ return;
+
+ UIContact uiContact
+ = sourceUI.getUIContact(sourceContact);
+
+ if(uiContact == null || !(uiContact instanceof UIContactImpl))
+ return;
+
+ ContactNode contactNode = ((UIContactImpl) uiContact).getContactNode();
+
+ if (contactNode != null)
+ nodeChanged(contactNode);
+ }
+
+ /**
* Indicates that a <tt>MetaContact</tt> has been received for a search in
* the <tt>MetaContactListService</tt>.
* @param event the received <tt>MetaContactQueryEvent</tt>
@@ -355,7 +387,7 @@ public class TreeContactList
*/
public void setActiveContact(MetaContact metaContact, boolean isActive)
{
- UIContact uiContact
+ UIContactImpl uiContact
= MetaContactListSource.getUIContact(metaContact);
if (uiContact == null)
@@ -389,7 +421,7 @@ public class TreeContactList
* @return <tt>true</tt> if the given <tt>metaContact</tt> has been
* previously set to active, otherwise returns <tt>false</tt>
*/
- public boolean isContactActive(UIContact contact)
+ public boolean isContactActive(UIContactImpl contact)
{
ContactNode contactNode = contact.getContactNode();
@@ -423,30 +455,40 @@ public class TreeContactList
return;
}
- GroupNode groupNode;
+ GroupNode groupNode = null;
if (group == null)
groupNode = treeModel.getRoot();
- else
+ else if (group instanceof UIGroupImpl)
{
- groupNode = group.getGroupNode();
+ UIGroupImpl contactImpl = (UIGroupImpl) group;
+
+ groupNode = contactImpl.getGroupNode();
if (groupNode == null)
{
GroupNode parentNode = treeModel.getRoot();
if (isGroupSorted)
- groupNode = parentNode.sortedAddContactGroup(group);
+ groupNode = parentNode.sortedAddContactGroup(contactImpl);
else
- groupNode = parentNode.addContactGroup(group);
+ groupNode = parentNode.addContactGroup(contactImpl);
}
}
+ if (groupNode == null)
+ return;
+
contact.setParentGroup(groupNode.getGroupDescriptor());
+ if (!(contact instanceof UIContactImpl))
+ return;
+
+ UIContactImpl contactImpl = (UIContactImpl) contact;
+
if (isContactSorted)
- groupNode.sortedAddContact(contact);
+ groupNode.sortedAddContact(contactImpl);
else
- groupNode.addContact(contact);
+ groupNode.addContact(contactImpl);
if ((!currentFilter.equals(presenceFilter)
|| !groupNode.isCollapsed()))
@@ -526,7 +568,8 @@ public class TreeContactList
* @param contact the <tt>UIContact</tt> to remove
* @param removeEmptyGroup whether we should delete the group if is empty
*/
- public void removeContact(final UIContact contact, final boolean removeEmptyGroup)
+ public void removeContact( final UIContact contact,
+ final boolean removeEmptyGroup)
{
if (!SwingUtilities.isEventDispatchThread())
{
@@ -540,7 +583,10 @@ public class TreeContactList
return;
}
- UIGroup parentGroup = contact.getParentGroup();
+ if (!(contact instanceof UIContactImpl))
+ return;
+
+ UIGroupImpl parentGroup = (UIGroupImpl) contact.getParentGroup();
if (parentGroup == null)
return;
@@ -551,7 +597,7 @@ public class TreeContactList
if (parentGroupNode == null)
return;
- parentGroupNode.removeContact(contact);
+ parentGroupNode.removeContact((UIContactImpl) contact);
// If the parent group is empty remove it.
if (removeEmptyGroup && parentGroupNode.getChildCount() == 0)
@@ -593,7 +639,10 @@ public class TreeContactList
return;
}
- treeModel.nodeChanged(contact.getContactNode());
+ if (!(contact instanceof UIContactImpl))
+ return;
+
+ treeModel.nodeChanged(((UIContactImpl) contact).getContactNode());
}
/**
@@ -616,16 +665,21 @@ public class TreeContactList
return;
}
- GroupNode groupNode = group.getGroupNode();
-
+ if (!(group instanceof UIGroupImpl))
+ return;
+
+ UIGroupImpl groupImpl = (UIGroupImpl) group;
+
+ GroupNode groupNode = groupImpl.getGroupNode();
+
if(groupNode == null)
{
GroupNode parentNode = treeModel.getRoot();
if (isSorted)
- parentNode.sortedAddContactGroup(group);
+ parentNode.sortedAddContactGroup(groupImpl);
else
- parentNode.addContactGroup(group);
+ parentNode.addContactGroup(groupImpl);
}
expandGroup(treeModel.getRoot());
@@ -649,7 +703,10 @@ public class TreeContactList
return;
}
- UIGroup parentGroup = group.getParentGroup();
+ if (!(group instanceof UIGroupImpl))
+ return;
+
+ UIGroupImpl parentGroup = (UIGroupImpl) group.getParentGroup();
GroupNode parentGroupNode;
@@ -667,7 +724,7 @@ public class TreeContactList
if (parentGroupNode == null)
return;
- parentGroupNode.removeContactGroup(group);
+ parentGroupNode.removeContactGroup((UIGroupImpl) group);
// If the parent group is empty remove it.
if (parentGroupNode.getChildCount() == 0)
@@ -765,7 +822,7 @@ public class TreeContactList
if (currentFilterQuery != null && !currentFilterQuery.isCanceled())
currentFilterQuery.cancel();
- currentFilterQuery = new FilterQuery();
+ currentFilterQuery = new UIFilterQuery();
if (filterThread == null)
{
@@ -803,7 +860,7 @@ public class TreeContactList
{
while (true)
{
- FilterQuery filterQuery = currentFilterQuery;
+ UIFilterQuery filterQuery = currentFilterQuery;
ContactListFilter filter = this.filter;
treeModel.clear();
@@ -945,6 +1002,12 @@ public class TreeContactList
case ContactListEvent.GROUP_CLICKED:
listener.groupClicked(event);
break;
+ case ContactListEvent.CONTACT_SELECTED:
+ listener.contactSelected(event);
+ break;
+ case ContactListEvent.GROUP_SELECTED:
+ listener.groupSelected(event);
+ break;
default:
logger.error("Unknown event type " + event.getEventID());
}
@@ -1152,7 +1215,9 @@ public class TreeContactList
SwingUtilities.convertPointToScreen(contactListPoint, this);
- rightButtonMenu.setInvoker(this);
+ if (rightButtonMenu instanceof JPopupMenu)
+ ((JPopupMenu) rightButtonMenu).setInvoker(this);
+
rightButtonMenu.setLocation(contactListPoint.x, contactListPoint.y);
rightButtonMenu.setVisible(true);
}
@@ -1443,7 +1508,7 @@ public class TreeContactList
for (ContactSourceService contactSource
: GuiActivator.getContactSources())
{
- contactSources.add(new ExternalContactSource(contactSource));
+ contactSources.add(new ExternalContactSource(contactSource, this));
}
GuiActivator.bundleContext.addServiceListener(
new ContactSourceServiceListener());
@@ -1453,7 +1518,7 @@ public class TreeContactList
* Returns the list of registered contact sources to search in.
* @return the list of registered contact sources to search in
*/
- public static Collection<ExternalContactSource> getContactSources()
+ public Collection<UIContactSource> getContactSources()
{
return contactSources;
}
@@ -1478,15 +1543,14 @@ public class TreeContactList
* @return the <tt>ExternalContactSource</tt> corresponding to the given
* <tt>ContactSourceService</tt>
*/
- public static ExternalContactSource getContactSource(
- ContactSourceService contactSource)
+ public UIContactSource getContactSource(ContactSourceService contactSource)
{
- Iterator<ExternalContactSource> extSourcesIter
+ Iterator<UIContactSource> extSourcesIter
= contactSources.iterator();
while (extSourcesIter.hasNext())
{
- ExternalContactSource extSource = extSourcesIter.next();
+ UIContactSource extSource = extSourcesIter.next();
if (extSource.getContactSourceService().equals(contactSource))
return extSource;
@@ -1499,14 +1563,14 @@ public class TreeContactList
* @param identifier the identifier we're looking for
* @return the contact source with the given identifier
*/
- public static ExternalContactSource getContactSource(String identifier)
+ public UIContactSource getContactSource(String identifier)
{
- Iterator<ExternalContactSource> extSourcesIter
+ Iterator<UIContactSource> extSourcesIter
= contactSources.iterator();
while (extSourcesIter.hasNext())
{
- ExternalContactSource extSource = extSourcesIter.next();
+ UIContactSource extSource = extSourcesIter.next();
if (extSource.getContactSourceService().getIdentifier()
.equals(identifier))
@@ -1524,7 +1588,7 @@ public class TreeContactList
* @param imgWidth the desired image width
* @param imgHeight the desired image height
*/
- public static void setSourceContactImage( String contactString,
+ public void setSourceContactImage( String contactString,
final JLabel label,
final int imgWidth,
final int imgHeight)
@@ -1536,8 +1600,8 @@ public class TreeContactList
Pattern filterPattern = Pattern.compile(
"^" + Pattern.quote(contactString) + "$", Pattern.UNICODE_CASE);
- Iterator<ExternalContactSource> contactSources
- = TreeContactList.getContactSources().iterator();
+ Iterator<UIContactSource> contactSources
+ = getContactSources().iterator();
final Vector<ContactQuery> loadedQueries = new Vector<ContactQuery>();
@@ -1589,6 +1653,14 @@ public class TreeContactList
*/
public void contactRemoved(ContactRemovedEvent event)
{}
+
+ /**
+ * Indicates that a contact has been updated after a search.
+ * @param event the <tt>ContactQueryEvent</tt> containing information
+ * about the updated <tt>SourceContact</tt>
+ */
+ public void contactChanged(ContactChangedEvent event)
+ {}
});
// If the image search has been canceled from one of the
@@ -1792,12 +1864,13 @@ public class TreeContactList
{
case ServiceEvent.REGISTERED:
ExternalContactSource contactSource
- = new ExternalContactSource((ContactSourceService) service);
+ = new ExternalContactSource(
+ (ContactSourceService) service, TreeContactList.this);
contactSources.add(contactSource);
changed = true;
break;
case ServiceEvent.UNREGISTERING:
- ExternalContactSource cSource
+ UIContactSource cSource
= getContactSource((ContactSourceService) service);
if (cSource != null)
contactSources.remove(cSource);
@@ -1887,4 +1960,124 @@ public class TreeContactList
{
return mclSource;
}
+
+ public Component getComponent()
+ {
+ return this;
+ }
+
+ /**
+ * Selects the given <tt>UIContact</tt> in the contact list.
+ *
+ * @param uiContact the contact to select
+ */
+ public void setSelectedContact(final UIContact uiContact)
+ {
+ if (!SwingUtilities.isEventDispatchThread())
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ setSelectedContact(uiContact);
+ }
+ });
+ return;
+ }
+
+ if (!(uiContact instanceof UIContactImpl))
+ return;
+
+ setSelectionPath(new TreePath(
+ ((UIContactImpl) uiContact).getContactNode().getPath()));
+ }
+
+ /**
+ * Selects the given <tt>UIGroup</tt> in the contact list.
+ *
+ * @param uiGroup the group to select
+ */
+ public void setSelectedGroup(final UIGroup uiGroup)
+ {
+ if (!SwingUtilities.isEventDispatchThread())
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ setSelectedGroup(uiGroup);
+ }
+ });
+ return;
+ }
+
+ if (!(uiGroup instanceof UIGroupImpl))
+ return;
+
+ setSelectionPath(new TreePath(
+ ((UIGroupImpl) uiGroup).getGroupNode().getPath()));
+ }
+
+ /**
+ * Returns the currently selected <tt>UIContact</tt> if there's one.
+ *
+ * @return the currently selected <tt>UIContact</tt> if there's one.
+ */
+ public UIContact getSelectedContact()
+ {
+ TreePath selectionPath = getSelectionPath();
+
+ if (selectionPath != null
+ && selectionPath.getLastPathComponent() instanceof ContactNode)
+ {
+ return ((ContactNode) selectionPath.getLastPathComponent())
+ .getContactDescriptor();
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the currently selected <tt>UIGroup</tt> if there's one.
+ *
+ * @return the currently selected <tt>UIGroup</tt> if there's one.
+ */
+ public UIGroup getSelectedGroup()
+ {
+ TreePath selectionPath = getSelectionPath();
+
+ if (selectionPath != null
+ && selectionPath.getLastPathComponent() instanceof GroupNode)
+ {
+ return ((GroupNode) selectionPath.getLastPathComponent())
+ .getGroupDescriptor();
+ }
+
+ return null;
+ }
+
+ /**
+ * Indicates that a selection has occurred on the tree.
+ *
+ * @param e the <tt>TreeSelectionEvent</tt> that notified us of the change
+ */
+ public void valueChanged(TreeSelectionEvent e)
+ {
+ UIGroup selectedGroup = getSelectedGroup();
+
+ if (selectedGroup != null)
+ {
+ fireContactListEvent(
+ selectedGroup, ContactListEvent.GROUP_SELECTED, 0);
+ }
+ else
+ {
+ UIContact selectedContact = getSelectedContact();
+ if (selectedContact != null)
+ {
+ fireContactListEvent(
+ selectedContact, ContactListEvent.GROUP_SELECTED, 0);
+ }
+ }
+ }
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContact.java
deleted file mode 100644
index 770a2a4..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContact.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-import java.util.*;
-
-import javax.swing.*;
-
-import net.java.sip.communicator.impl.gui.utils.*;
-import net.java.sip.communicator.service.protocol.*;
-import net.java.sip.communicator.util.swing.*;
-
-/**
- * The <tt>UIContact</tt> represents the user interface contact contained in the
- * contact list component.
- *
- * @author Yana Stamcheva
- */
-public interface UIContact
-{
- /**
- * Returns the descriptor of this contact.
- *
- * @return the descriptor of this contact
- */
- public Object getDescriptor();
-
- /**
- * Returns the display name of this contact.
- *
- * @return the display name of this contact
- */
- public String getDisplayName();
-
- /**
- * Returns the display details of this contact. These would be shown
- * whenever the contact is selected.
- *
- * @return the display details of this contact
- */
- public String getDisplayDetails();
-
- /**
- * Returns the index of this contact in its source.
- *
- * @return the source index
- */
- public int getSourceIndex();
-
- /**
- * Returns the avatar of this contact.
- *
- * @param isSelected indicates if the contact is selected
- * @param width the width of the avatar
- * @param height the height of the avatar
- * @return the avatar of this contact
- */
- public ImageIcon getAvatar(boolean isSelected, int width, int height);
-
- /**
- * Returns the status icon of this contact or null if no status is
- * available.
- *
- * @return the status icon of this contact or null if no status is
- * available
- */
- public ImageIcon getStatusIcon();
-
- /**
- * Creates a tool tip for this contact. If such tooltip is
- * provided it would be shown on mouse over over this <tt>UIContact</tt>.
- *
- * @return the tool tip for this contact descriptor
- */
- public ExtendedTooltip getToolTip();
-
- /**
- * Returns the right button menu component.
- *
- * @return the right button menu component
- */
- public JPopupMenu getRightButtonMenu();
-
- /**
- * Returns the parent group.
- *
- * @return the parent group
- */
- public UIGroup getParentGroup();
-
- /**
- * Sets the given <tt>UIGroup</tt> to be the parent group of this
- * <tt>UIContact</tt>.
- *
- * @param parentGroup the parent <tt>UIGroup</tt> of this contact
- */
- public void setParentGroup(UIGroup parentGroup);
-
- /**
- * Returns an <tt>Iterator</tt> over a list of the search strings of this
- * contact.
- *
- * @return an <tt>Iterator</tt> over a list of the search strings of this
- * contact
- */
- public Iterator<String> getSearchStrings();
-
- /**
- * Returns the corresponding <tt>ContactNode</tt>. The <tt>ContactNode</tt>
- * is the real node that is stored in the contact list component data model.
- *
- * @return the corresponding <tt>ContactNode</tt>
- */
- public ContactNode getContactNode();
-
- /**
- * Sets the given <tt>contactNode</tt>. The <tt>ContactNode</tt>
- * is the real node that is stored in the contact list component data model.
- *
- * @param contactNode the <tt>ContactNode</tt> that corresponds to this
- * <tt>UIGroup</tt>
- */
- public void setContactNode(ContactNode contactNode);
-
- /**
- * Returns the default <tt>ContactDetail</tt> to use for any operations
- * depending to the given <tt>OperationSet</tt> class.
- *
- * @param opSetClass the <tt>OperationSet</tt> class we're interested in
- * @return the default <tt>ContactDetail</tt> to use for any operations
- * depending to the given <tt>OperationSet</tt> class
- */
- public UIContactDetail getDefaultContactDetail(
- Class<? extends OperationSet> opSetClass);
-
- /**
- * Returns a list of all <tt>UIContactDetail</tt>s corresponding to the
- * given <tt>OperationSet</tt> class.
- *
- * @param opSetClass the <tt>OperationSet</tt> class we're looking for
- * @return a list of all <tt>UIContactDetail</tt>s corresponding to the
- * given <tt>OperationSet</tt> class
- */
- public List<UIContactDetail> getContactDetailsForOperationSet(
- Class<? extends OperationSet> opSetClass);
-
- /**
- * Returns a list of all <tt>UIContactDetail</tt>s within this
- * <tt>UIContact</tt>.
- *
- * @return a list of all <tt>UIContactDetail</tt>s within this
- * <tt>UIContact</tt>
- */
- public List<UIContactDetail> getContactDetails();
-
- /**
- * Returns all custom action buttons for this notification contact.
- *
- * @return a list of all custom action buttons for this notification contact
- */
- public Collection<SIPCommButton> getContactCustomActionButtons();
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetail.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetail.java
deleted file mode 100644
index 3790f68..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetail.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-import java.util.*;
-
-import javax.swing.*;
-
-import net.java.sip.communicator.service.protocol.*;
-
-/**
- * The <tt>UIContactDetail</tt> corresponds to a particular contact detail,
- * phone number, IM identifier, email, etc. which has it's preferred mode of
- * transport <tt>ProtocolProviderService</tt>.
- *
- * @author Yana Stamcheva
- */
-public abstract class UIContactDetail
-{
- /**
- * The prefix to be used when calling this contact detail.
- */
- private String prefix;
-
- /**
- * The address of this detail.
- */
- private final String address;
-
- /**
- * The display name of this detail.
- */
- private final String displayName;
-
- /**
- * The status icon of this contact detail.
- */
- private final ImageIcon statusIcon;
-
- /**
- * The <tt>ProtocolProviderService</tt> corresponding to this detail.
- */
- private final ProtocolProviderService protocolProvider;
-
- /**
- * The protocol to be used for this contact detail if no protocol provider
- * is set.
- */
- private final String preferredProtocol;
-
- /**
- * The collection of labels associated with this detail.
- */
- private final Collection<String> labels;
-
- /**
- * The category of the underlying contact detail.
- */
- private final String category;
-
- /**
- * The underlying object that this class is wrapping
- */
- private final Object descriptor;
-
- /**
- * Creates a <tt>UIContactDetail</tt> by specifying the contact
- * <tt>address</tt>, the <tt>displayName</tt> and <tt>preferredProvider</tt>.
- * @param address the contact address
- * @param displayName the contact display name
- * @param category the category of the underlying contact detail
- * @param labels the collection of labels associated with this detail
- * @param statusIcon the status icon of this contact detail
- * @param preferredProvider the preferred protocol provider
- * @param preferredProtocol the preferred protocol if no protocol provider
- * is set
- * @param descriptor the underlying object that this class is wrapping
- */
- public UIContactDetail(
- String address,
- String displayName,
- String category,
- Collection<String> labels,
- ImageIcon statusIcon,
- ProtocolProviderService preferredProvider,
- String preferredProtocol,
- Object descriptor)
- {
- this.address = address;
- this.displayName = displayName;
- this.category = category;
- this.labels = labels;
- this.statusIcon = statusIcon;
- this.protocolProvider = preferredProvider;
- this.preferredProtocol = preferredProtocol;
- this.descriptor = descriptor;
- }
-
- /**
- * Returns the display name of this detail.
- * @return the display name of this detail
- */
- public String getDisplayName()
- {
- return displayName;
- }
-
- /**
- * Returns the address of this detail.
- * @return the address of this detail
- */
- public String getAddress()
- {
- if (prefix != null && prefix.trim().length() >= 0)
- return prefix + address;
-
- return address;
- }
-
- /**
- * Returns the category of the underlying detail.
- *
- * @return the category of the underlying detail
- */
- public String getCategory()
- {
- return category;
- }
-
- /**
- * Returns an iterator over the collection of labels associated with this
- * detail.
- *
- * @return an iterator over the collection of labels associated with this
- * detail
- */
- public Iterator<String> getLabels()
- {
- if (labels != null)
- return labels.iterator();
-
- return null;
- }
-
- /**
- * Returns the status icon of this contact detail.
- *
- * @return the status icon of this contact detail
- */
- public ImageIcon getStatusIcon()
- {
- return statusIcon;
- }
-
- /**
- * Returns the protocol provider preferred for contacting this detail for
- * the given <tt>OperationSet</tt> class.
- * @param opSetClass the <tt>OperationSet</tt> class for which we're looking
- * for provider
- * @return the protocol provider preferred for contacting this detail
- */
- public ProtocolProviderService getPreferredProtocolProvider(
- Class<? extends OperationSet> opSetClass)
- {
- return protocolProvider;
- }
-
- /**
- * Returns the name of the protocol preferred for contacting this detail for
- * the given <tt>OperationSet</tt> class if no preferred protocol provider
- * is set.
- * @param opSetClass the <tt>OperationSet</tt> class for which we're looking
- * for protocol
- * @return the name of the protocol preferred for contacting this detail
- */
- public String getPreferredProtocol(Class<? extends OperationSet> opSetClass)
- {
- return preferredProtocol;
- }
-
- /**
- * Returns the prefix to be used when calling this contact detail.
- *
- * @return the prefix to be used when calling this contact detail
- */
- public String getPrefix()
- {
- return prefix;
- }
-
- /**
- * Sets the prefix to be used when calling this contact detail.
- *
- * @param prefix the prefix to be used when calling this contact detail
- */
- public void setPrefix(String prefix)
- {
- this.prefix = prefix;
- }
-
- /**
- * Returns the underlying object that this class is wrapping
- *
- * @return the underlying object that this class is wrapping
- */
- public Object getDescriptor()
- {
- return descriptor;
- }
-
- /**
- * Returns the <tt>PresenceStatus</tt> of this <tt>ContactDetail</tt> or
- * null if the detail doesn't support presence.
- * @return the <tt>PresenceStatus</tt> of this <tt>ContactDetail</tt> or
- * null if the detail doesn't support presence
- */
- public abstract PresenceStatus getPresenceStatus();
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailAction.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailAction.java
deleted file mode 100644
index fb20936..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailAction.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-/**
- * Defines an action for an <tt>UIContactDetail</tt>.
- *
- * @author Yana Stamcheva
- */
-public interface UIContactDetailAction
-{
- /**
- * Indicates this action is executed for the given <tt>UIContactDetail</tt>.
- *
- * @param contactDetail the <tt>UIContactDetail</tt> for which this action
- * is performed
- * @param x the x coordinate of the action
- * @param y the y coordinate of the action
- */
- public void actionPerformed (UIContactDetail contactDetail, int x, int y);
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailImpl.java
new file mode 100644
index 0000000..71b3634
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactDetailImpl.java
@@ -0,0 +1,83 @@
+/*
+ * Jitsi, 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.contactlist;
+
+import java.util.*;
+
+import javax.swing.*;
+
+import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.protocol.*;
+
+/**
+ * The <tt>UIContactDetail</tt> implementation
+ *
+ * @author Yana Stamcheva
+ */
+public class UIContactDetailImpl
+ extends UIContactDetail
+{
+ /**
+ * The status icon of this contact detail.
+ */
+ private ImageIcon statusIcon;
+
+ /**
+ * Creates a <tt>UIContactDetailImpl</tt> by specifying the contact
+ * <tt>address</tt>, the <tt>displayName</tt> and <tt>preferredProvider</tt>.
+ * @param address the contact address
+ * @param displayName the contact display name
+ * @param category the category of the underlying contact detail
+ * @param labels the collection of labels associated with this detail
+ * @param statusIcon the status icon of this contact detail
+ * @param preferredProvider the preferred protocol provider
+ * @param preferredProtocol the preferred protocol if no protocol provider
+ * is set
+ * @param descriptor the underlying object that this class is wrapping
+ */
+ public UIContactDetailImpl(
+ String address,
+ String displayName,
+ String category,
+ Collection<String> labels,
+ ImageIcon statusIcon,
+ ProtocolProviderService preferredProvider,
+ String preferredProtocol,
+ Object descriptor)
+ {
+ super(address, displayName, category, labels, preferredProvider,
+ preferredProtocol, descriptor);
+
+ setStatusIcon(statusIcon);
+ }
+
+ /**
+ * Sets the given status icon.
+ *
+ * @param statusIcon the status icon to set
+ */
+ public void setStatusIcon(ImageIcon statusIcon)
+ {
+ this.statusIcon = statusIcon;
+ }
+
+ /**
+ * Returns the status icon of this contact detail.
+ *
+ * @return the status icon of this contact detail
+ */
+ public ImageIcon getStatusIcon()
+ {
+ return statusIcon;
+ }
+
+ @Override
+ public PresenceStatus getPresenceStatus()
+ {
+ return null;
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactImpl.java
new file mode 100644
index 0000000..bd15e4b
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIContactImpl.java
@@ -0,0 +1,56 @@
+/*
+ * Jitsi, 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.contactlist;
+
+import javax.swing.*;
+
+import net.java.sip.communicator.service.gui.*;
+
+public abstract class UIContactImpl
+ extends UIContact
+{
+ /**
+ * Returns the corresponding <tt>ContactNode</tt>. The <tt>ContactNode</tt>
+ * is the real node that is stored in the contact list component data model.
+ *
+ * @return the corresponding <tt>ContactNode</tt>
+ */
+ public abstract ContactNode getContactNode();
+
+ /**
+ * Sets the given <tt>contactNode</tt>. The <tt>ContactNode</tt>
+ * is the real node that is stored in the contact list component data model.
+ *
+ * @param contactNode the <tt>ContactNode</tt> that corresponds to this
+ * <tt>UIGroup</tt>
+ */
+ public abstract void setContactNode(ContactNode contactNode);
+
+ /**
+ * Returns the general status icon of the given MetaContact. Detects the
+ * status using the priority status table. The priority is defined on
+ * the "availability" factor and here the most "available" status is
+ * returned.
+ *
+ * @return PresenceStatus The most "available" status from all
+ * sub-contact statuses.
+ */
+ public abstract ImageIcon getStatusIcon();
+
+ /**
+ * Gets the avatar of a specific <tt>MetaContact</tt> in the form of an
+ * <tt>ImageIcon</tt> value.
+ *
+ * @param isSelected indicates if the contact is selected
+ * @param width the desired icon width
+ * @param height the desired icon height
+ * @return an <tt>ImageIcon</tt> which represents the avatar of the
+ * specified <tt>MetaContact</tt>
+ */
+ public abstract ImageIcon getAvatar(
+ boolean isSelected, int width, int height);
+}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQuery.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
index 4ac17b9..441737d 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/FilterQuery.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
@@ -11,13 +11,16 @@ import java.util.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.gui.event.*;
/**
* The <tt>FilterQuery</tt> gives information about a current filtering.
*
* @author Yana Stamcheva
*/
-public class FilterQuery
+public class UIFilterQuery
+ extends FilterQuery
implements ContactQueryListener,
MetaContactQueryListener
{
@@ -315,7 +318,8 @@ public class FilterQuery
GuiActivator.getContactList().addContact(
query,
moreInfoContact,
- TreeContactList.getContactSource(contactSource).getUIGroup(),
+ GuiActivator.getContactList()
+ .getContactSource(contactSource).getUIGroup(),
false);
}
}
@@ -338,6 +342,14 @@ public class FilterQuery
public void contactRemoved(ContactRemovedEvent event)
{}
+ /**
+ * Indicates that a contact has been updated after a search.
+ * @param event the <tt>ContactQueryEvent</tt> containing information
+ * about the updated <tt>SourceContact</tt>
+ */
+ public void contactChanged(ContactChangedEvent event)
+ {}
+
public void metaContactReceived(MetaContactQueryEvent event) {}
public void metaGroupReceived(MetaGroupQueryEvent event) {}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroup.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroup.java
deleted file mode 100644
index caa2cb9..0000000
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroup.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Jitsi, 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.contactlist;
-
-import javax.swing.*;
-
-/**
- * The <tt>UIGroup</tt> represents the user interface contact list group.
- *
- * @author Yana Stamcheva
- */
-public interface UIGroup
-{
- /**
- * Returns the descriptor of the group. This would be the underlying object
- * that should provide all other necessary information for the group.
- *
- * @return the descriptor of the group
- */
- public Object getDescriptor();
-
- /**
- * The display name of the group. The display name is the name to be shown
- * in the contact list group row.
- *
- * @return the display name of the group
- */
- public String getDisplayName();
-
- /**
- * Returns the index of this group in its source. In other words this is
- * the descriptor index.
- *
- * @return the index of this group in its source
- */
- public int getSourceIndex();
-
- /**
- * Returns the parent group.
- *
- * @return the parent group
- */
- public UIGroup getParentGroup();
-
- /**
- * Indicates if the group is collapsed or expanded.
- *
- * @return <tt>true</tt> to indicate that the group is collapsed,
- * <tt>false</tt> to indicate that it's expanded
- */
- public boolean isGroupCollapsed();
-
- /**
- * Returns the count of online child contacts.
- *
- * @return the count of online child contacts
- */
- public int countOnlineChildContacts();
-
- /**
- * Returns the child contacts count.
- *
- * @return child contacts count
- */
- public int countChildContacts();
-
- /**
- * Returns the identifier of this group.
- *
- * @return the identifier of this group
- */
- public String getId();
-
- /**
- * Returns the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>.
- * The is the actual node used in the contact list component data model.
- *
- * @return the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>
- */
- public GroupNode getGroupNode();
-
- /**
- * Sets the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>.
- *
- * @param groupNode the <tt>GroupNode</tt> to set. The is the actual
- * node used in the contact list component data model.
- */
- public void setGroupNode(GroupNode groupNode);
-
- /**
- * Returns the right button menu for this group.
- *
- * @return the right button menu component for this group
- */
- public JPopupMenu getRightButtonMenu();
-}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroupImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroupImpl.java
new file mode 100644
index 0000000..92658c4
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIGroupImpl.java
@@ -0,0 +1,23 @@
+package net.java.sip.communicator.impl.gui.main.contactlist;
+
+import net.java.sip.communicator.service.gui.*;
+
+public abstract class UIGroupImpl
+ extends UIGroup
+{
+ /**
+ * Returns the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>.
+ * The is the actual node used in the contact list component data model.
+ *
+ * @return the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>
+ */
+ public abstract GroupNode getGroupNode();
+
+ /**
+ * Sets the <tt>GroupNode</tt> corresponding to this <tt>UIGroup</tt>.
+ *
+ * @param groupNode the <tt>GroupNode</tt> to set. The is the actual
+ * node used in the contact list component data model.
+ */
+ public abstract void setGroupNode(GroupNode groupNode);
+}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java
index d60a214..805e00b 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java
@@ -7,11 +7,13 @@
package net.java.sip.communicator.impl.gui.main.contactlist.contactsource;
import javax.swing.*;
+import javax.swing.tree.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.service.contactsource.*;
import net.java.sip.communicator.service.customcontactactions.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.swing.*;
import org.osgi.framework.*;
@@ -28,6 +30,7 @@ import java.util.List;
* @author Yana Stamcheva
*/
public class ExternalContactSource
+ implements UIContactSource
{
/**
* The data key of the SourceContactDescriptor object used to store a
@@ -57,6 +60,8 @@ public class ExternalContactSource
private static Map<ContactAction<SourceContact>, SIPCommButton>
customActionButtons;
+ private final JTree contactListTree;
+
/**
* Creates an <tt>ExternalContactSource</tt> based on the given
* <tt>ContactSourceService</tt>.
@@ -64,11 +69,13 @@ public class ExternalContactSource
* @param contactSource the <tt>ContactSourceService</tt>, on which this
* <tt>ExternalContactSource</tt> is based
*/
- public ExternalContactSource(ContactSourceService contactSource)
+ public ExternalContactSource( ContactSourceService contactSource,
+ JTree contactListTree)
{
this.contactSource = contactSource;
+ this.contactListTree = contactListTree;
- sourceUIGroup = new SourceUIGroup(contactSource.getDisplayName());
+ sourceUIGroup = new SourceUIGroup(contactSource.getDisplayName(), this);
}
/**
@@ -116,7 +123,7 @@ public class ExternalContactSource
* @param sourceContact the <tt>SourceContact</tt>, which corresponding UI
* contact we would like to remove
*/
- public static void removeUIContact(SourceContact sourceContact)
+ public void removeUIContact(SourceContact sourceContact)
{
sourceContact.setData(UI_CONTACT_DATA_KEY, null);
}
@@ -129,7 +136,7 @@ public class ExternalContactSource
* @return the <tt>UIContact</tt> corresponding to the given
* <tt>MetaContact</tt>
*/
- public static UIContact getUIContact(SourceContact sourceContact)
+ public UIContact getUIContact(SourceContact sourceContact)
{
return (UIContact) sourceContact.getData(UI_CONTACT_DATA_KEY);
}
@@ -139,7 +146,7 @@ public class ExternalContactSource
*
* @return a list of all custom action buttons for this meta contact
*/
- public static Collection<SIPCommButton> getContactCustomActionButtons(
+ public Collection<SIPCommButton> getContactCustomActionButtons(
final SourceContact sourceContact)
{
customActionContact = sourceContact;
@@ -192,19 +199,14 @@ public class ExternalContactSource
/**
* Initializes custom action buttons for this contact source.
*/
- private static void initCustomActionButtons()
+ private void initCustomActionButtons()
{
customActionButtons = new LinkedHashMap
<ContactAction<SourceContact>, SIPCommButton>();
- CustomContactActionsChangeListener changeListener
- = new CustomContactActionsChangeListener();
-
for (CustomContactActionsService<SourceContact> ccas
: getContactActionsServices())
{
- ccas.addCustomContactActionsListener(changeListener);
-
Iterator<ContactAction<SourceContact>> actionIterator
= ccas.getCustomContactActions();
@@ -254,13 +256,15 @@ public class ExternalContactSource
button.getY() + button.getHeight());
SwingUtilities.convertPointToScreen(
- location, GuiActivator.getContactList());
+ location, contactListTree);
- location.y = location.y
- + GuiActivator.getContactList()
- .getPathBounds(
- GuiActivator.getContactList()
- .getSelectionPath()).y;
+ TreePath selectionPath
+ = contactListTree.getSelectionPath();
+
+ if (selectionPath != null)
+ location.y = location.y
+ + contactListTree.getPathBounds(
+ selectionPath).y;
contactAction.actionPerformed(
contactDetails.get(0),
@@ -326,8 +330,8 @@ public class ExternalContactSource
* <tt>ExternalContactSource</tt>. It takes the name of the source and
* sets it as a group name.
*/
- private class SourceUIGroup
- implements UIGroup
+ public class SourceUIGroup
+ extends UIGroupImpl
{
/**
* The display name of the group.
@@ -339,13 +343,22 @@ public class ExternalContactSource
*/
private GroupNode groupNode;
+ private ExternalContactSource parentUISource;
+
/**
* Creates an instance of <tt>SourceUIGroup</tt>.
* @param name the name of the group
*/
- public SourceUIGroup(String name)
+ public SourceUIGroup( String name,
+ ExternalContactSource parentUISource)
{
this.displayName = name;
+ this.parentUISource = parentUISource;
+ }
+
+ public ExternalContactSource getParentUISource()
+ {
+ return parentUISource;
}
/**
@@ -413,7 +426,7 @@ public class ExternalContactSource
*/
public Object getDescriptor()
{
- return displayName;
+ return contactSource;
}
/**
@@ -454,29 +467,6 @@ public class ExternalContactSource
}
/**
- * Listens for updates on actions and when received update the source contact.
- */
- private static class CustomContactActionsChangeListener
- implements CustomContactActionsListener
- {
- /**
- * Update for custom action has occurred.
- * @param event the event containing the source which was updated.
- */
- public void updated(CustomContactActionsEvent event)
- {
- if(!(event.getSource() instanceof SourceContact))
- return;
-
- ContactNode contactNode
- = getUIContact((SourceContact)event.getSource()).getContactNode();
-
- if (contactNode != null)
- GuiActivator.getContactList().nodeChanged(contactNode);
- }
- }
-
- /**
* An implementation of <tt>UIContactDetail</tt> for a custom action.
*/
private static class UIContactDetailCustomAction
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
index 8a8d69a..82ea955 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
@@ -21,6 +21,7 @@ import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.contactlist.event.*;
import net.java.sip.communicator.service.customcontactactions.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
import net.java.sip.communicator.util.*;
@@ -91,9 +92,9 @@ public class MetaContactListSource
* @return the <tt>UIContact</tt> corresponding to the given
* <tt>MetaContact</tt>
*/
- public static UIContact getUIContact(MetaContact metaContact)
+ public static UIContactImpl getUIContact(MetaContact metaContact)
{
- return (UIContact) metaContact.getData(UI_CONTACT_DATA_KEY);
+ return (UIContactImpl) metaContact.getData(UI_CONTACT_DATA_KEY);
}
/**
@@ -101,12 +102,12 @@ public class MetaContactListSource
* <tt>MetaContactGroup</tt>.
* @param metaGroup the <tt>MetaContactGroup</tt>, which UI group we're
* looking for
- * @return the <tt>UIGroup</tt> corresponding to the given
+ * @return the <tt>UIGroupImpl</tt> corresponding to the given
* <tt>MetaContactGroup</tt>
*/
- public static UIGroup getUIGroup(MetaContactGroup metaGroup)
+ public static UIGroupImpl getUIGroup(MetaContactGroup metaGroup)
{
- return (UIGroup) metaGroup.getData(UI_GROUP_DATA_KEY);
+ return (UIGroupImpl) metaGroup.getData(UI_GROUP_DATA_KEY);
}
/**
@@ -126,7 +127,7 @@ public class MetaContactListSource
* create an <tt>UIContact</tt>
* @return an <tt>UIContact</tt> for the given <tt>metaContact</tt>
*/
- public static UIContact createUIContact(final MetaContact metaContact)
+ public static UIContactImpl createUIContact(final MetaContact metaContact)
{
final MetaUIContact descriptor
= new MetaUIContact(metaContact);
@@ -367,7 +368,7 @@ public class MetaContactListSource
boolean uiContactCreated = false;
- UIContact uiContact;
+ UIContactImpl uiContact;
synchronized (metaContact)
{
@@ -439,7 +440,7 @@ public class MetaContactListSource
public void childContactsReordered(MetaContactGroupEvent evt)
{
MetaContactGroup metaGroup = evt.getSourceMetaContactGroup();
- UIGroup uiGroup;
+ UIGroupImpl uiGroup;
ContactListTreeModel treeModel
= GuiActivator.getContactList().getTreeModel();
@@ -577,7 +578,7 @@ public class MetaContactListSource
{
final MetaContactGroup metaGroup = evt.getSourceMetaContactGroup();
- UIGroup uiGroup;
+ UIGroupImpl uiGroup;
synchronized (metaGroup)
{
uiGroup = MetaContactListSource.getUIGroup(metaGroup);
@@ -622,7 +623,7 @@ public class MetaContactListSource
{
MetaContact metaContact = evt.getSourceMetaContact();
- UIContact uiContact;
+ UIContactImpl uiContact;
synchronized (metaContact)
{
uiContact = MetaContactListSource.getUIContact(metaContact);
@@ -744,7 +745,7 @@ public class MetaContactListSource
{
MetaContact metaContact = evt.getSourceMetaContact();
- UIContact uiContact;
+ UIContactImpl uiContact;
synchronized (metaContact)
{
uiContact = MetaContactListSource.getUIContact(metaContact);
@@ -768,7 +769,7 @@ public class MetaContactListSource
{
MetaContact metaContact = evt.getSourceMetaContact();
- UIContact uiContact;
+ UIContactImpl uiContact;
synchronized (metaContact)
{
uiContact = MetaContactListSource.getUIContact(metaContact);
@@ -850,7 +851,7 @@ public class MetaContactListSource
{
MetaContact metaContact = evt.getNewParent();
- UIContact uiContact;
+ UIContactImpl uiContact;
synchronized (metaContact)
{
uiContact = MetaContactListSource.getUIContact(metaContact);
@@ -948,7 +949,7 @@ public class MetaContactListSource
{
final MetaContact oldParent = evt.getOldParent();
- UIContact oldUIContact;
+ UIContactImpl oldUIContact;
synchronized (oldParent)
{
oldUIContact = MetaContactListSource.getUIContact(oldParent);
@@ -1030,14 +1031,9 @@ public class MetaContactListSource
customActionButtons
= new LinkedHashMap<ContactAction<Contact>, SIPCommButton>();
- CustomContactActionsChangeListener changeListener
- = new CustomContactActionsChangeListener();
-
for (CustomContactActionsService<Contact> ccas
: getContactActionsServices())
{
- ccas.addCustomContactActionsListener(changeListener);
-
Iterator<ContactAction<Contact>> actionIterator
= ccas.getCustomContactActions();
@@ -1105,45 +1101,6 @@ public class MetaContactListSource
}
/**
- * Listens for updates on actions and when received update the contact.
- */
- private static class CustomContactActionsChangeListener
- implements CustomContactActionsListener
- {
- /**
- * Update for custom action has occured.
- * @param event the event containing the source which was updated.
- */
- public void updated(CustomContactActionsEvent event)
- {
- if(!(event.getSource() instanceof Contact))
- return;
-
- MetaContact metaContact
- = GuiActivator.getContactListService().findMetaContactByContact(
- (Contact)event.getSource());
-
- if (metaContact == null)
- return;
-
- UIContact uiContact;
- synchronized (metaContact)
- {
- uiContact = MetaContactListSource.getUIContact(metaContact);
- }
-
- if (uiContact != null)
- {
- ContactNode contactNode
- = uiContact.getContactNode();
-
- if (contactNode != null)
- GuiActivator.getContactList().nodeChanged(contactNode);
- }
- }
- }
-
- /**
* An implementation of <tt>UIContactDetail</tt> for a custom action.
*/
private static class UIContactDetailCustomAction
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java
index 1cf6c2f..bb4b2f5 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java
@@ -14,6 +14,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
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.protocol.*;
import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.SubscriptionStatus;
@@ -34,7 +35,7 @@ import net.java.sip.communicator.util.swing.*;
* @author Yana Stamcheva
*/
public class MetaUIContact
- implements UIContact
+ extends UIContactImpl
{
/**
* The key of the user data in <tt>MetaContact</tt> which specifies
@@ -593,7 +594,8 @@ public class MetaUIContact
* The implementation of the <tt>UIContactDetail</tt> interface for the
* <tt>MetaContactListService</tt>.
*/
- private class MetaContactDetail extends UIContactDetail
+ private class MetaContactDetail
+ extends UIContactDetailImpl
{
/**
* The underlying protocol contact.
@@ -612,8 +614,7 @@ public class MetaUIContact
contact.getDisplayName(),
null,
null,
- new ImageIcon(
- contact.getPresenceStatus().getStatusIcon()),
+ new ImageIcon(contact.getPresenceStatus().getStatusIcon()),
contact.getProtocolProvider(),
contact.getProtocolProvider().getProtocolName(),
contact);
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIGroup.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIGroup.java
index 536e7b2..2824d84 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIGroup.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIGroup.java
@@ -12,6 +12,7 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
+import net.java.sip.communicator.service.gui.*;
/**
* The <tt>MetaUIGroup</tt> is the implementation of the UIGroup for the
@@ -21,7 +22,7 @@ import net.java.sip.communicator.service.contactlist.*;
* @author Yana Stamcheva
*/
public class MetaUIGroup
- implements UIGroup
+ extends UIGroupImpl
{
/**
* The <tt>MetaContactGroup</tt>, on which this UI group is based.
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
index 904142b..d3ed3da 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ShowMoreContact.java
@@ -14,6 +14,8 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactsource.*;
+import net.java.sip.communicator.service.gui.*;
+import net.java.sip.communicator.service.gui.event.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.swing.*;
@@ -22,8 +24,8 @@ import net.java.sip.communicator.util.swing.*;
* @author Yana Stamcheva
*/
public class ShowMoreContact
- implements UIContact,
- ContactListListener
+ extends UIContactImpl
+ implements ContactListListener
{
/**
* The string associated with this contact.
@@ -54,7 +56,7 @@ public class ShowMoreContact
/**
* The count of shown contacts corresponding to the underlying query.
*/
- private int shownResultsCount = FilterQuery.MAX_EXTERNAL_RESULT_COUNT;
+ private int shownResultsCount = UIFilterQuery.MAX_EXTERNAL_RESULT_COUNT;
/**
* Creates an instance of <tt>MoreInfoContact</tt>.
@@ -262,7 +264,7 @@ public class ShowMoreContact
= new ArrayList<SourceContact>(queryResults);
int newCount
- = shownResultsCount + FilterQuery.MAX_EXTERNAL_RESULT_COUNT;
+ = shownResultsCount + UIFilterQuery.MAX_EXTERNAL_RESULT_COUNT;
int resultSize = contacts.size();
@@ -283,7 +285,7 @@ public class ShowMoreContact
GuiActivator.getContactList().addContact(
contactQuery,
this,
- TreeContactList.getContactSource(
+ GuiActivator.getContactList().getContactSource(
contactQuery.getContactSource()).getUIGroup(),
false);
@@ -293,6 +295,16 @@ public class ShowMoreContact
public void groupClicked(ContactListEvent evt) {}
/**
+ * We're not interested in group selection events here.
+ */
+ public void groupSelected(ContactListEvent evt) {}
+
+ /**
+ * We're not interested in contact selection events here.
+ */
+ public void contactSelected(ContactListEvent evt) {}
+
+ /**
* Returns all custom action buttons for this meta contact.
*
* @return a list of all custom action buttons for this meta contact
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/SourceUIContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/SourceUIContact.java
index 0098beb..2bbd010 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/SourceUIContact.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/SourceUIContact.java
@@ -16,12 +16,11 @@ import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactsource.*;
-import net.java.sip.communicator.service.customcontactactions.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.globalstatus.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
-import org.osgi.framework.*;
/**
* The <tt>SourceUIContact</tt> is the implementation of the UIContact for the
@@ -30,7 +29,7 @@ import org.osgi.framework.*;
* @author Yana Stamcheva
*/
public class SourceUIContact
- implements UIContact
+ extends UIContactImpl
{
/**
* The corresponding <tt>SourceContact</tt>, on which this abstraction is
@@ -46,7 +45,7 @@ public class SourceUIContact
/**
* The parent <tt>UIGroup</tt>.
*/
- private UIGroup uiGroup;
+ private ExternalContactSource.SourceUIGroup uiGroup;
/**
* The search strings for this <tt>UIContact</tt>.
@@ -63,7 +62,7 @@ public class SourceUIContact
* @param parentGroup the parent <tt>UIGroup</tt>
*/
public SourceUIContact( SourceContact contact,
- UIGroup parentGroup)
+ ExternalContactSource.SourceUIGroup parentGroup)
{
this.sourceContact = contact;
this.uiGroup = parentGroup;
@@ -121,6 +120,11 @@ public class SourceUIContact
*/
public ImageIcon getStatusIcon()
{
+ PresenceStatus status = sourceContact.getPresenceStatus();
+
+ if (status != null)
+ return new ImageIcon(Constants.getStatusIcon(status));
+
return new ImageIcon(GlobalStatusEnum.OFFLINE.getStatusIcon());
}
@@ -284,14 +288,15 @@ public class SourceUIContact
{
this.contactNode = contactNode;
if (contactNode == null)
- ExternalContactSource.removeUIContact(sourceContact);
+ uiGroup.getParentUISource().removeUIContact(sourceContact);
}
/**
* The implementation of the <tt>UIContactDetail</tt> interface for the
* external source <tt>ContactDetail</tt>s.
*/
- protected static class SourceContactDetail extends UIContactDetail
+ protected static class SourceContactDetail
+ extends UIContactDetailImpl
{
/**
* Creates an instance of <tt>SourceContactDetail</tt> by specifying
@@ -479,7 +484,7 @@ public class SourceUIContact
public Collection<SIPCommButton> getContactCustomActionButtons()
{
if (sourceContact != null)
- return ExternalContactSource
+ return uiGroup.getParentUISource()
.getContactCustomActionButtons(sourceContact);
return null;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java
index 95aec4e..aab3c20 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java
@@ -14,6 +14,7 @@ import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.impl.gui.utils.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.OperationSetMessageWaiting.*;
import net.java.sip.communicator.service.protocol.event.*;
@@ -31,8 +32,8 @@ import org.jitsi.service.resources.*;
* @author Yana Stamcheva
*/
public class NotificationContact
- implements UIContact,
- RegistrationStateChangeListener,
+ extends UIContact
+ implements RegistrationStateChangeListener,
ProviderPresenceStatusListener
{
/**
@@ -453,7 +454,7 @@ public class NotificationContact
* external source <tt>ContactDetail</tt>s.
*/
private class MessageWaitingDetail
- extends UIContactDetail
+ extends UIContactDetailImpl
{
/**
* Creates an instance of <tt>SourceContactDetail</tt> by specifying
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java
index 5697fdb..efbe4d5 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java
@@ -18,6 +18,7 @@ import org.osgi.framework.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
import net.java.sip.communicator.service.customcontactactions.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.OperationSetMessageWaiting.MessageType;
import net.java.sip.communicator.service.protocol.event.*;
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java
index 0df6e66..d566366 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java
@@ -13,6 +13,7 @@ import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.main.contactlist.*;
+import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
@@ -24,7 +25,7 @@ import net.java.sip.communicator.service.protocol.event.*;
* @author Yana Stamcheva
*/
public class NotificationGroup
- implements UIGroup
+ extends UIGroup
{
/**
* The type of the notification message, identifying this group.