try
{
// Save the old row key
Object oldRowKey = _messagesTable.getRowKey();
Folder folder = _folderData.getFolder();
folder.open(Folder.READ_WRITE);
List<Message> messageList = new ArrayList<Message>();
try
{
while (selection.hasNext())
{
String rowKey = (String) selection.next();
_messagesTable.setRowKey(rowKey);
MessageData message = (MessageData) _messagesTable.getRowData();
if (message == null)
{
_LOG.log(Level.WARNING, "Couldn't find message for row {0}",
rowKey);
}
else
{
_LOG.log(Level.FINE, "Attempting to delete message {0}",
message.getSubject());
// Get the actual Message object
messageList.add(message.getMessage());
}
}
Message[] messages =
messageList.toArray(new Message[messageList.size()]);
folder.setFlags(messages, new Flags(Flags.Flag.DELETED), true);
// clear the selection:
_messagesTable.getSelectedRowKeys().clear();
// refresh the folder so that the little 'deleted' icons show up:
refresh();
}
finally
{
// Restore the old key
_messagesTable.setRowKey(oldRowKey);
folder.close(false);
}
}
catch (MessagingException me)
{
_LOG.log(Level.WARNING, "Couldn't delete", me);