diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties index 26945d6178..23c517b19b 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties @@ -27,3 +27,5 @@ IngestMessagePanel.sortByLabel.text=Sort by: IngestMessagePanel.sortByComboBox.toolTipText=Sort messages by time (chronological order) or message priority IngestDialogPanel.advancedButton.text=Advanced AdvancedConfigurationDialog.applyButton.text=Apply +IngestMessagesToolbar.ingestMessagesButton.text=0 +IngestMessagesToolbar.ingestMessagesButton.toolTipText=Ingest Messages diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java index 273c5e64b9..55727cd0ce 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java @@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.ingest; import java.awt.Color; import java.awt.Component; import java.awt.Font; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -51,6 +53,9 @@ class IngestMessagePanel extends javax.swing.JPanel { private static Font notVisitedFont = new Font("Arial", Font.BOLD, 11); private static Color ERROR_COLOR = new Color(255, 90, 90); private int lastRowSelected = -1; + + private static PropertyChangeSupport messagePcs = new PropertyChangeSupport(IngestMessagePanel.class); + static final String MESSAGE_CHANGE_EVT = "MESSAGE_CHANGE_EVT"; //number of unread messages changed /** Creates new form IngestMessagePanel */ public IngestMessagePanel(IngestMessageMainPanel mainPanel) { @@ -75,6 +80,10 @@ class IngestMessagePanel extends javax.swing.JPanel { IngestMessageGroup getMessageGroup(int rowNumber) { return tableModel.getMessageGroup(rowNumber); } + + synchronized static void addPropertyChangeSupportListener(PropertyChangeListener l) { + messagePcs.addPropertyChangeListener(l); + } /** This method is called from within the constructor to * initialize the form. @@ -215,18 +224,25 @@ class IngestMessagePanel extends javax.swing.JPanel { } public void addMessage(IngestMessage m) { + final int origMsgGroups = tableModel.getNumberUnreadGroups(); tableModel.addMessage(m); + messagePcs.firePropertyChange(TOOL_TIP_TEXT_KEY, origMsgGroups, tableModel.getNumberUnreadGroups()); + //autoscroll //messageTable.scrollRectToVisible(messageTable.getCellRect(messageTable.getRowCount() - 1, messageTable.getColumnCount(), true)); } public void clearMessages() { + final int origMsgGroups = tableModel.getNumberUnreadGroups(); tableModel.clearMessages(); + messagePcs.firePropertyChange(TOOL_TIP_TEXT_KEY, origMsgGroups, 0); } private void setVisited(int rowNumber) { + final int origMsgGroups = tableModel.getNumberUnreadGroups(); tableModel.setVisited(rowNumber); lastRowSelected = rowNumber; + messagePcs.firePropertyChange(TOOL_TIP_TEXT_KEY, origMsgGroups, tableModel.getNumberUnreadGroups()); } private class MessageTableModel extends AbstractTableModel { @@ -257,8 +273,38 @@ class IngestMessagePanel extends javax.swing.JPanel { @Override public int getRowCount() { + return getNumberGroups(); + } + + int getNumberGroups() { return messageData.size(); } + + int getNumberMessages() { + int total = 0; + for (TableEntry e : messageData) { + total += e.messageGroup.count; + } + return total; + } + + int getNumberUnreadMessages() { + int total = 0; + for (TableEntry e : messageData) { + if (e.visited == false) + total += e.messageGroup.count; + } + return total; + } + + int getNumberUnreadGroups() { + int total = 0; + for (TableEntry e : messageData) { + if (e.visited == false) + ++total; + } + return total; + } @Override public String getColumnName(int column) { @@ -715,4 +761,5 @@ class IngestMessagePanel extends javax.swing.JPanel { } } } + } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesAction.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesAction.java index 3202ce165e..0939caccf8 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesAction.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesAction.java @@ -20,14 +20,10 @@ package org.sleuthkit.autopsy.ingest; +import java.awt.Component; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.logging.Logger; -import org.openide.awt.ActionID; -import org.openide.awt.ActionReference; -import org.openide.awt.ActionReferences; -import org.openide.awt.ActionRegistration; -import org.openide.util.NbBundle.Messages; +import javax.swing.AbstractAction; +import org.openide.util.actions.Presenter; import org.openide.windows.Mode; import org.openide.windows.WindowManager; @@ -40,18 +36,15 @@ import org.openide.windows.WindowManager; // @ActionReference(path = "Toolbars/File", position = 575) //}) //@Messages("CTL_IngestMessagesAction=Messages") -public final class IngestMessagesAction implements ActionListener { +public final class IngestMessagesAction extends AbstractAction implements Presenter.Toolbar { @Override public void actionPerformed(ActionEvent e) { - IngestMessageTopComponent tc = IngestMessageTopComponent.findInstance(); - - Mode mode = WindowManager.getDefault().findMode("floatingLeftBottom"); - if (mode != null) { - //TopComponent[] tcs = mode.getTopComponents(); - mode.dockInto(tc); - tc.open(); - //tc.requestActive(); - } + + } + + @Override + public Component getToolbarPresenter() { + return new IngestMessagesToolbar(); } } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form new file mode 100644 index 0000000000..1defadefe8 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form @@ -0,0 +1,66 @@ + + +
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java new file mode 100644 index 0000000000..2eb4a62d39 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java @@ -0,0 +1,113 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2011 Basis Technology Corp. + * Contact: carrier