Fixes removing the first message when chat is too big, the remove was matching wrong element and was leaving dates without names.

cusax-fix
Damian Minkov 12 years ago
parent 92c1dee949
commit 59818fd711

@ -1081,9 +1081,61 @@ private void ensureDocumentSize()
{
logger.error("Error removing messages from chat: ", e);
}
if(firstMsgElement.getName().equals("table"))
{
// as we have removed a header for maybe several messages,
// delete all messages without header
deleteAllMessagesWithoutHeader();
}
}
}
/**
* Deletes all messages "div"s that are missing their header the table tag.
* The method calls itself recursively.
*/
private void deleteAllMessagesWithoutHeader()
{
String[] ids = new String[]
{ChatHtmlUtils.MESSAGE_TEXT_ID,
"statusMessage",
"systemMessage",
"actionMessage"};
Element firstMsgElement = findElement(Attribute.ID, ids);
if(firstMsgElement == null
|| !firstMsgElement.getName().equals("div"))
{
return;
}
int startIndex = firstMsgElement.getStartOffset();
int endIndex = firstMsgElement.getEndOffset();
try
{
// Remove the message.
if(endIndex - startIndex < document.getLength())
this.document.remove(startIndex, endIndex - startIndex);
else
{
// currently there is a problem of deleting the last message
// if it is the last message on the view
return;
}
}
catch (BadLocationException e)
{
logger.error("Error removing messages from chat: ", e);
return;
}
deleteAllMessagesWithoutHeader();
}
/**
* Highlights keywords searched in the history.
*
@ -2189,5 +2241,16 @@ public void removeUpdate(DocumentEvent e)
@Override
public void changedUpdate(DocumentEvent e)
{}
/**
* For debugging purposes, prints the content of the document
* in the console.
*/
public void debug()
{
try {
write(System.out, document, 0, document.getLength());
} catch(Throwable t){}
}
}
}

@ -39,7 +39,7 @@ public class ChatHtmlUtils
/**
* The message header identifier attribute.
*/
public final static String MESSAGE_HEADER_ID = "messageHeader";
public final static String MESSAGE_HEADER_ID = "dateHeader";
/**
* The message identifier attribute.
@ -256,7 +256,8 @@ private static String createSimpleIncomingMessageTag(
messageBuff.append("<table width=\"100%\" ");
messageBuff.append(NAME_ATTRIBUTE + "=\""
+ Tag.TABLE.toString() + "\" ");
+ Tag.TABLE.toString()
+ "\" id=\"messageHeader\"");
messageBuff.append("style=\"background-color:");
messageBuff.append(MSG_NAME_BACKGROUND).append(";\">");
messageBuff.append("<tr>");
@ -323,7 +324,8 @@ private static String createSimpleOutgoingMessageTag( String messageID,
messageBuff.append("<table width=\"100%\" ");
messageBuff.append(NAME_ATTRIBUTE + "=\""
+ Tag.TABLE.toString() + "\" ");
+ Tag.TABLE.toString()
+ "\" id=\"messageHeader\"");
messageBuff.append("style=\"background-color:");
messageBuff.append(MSG_NAME_BACKGROUND).append(";\">");
messageBuff.append("<tr>");
@ -390,7 +392,7 @@ private static String createAdvancedIncomingMessageTag(
messageBuff.append("<table width=\"100%\" ");
messageBuff.append(NAME_ATTRIBUTE + "=\""
+ Tag.TABLE.toString() + "\">");
+ Tag.TABLE.toString() + "\" id=\"messageHeader\">");
messageBuff.append("<tr>");
messageBuff.append("<td valign=\"top\">");
messageBuff.append(
@ -493,7 +495,8 @@ private static String createAdvancedOutgoingMessageTag( String messageID,
// Construct the message.
messageBuff.append("<table width=\"100%\" ");
messageBuff.append(NAME_ATTRIBUTE + "=\""
+ Tag.TABLE.toString() + "\">");
+ Tag.TABLE.toString()
+ "\" id=\"messageHeader\">");
messageBuff.append("<tr>");
messageBuff.append("<td valign=\"top\">");
messageBuff.append(

Loading…
Cancel
Save