mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
Improve loading speed of contact list.
git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@9071 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
@ -23,6 +23,11 @@ import org.jivesoftware.spark.util.log.Log;
|
||||
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
|
||||
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
|
||||
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.Timer;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
@ -45,11 +50,6 @@ import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.Timer;
|
||||
|
||||
/**
|
||||
* Container representing a RosterGroup within the Contact List.
|
||||
*/
|
||||
@ -76,6 +76,8 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
|
||||
|
||||
private LocalPreferences preferences;
|
||||
|
||||
private Timer presenceTimer;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new ContactGroup.
|
||||
@ -276,17 +278,38 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
|
||||
item.setGroupName(getGroupName());
|
||||
contactItems.add(item);
|
||||
|
||||
if (presenceTimer != null && presenceTimer.isRunning()) {
|
||||
presenceTimer.stop();
|
||||
}
|
||||
|
||||
presenceTimer = new Timer(1000, new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
sortContactList();
|
||||
}
|
||||
});
|
||||
presenceTimer.start();
|
||||
|
||||
model.addElement(item);
|
||||
fireContactItemAdded(item);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts the ContactList alphabetically.
|
||||
*/
|
||||
private void sortContactList() {
|
||||
final List<ContactItem> sortedItemList = getContactItems();
|
||||
final int index = sortedItemList.indexOf(item);
|
||||
int j = 0;
|
||||
for (ContactItem item : sortedItemList) {
|
||||
model.set(j, item);
|
||||
j++;
|
||||
}
|
||||
|
||||
|
||||
Object[] objs = contactItemList.getSelectedValues();
|
||||
Object[] contactItemArray = contactItemList.getSelectedValues();
|
||||
|
||||
model.insertElementAt(item, index);
|
||||
|
||||
int[] intList = new int[objs.length];
|
||||
for (int i = 0; i < objs.length; i++) {
|
||||
ContactItem contact = (ContactItem)objs[i];
|
||||
int[] intList = new int[contactItemArray.length];
|
||||
for (int i = 0; i < contactItemArray.length; i++) {
|
||||
ContactItem contact = (ContactItem)contactItemArray[i];
|
||||
intList[i] = model.indexOf(contact);
|
||||
}
|
||||
|
||||
@ -294,7 +317,6 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
|
||||
contactItemList.setSelectedIndices(intList);
|
||||
}
|
||||
|
||||
fireContactItemAdded(item);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -315,6 +337,11 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
|
||||
// contactGroup.setStyle(CollapsiblePane.TREE_STYLE);
|
||||
listPanel.add(panel);
|
||||
contactGroups.add(contactGroup);
|
||||
|
||||
// Do not show no contacts.
|
||||
if(model.contains(noContacts)){
|
||||
model.removeElement(noContacts);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user