Inbox msg box: more selection improvements: cursor, custom select row rendering, clear selection

This commit is contained in:
adam-m 2012-03-26 20:56:46 -04:00
parent 3c9d03a58a
commit 30a2e3f9f4

View File

@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.ingest;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
import java.awt.Graphics; import java.awt.Graphics;
@ -50,6 +51,7 @@ import org.sleuthkit.datamodel.BlackboardArtifact;
class IngestMessagePanel extends javax.swing.JPanel { class IngestMessagePanel extends javax.swing.JPanel {
private MessageTableModel tableModel; private MessageTableModel tableModel;
private MessageTableRenderer renderer;
private IngestMessageMainPanel mainPanel; private IngestMessageMainPanel mainPanel;
private static Font visitedFont = new Font("Arial", Font.PLAIN, 11); private static Font visitedFont = new Font("Arial", Font.PLAIN, 11);
private static Font notVisitedFont = new Font("Arial", Font.BOLD, 11); private static Font notVisitedFont = new Font("Arial", Font.BOLD, 11);
@ -199,7 +201,7 @@ class IngestMessagePanel extends javax.swing.JPanel {
messageTable.getParent().setBackground(messageTable.getBackground()); messageTable.getParent().setBackground(messageTable.getBackground());
MessageTableRenderer renderer = new MessageTableRenderer(); renderer = new MessageTableRenderer();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
TableColumn column = messageTable.getColumnModel().getColumn(i); TableColumn column = messageTable.getColumnModel().getColumn(i);
//column.setCellRenderer(new MessageTableRenderer()); //column.setCellRenderer(new MessageTableRenderer());
@ -262,6 +264,7 @@ class IngestMessagePanel extends javax.swing.JPanel {
private void setVisited(int rowNumber) { private void setVisited(int rowNumber) {
final int origMsgGroups = tableModel.getNumberUnreadGroups(); final int origMsgGroups = tableModel.getNumberUnreadGroups();
tableModel.setVisited(rowNumber); tableModel.setVisited(rowNumber);
renderer.setSelected(rowNumber);
lastRowSelected = rowNumber; lastRowSelected = rowNumber;
messagePcs.firePropertyChange(TOOL_TIP_TEXT_KEY, origMsgGroups, tableModel.getNumberUnreadGroups()); messagePcs.firePropertyChange(TOOL_TIP_TEXT_KEY, origMsgGroups, tableModel.getNumberUnreadGroups());
} }
@ -689,6 +692,13 @@ class IngestMessagePanel extends javax.swing.JPanel {
* tooltips that show entire query string, disable selection borders * tooltips that show entire query string, disable selection borders
*/ */
private class MessageTableRenderer extends DefaultTableCellRenderer { private class MessageTableRenderer extends DefaultTableCellRenderer {
//custom selection tracking
private int selected = -1;
void setSelected(int row) {
this.selected = row;
}
@Override @Override
public Component getTableCellRendererComponent( public Component getTableCellRendererComponent(
@ -711,7 +721,8 @@ class IngestMessagePanel extends javax.swing.JPanel {
} }
if (!isSelected) { //if (!isSelected) {
if (selected != row) {
final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row); final IngestMessageGroup messageGroup = tableModel.getMessageGroup(row);
MessageType mt = messageGroup.getMessageType(); MessageType mt = messageGroup.getMessageType();
if (mt == MessageType.ERROR) { if (mt == MessageType.ERROR) {
@ -768,14 +779,17 @@ class IngestMessagePanel extends javax.swing.JPanel {
break; break;
} }
} }
selModel.clearSelection();
if (selected != -1) { if (selected != -1) {
setVisited(selected); setVisited(selected);
messageTable.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
//check if has details //check if has details
IngestMessageGroup m = getMessageGroup(selected); IngestMessageGroup m = getMessageGroup(selected);
String details = m.getDetails(); String details = m.getDetails();
if (details != null && !details.equals("")) { if (details != null && !details.equals("")) {
mainPanel.showDetails(selected); mainPanel.showDetails(selected);
} }
messageTable.setCursor(null);
} }
} }