use more efficient methods to obtain the first and the last message from history.

cusax-fix
Yana Stamcheva 20 years ago
parent a54ef6ee1c
commit 52340c9c58

@ -122,13 +122,13 @@ public ChatPanel( ChatWindow chatWindow,
addComponentListener(new TabSelectionFocusGainListener());
/*
new Thread(){
public void run(){
loadHistoryPeriod();
}
}.start();
*/
}
/**
@ -773,12 +773,12 @@ else if(o instanceof MessageReceivedEvent) {
if(o1 instanceof MessageDeliveredEvent) {
MessageDeliveredEvent evt
= (MessageDeliveredEvent)o;
= (MessageDeliveredEvent)o1;
this.lastHistoryMsgTimestamp = evt.getTimestamp();
}
else if(o1 instanceof MessageReceivedEvent) {
MessageReceivedEvent evt = (MessageReceivedEvent)o;
MessageReceivedEvent evt = (MessageReceivedEvent)o1;
this.lastHistoryMsgTimestamp = evt.getTimestamp();
}

@ -344,6 +344,10 @@ public boolean hasSelectedMenus()
return false;
}
/**
* Loads a "page" from the history in the chat window. Invoked when history
* arrow keys are clicked.
*/
private class HistoryMessagesLoader implements Runnable {
private Collection msgHistory;
private MetaContact metaContact;
@ -363,58 +367,30 @@ public void run()
conversationPanel.setDefaultContent();
changeHistoryButtonsSate(metaContact);
changeHistoryButtonsSate();
}
}
/*
/**
* Disables/Enables history arrow buttons depending on whether the
* current page is the first, the last page or a middle page.
*/
private void changeHistoryButtonsSate()
{
if(chatPanel.getFirstHistoryMsgTimestamp()
.compareTo(conversationPanel.getPageFirstMsgTimestamp()) > 0) {
nextButton.setEnabled(true);
}
else {
nextButton.setEnabled(false);
}
if(chatPanel.getLastHistoryMsgTimestamp()
.compareTo(conversationPanel.getPageLastMsgTimestamp()) < 0) {
.compareTo(conversationPanel.getPageFirstMsgTimestamp()) < 0) {
previousButton.setEnabled(true);
}
else {
previousButton.setEnabled(false);
}
}
*/
private void changeHistoryButtonsSate(MetaContact metaContact)
{
MessageHistoryService msgHistory
= GuiActivator.getMsgHistoryService();
Collection nextMessages = msgHistory
.findFirstMessagesAfter(
metaContact, conversationPanel.getPageLastMsgTimestamp(), 1);
Collection previousMessages = msgHistory
.findLastMessagesBefore(
metaContact, conversationPanel.getPageFirstMsgTimestamp(), 1);
if(nextMessages.size() > 0) {
if(chatPanel.getLastHistoryMsgTimestamp()
.compareTo(conversationPanel.getPageLastMsgTimestamp()) > 0) {
nextButton.setEnabled(true);
}
else {
nextButton.setEnabled(false);
}
if(previousMessages.size() > 0) {
previousButton.setEnabled(true);
}
else {
previousButton.setEnabled(false);
}
}
}

Loading…
Cancel
Save