From ae28fd06a372dbddac301f618e6f88e22242db78 Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 23 Feb 2012 13:45:18 -0500 Subject: [PATCH] Inbox message: details view in the same position, using layers, replacing message view --- .../autopsy/ingest/Bundle.properties | 8 +- .../ingest/IngestMessageDetailsPanel.form | 96 +++++++ .../ingest/IngestMessageDetailsPanel.java | 180 +++++++++++++ .../ingest/IngestMessageMainPanel.form | 34 +++ .../ingest/IngestMessageMainPanel.java | 156 +++++++++++ .../autopsy/ingest/IngestMessagePanel.form | 61 +---- .../autopsy/ingest/IngestMessagePanel.java | 139 +++------- .../ingest/IngestMessageTopComponent.form | 4 +- .../ingest/IngestMessageTopComponent.java | 18 +- .../autopsy/ingest/IngestTopComponent.form | 182 ------------- .../autopsy/ingest/IngestTopComponent.java | 255 ------------------ .../ingest/floatingLeftBottomWsmode.xml | 4 +- 12 files changed, 522 insertions(+), 615 deletions(-) create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.form create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.java delete mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.form delete mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties index 3e58d9c932..b195fc434e 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties @@ -22,7 +22,7 @@ IngestTopComponent.refreshFreqLabel.text=Refresh frequency IngestDialogPanel.freqSliderLabel.text=Refresh interval (minutes) IngestDialogPanel.freqSliderLabel.toolTipText=null IngestDialogPanel.freqSlider.toolTipText=Maximum time in minutes for ingest modules to refresh and report data to user.
Lower value presents data more frequently but may impact performance and lenghten the overall ingest run.
Higher value is improves performance, but data will be refreshed less frequently (recommended for an unattended run).
The value can be adjusted only when no ingest module is currently running -IngestMessagePanel.viewArtifactButton.toolTipText=Open in a viewer -IngestMessagePanel.viewArtifactButton.text=View Artifact -IngestMessagePanel.detailsViewerPane.contentType=text/html -IngestMessagePanel.viewContentButton.text=View Content +IngestMessageDetailsPanel.backButton.text=B +IngestMessageDetailsPanel.viewArtifactButton.text=View Artifact +IngestMessageDetailsPanel.viewContentButton.text=View Content +IngestMessageDetailsPanel.messageDetailsPane.contentType=text/html diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form new file mode 100644 index 0000000000..beaa9205bf --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form @@ -0,0 +1,96 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java new file mode 100644 index 0000000000..13dc708666 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java @@ -0,0 +1,180 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2011 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.ingest; + +import org.openide.util.Lookup; +import org.sleuthkit.autopsy.corecomponentinterfaces.BlackboardResultViewer; +import org.sleuthkit.datamodel.BlackboardArtifact; + +/** + * Details panel within IngestMessagePanel + */ +class IngestMessageDetailsPanel extends javax.swing.JPanel { + + private IngestMessageMainPanel mainPanel; + + /** Creates new form IngestMessageDetailsPanel */ + IngestMessageDetailsPanel(IngestMessageMainPanel mainPanel) { + this.mainPanel = mainPanel; + initComponents(); + customizeComponents(); + } + + private void customizeComponents() { + messageDetailsPane.setContentType("text/html"); + viewArtifactButton.setEnabled(false); + viewContentButton.setEnabled(false); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + backButton = new javax.swing.JButton(); + viewArtifactButton = new javax.swing.JButton(); + viewContentButton = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + messageDetailsPane = new javax.swing.JEditorPane(); + + backButton.setText(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.backButton.text")); // NOI18N + backButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + backButtonActionPerformed(evt); + } + }); + + viewArtifactButton.setText(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.viewArtifactButton.text")); // NOI18N + viewArtifactButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + viewArtifactButtonActionPerformed(evt); + } + }); + + viewContentButton.setText(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.viewContentButton.text")); // NOI18N + viewContentButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + viewContentButtonActionPerformed(evt); + } + }); + + messageDetailsPane.setBackground(new java.awt.Color(221, 221, 235)); + messageDetailsPane.setContentType(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.messageDetailsPane.contentType")); // NOI18N + messageDetailsPane.setEditable(false); + jScrollPane1.setViewportView(messageDetailsPane); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(backButton) + .addGap(18, 18, 18) + .addComponent(viewArtifactButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(viewContentButton) + .addContainerGap(28, Short.MAX_VALUE)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(backButton) + .addComponent(viewArtifactButton) + .addComponent(viewContentButton)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void viewContentButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewContentButtonActionPerformed + viewContent(evt); + }//GEN-LAST:event_viewContentButtonActionPerformed + + private void viewArtifactButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewArtifactButtonActionPerformed + viewArtifact(evt); + }//GEN-LAST:event_viewArtifactButtonActionPerformed + + private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed + mainPanel.showMessages(); + }//GEN-LAST:event_backButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton backButton; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JEditorPane messageDetailsPane; + private javax.swing.JButton viewArtifactButton; + private javax.swing.JButton viewContentButton; + // End of variables declaration//GEN-END:variables + + private void viewArtifact(java.awt.event.ActionEvent evt) { + + final IngestMessage message = mainPanel.getMessagePanel().getSelectedMessage(); + if (message != null) { + BlackboardArtifact art = message.getData(); + if (art != null) { + BlackboardResultViewer v = Lookup.getDefault().lookup(BlackboardResultViewer.class); + v.viewArtifact(art); + } + } + + } + + private void viewContent(java.awt.event.ActionEvent evt) { + + final IngestMessage message = mainPanel.getMessagePanel().getSelectedMessage(); + if (message != null) { + BlackboardArtifact art = message.getData(); + if (art != null) { + BlackboardResultViewer v = Lookup.getDefault().lookup(BlackboardResultViewer.class); + v.viewArtifactContent(art); + } + } + } + + + void showDetails(int rowNumber) { + final IngestMessage message = mainPanel.getMessagePanel().getMessage(rowNumber); + if (message != null) { + String details = message.getDetails(); + if (details != null) { + this.messageDetailsPane.setText(details); + } else { + this.messageDetailsPane.setText(""); + } + if (message.getData() != null) { + viewArtifactButton.setEnabled(true); + viewContentButton.setEnabled(true); + } else { + viewArtifactButton.setEnabled(false); + viewContentButton.setEnabled(false); + } + } else { + viewArtifactButton.setEnabled(false); + viewContentButton.setEnabled(false); + messageDetailsPane.setText(""); + } + } + + +} diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.form new file mode 100644 index 0000000000..e8a37cb403 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.form @@ -0,0 +1,34 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.java new file mode 100644 index 0000000000..e4d005d41a --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageMainPanel.java @@ -0,0 +1,156 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2011 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.ingest; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; +import java.util.logging.Logger; +import javax.swing.JLayeredPane; + +/** + * the main layered pane container for messages table (IngestMessagePanel) + * and details view (IngestMessageDetailsPanel) + */ +public class IngestMessageMainPanel extends javax.swing.JPanel { + + private IngestMessagePanel messagePanel; + private IngestMessageDetailsPanel detailsPanel; + private Logger logger = Logger.getLogger(IngestMessageMainPanel.class.getName()); + + /** Creates new form IngestMessageMainPanel */ + public IngestMessageMainPanel() { + initComponents(); + customizeComponents(); + } + + private void customizeComponents() { + messagePanel = new IngestMessagePanel(this); + detailsPanel = new IngestMessageDetailsPanel(this); + + //we need to handle resizing ourselves due to absence of layout manager + //in layered layout + this.addComponentListener(new ComponentListener() { + + @Override + public void componentHidden(ComponentEvent e) { + } + + @Override + public void componentMoved(ComponentEvent e) { + } + + @Override + public void componentShown(ComponentEvent e) { + + } + + @Override + public void componentResized(ComponentEvent e) { + setSize(); + } + }); + + layeredPane.add(messagePanel, JLayeredPane.PALETTE_LAYER); + layeredPane.add(detailsPanel, JLayeredPane.DEFAULT_LAYER); + + //TODO handle the initial size better so it resizes to current tc size + //(somehow the initial tc size is not set correctly) + //setBackground(Color.red); + //layeredPane.setBackground(Color.GREEN); + //messagePanel.setBackground(Color.blue); + Dimension dim = getPreferredSize(); + messagePanel.setSize(dim); + detailsPanel.setSize(dim); + + //messagePanel.setBounds(0, 0, dim.width, dim.height); + // detailsPanel.setBounds(0, 0, dim.width, dim.height); + + this.setOpaque(true); + } + + private void setSize() { + //we need to handle resizing ourselves due to absence of layout manager + //in layered layout + Dimension dim = getSize(); + messagePanel.setPreferredSize(dim); + detailsPanel.setPreferredSize(dim); + + messagePanel.setBounds(0, 0, dim.width, dim.height); + detailsPanel.setBounds(0, 0, dim.width, dim.height); + + } + + IngestMessagePanel getMessagePanel() { + return messagePanel; + } + + IngestMessageDetailsPanel getDetailsPanel() { + return detailsPanel; + } + + void showMessages() { + layeredPane.setLayer(detailsPanel, JLayeredPane.DEFAULT_LAYER); + layeredPane.setLayer(messagePanel, JLayeredPane.PALETTE_LAYER); + } + + void showDetails(int rowNumber) { + detailsPanel.showDetails(rowNumber); + + layeredPane.setLayer(detailsPanel, JLayeredPane.PALETTE_LAYER); + layeredPane.setLayer(messagePanel, JLayeredPane.DEFAULT_LAYER); + + } + + public void addMessage(IngestMessage ingestMessage) { + messagePanel.addMessage(ingestMessage); + } + + public void clearMessages() { + messagePanel.clearMessages(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + layeredPane = new javax.swing.JLayeredPane(); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(layeredPane, javax.swing.GroupLayout.DEFAULT_SIZE, 454, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(layeredPane, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLayeredPane layeredPane; + // End of variables declaration//GEN-END:variables +} diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.form index fa69076fa3..75c355a3d0 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.form +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.form @@ -19,28 +19,12 @@ - - - - - - - - - - - - - - - - - + @@ -90,48 +74,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java index a25c33423f..1389d7f1be 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagePanel.java @@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.ingest; import java.awt.Color; import java.awt.Component; +import java.awt.Dimension; import java.awt.Font; import java.util.ArrayList; import java.util.List; @@ -32,28 +33,42 @@ import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; -import org.openide.util.Lookup; -import org.sleuthkit.autopsy.corecomponentinterfaces.BlackboardResultViewer; import org.sleuthkit.autopsy.ingest.IngestMessage.*; -import org.sleuthkit.datamodel.BlackboardArtifact; /** * Notification window showing messages from services to user * */ -public class IngestMessagePanel extends javax.swing.JPanel { +class IngestMessagePanel extends javax.swing.JPanel { private MessageTableModel tableModel; + private IngestMessageMainPanel mainPanel; private static Font visitedFont = new Font("Arial", Font.PLAIN, 11); private static Font notVisitedFont = new Font("Arial", Font.BOLD, 11); private int lastRowSelected = -1; /** Creates new form IngestMessagePanel */ - public IngestMessagePanel() { + public IngestMessagePanel(IngestMessageMainPanel mainPanel) { + this.mainPanel = mainPanel; tableModel = new MessageTableModel(); initComponents(); customizeComponents(); } + + int getLastRowSelected() { + return this.lastRowSelected; + } + + IngestMessage getSelectedMessage() { + if (lastRowSelected < 0) + return null; + + return tableModel.getMessage(lastRowSelected); + } + + IngestMessage getMessage(int rowNumber) { + return tableModel.getMessage(rowNumber); + } /** This method is called from within the constructor to * initialize the form. @@ -66,10 +81,6 @@ public class IngestMessagePanel extends javax.swing.JPanel { jScrollPane1 = new javax.swing.JScrollPane(); messageTable = new javax.swing.JTable(); - jScrollPane2 = new javax.swing.JScrollPane(); - detailsViewerPane = new javax.swing.JEditorPane(); - viewArtifactButton = new javax.swing.JButton(); - viewContentButton = new javax.swing.JButton(); setOpaque(false); @@ -90,89 +101,28 @@ public class IngestMessagePanel extends javax.swing.JPanel { messageTable.getTableHeader().setReorderingAllowed(false); jScrollPane1.setViewportView(messageTable); - detailsViewerPane.setBackground(new java.awt.Color(221, 221, 235)); - detailsViewerPane.setContentType(org.openide.util.NbBundle.getMessage(IngestMessagePanel.class, "IngestMessagePanel.detailsViewerPane.contentType")); // NOI18N - detailsViewerPane.setEditable(false); - jScrollPane2.setViewportView(detailsViewerPane); - - viewArtifactButton.setText(org.openide.util.NbBundle.getMessage(IngestMessagePanel.class, "IngestMessagePanel.viewArtifactButton.text")); // NOI18N - viewArtifactButton.setToolTipText(org.openide.util.NbBundle.getMessage(IngestMessagePanel.class, "IngestMessagePanel.viewArtifactButton.toolTipText")); // NOI18N - viewArtifactButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - viewArtifactButtonActionPerformed(evt); - } - }); - - viewContentButton.setText(org.openide.util.NbBundle.getMessage(IngestMessagePanel.class, "IngestMessagePanel.viewContentButton.text")); // NOI18N - viewContentButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - viewContentButtonActionPerformed(evt); - } - }); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(106, Short.MAX_VALUE) - .addComponent(viewArtifactButton) - .addGap(18, 18, 18) - .addComponent(viewContentButton)) - .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 314, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 314, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(viewContentButton) - .addComponent(viewArtifactButton)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE) ); }// //GEN-END:initComponents - private void viewArtifactButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewArtifactButtonActionPerformed - if (lastRowSelected < 0) { - return; - } - final IngestMessage message = tableModel.getMessage(lastRowSelected); - if (message != null) { - BlackboardArtifact art = message.getData(); - if (art != null) { - BlackboardResultViewer v = Lookup.getDefault().lookup(BlackboardResultViewer.class); - v.viewArtifact(art); - } - } - - }//GEN-LAST:event_viewArtifactButtonActionPerformed - - private void viewContentButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewContentButtonActionPerformed - if (lastRowSelected < 0) { - return; - } - final IngestMessage message = tableModel.getMessage(lastRowSelected); - if (message != null) { - BlackboardArtifact art = message.getData(); - if (art != null) { - BlackboardResultViewer v = Lookup.getDefault().lookup(BlackboardResultViewer.class); - v.viewArtifactContent(art); - } - } - }//GEN-LAST:event_viewContentButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JEditorPane detailsViewerPane; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable messageTable; - private javax.swing.JButton viewArtifactButton; - private javax.swing.JButton viewContentButton; // End of variables declaration//GEN-END:variables private void customizeComponents() { + mainPanel.setOpaque(true); + jScrollPane1.setOpaque(true); + messageTable.setOpaque(false); + jScrollPane1.setWheelScrollingEnabled(true); messageTable.setAutoscrolls(true); @@ -184,7 +134,7 @@ public class IngestMessagePanel extends javax.swing.JPanel { //customize column witdhs //messageTable.setSize(260, 260); - messageTable.setSize(messageTable.getParent().getPreferredSize()); + //messageTable.setSize(messageTable.getParent().getPreferredSize()); final int width = messageTable.getSize().width; TableColumn column = null; for (int i = 0; i < 2; i++) { @@ -201,12 +151,14 @@ public class IngestMessagePanel extends javax.swing.JPanel { messageTable.setColumnSelectionAllowed(false); messageTable.setRowSelectionAllowed(true); messageTable.getSelectionModel().addListSelectionListener(new MessageVisitedSelection()); - - detailsViewerPane.setContentType("text/html"); - viewArtifactButton.setEnabled(false); - viewContentButton.setEnabled(false); - } + + @Override + public void setSize(Dimension d) { + super.setSize(d); + messageTable.setSize(d); + } + public void addMessage(IngestMessage m) { tableModel.addMessage(m); @@ -223,28 +175,6 @@ public class IngestMessagePanel extends javax.swing.JPanel { lastRowSelected = rowNumber; } - private void updateDetails(int rowNumber) { - final IngestMessage message = tableModel.getMessage(rowNumber); - if (message != null) { - String details = message.getDetails(); - if (details != null) { - this.detailsViewerPane.setText(details); - } else { - this.detailsViewerPane.setText(""); - } - if (message.getData() != null) { - viewArtifactButton.setEnabled(true); - viewContentButton.setEnabled(true); - } else { - viewArtifactButton.setEnabled(false); - viewContentButton.setEnabled(false); - } - } else { - viewArtifactButton.setEnabled(false); - viewContentButton.setEnabled(false); - detailsViewerPane.setText(""); - } - } private class MessageTableModel extends AbstractTableModel { //data @@ -453,11 +383,12 @@ public class IngestMessagePanel extends javax.swing.JPanel { } if (selected != -1) { setVisited(selected); - updateDetails(selected); + mainPanel.showDetails(selected); } } } } + } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form index b8a67a0dd3..37e264e504 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form @@ -16,12 +16,12 @@ - + - + diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java index ab795b5570..7dcfce0ae4 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.ingest; import java.awt.BorderLayout; +import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; @@ -41,7 +42,7 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing private static IngestMessageTopComponent instance; private static final Logger logger = Logger.getLogger(IngestMessageTopComponent.class.getName()); - private IngestMessagePanel messagePanel; + private IngestMessageMainPanel messagePanel; private IngestManager manager; private static String PREFERRED_ID = "IngestMessageTopComponent"; @@ -86,11 +87,11 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 385, Short.MAX_VALUE) + .addGap(0, 332, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 362, Short.MAX_VALUE) + .addGap(0, 210, Short.MAX_VALUE) ); }// //GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables @@ -103,6 +104,8 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing if (manager == null) { manager = IngestManager.getDefault(); } + + //messagePanel.setSize(this.getSize()); } @Override @@ -131,6 +134,8 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing mode.dockInto(this); this.open(); } + + //messagePanel.setSize(this.getSize()); } @Override @@ -216,11 +221,12 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing private void customizeComponents() { //custom GUI setup not done by builder - - messagePanel = new IngestMessagePanel(); - messagePanel.setOpaque(false); + messagePanel = new IngestMessageMainPanel(); + messagePanel.setOpaque(true); setLayout(new BorderLayout()); add(messagePanel, BorderLayout.CENTER); + + //this.setBackground(Color.yellow); } /** diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.form deleted file mode 100644 index 9da2a9ccfc..0000000000 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.form +++ /dev/null @@ -1,182 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java deleted file mode 100644 index 15de3e3e84..0000000000 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2011 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.ingest; - -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import org.openide.util.NbBundle; -import org.openide.windows.TopComponent; -import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.corecomponentinterfaces.DataExplorer; -import org.sleuthkit.datamodel.Image; - -/** - * Top component explorer for the Ingest module. - */ -public final class IngestTopComponent extends TopComponent implements DataExplorer { - - private static IngestTopComponent instance; - private static final Logger logger = Logger.getLogger(IngestTopComponent.class.getName()); - private IngestMessagePanel messagePanel; - - private IngestTopComponent() { - initComponents(); - // customizeComponents(); - //registerListeners(); - setName(NbBundle.getMessage(IngestTopComponent.class, "CTL_IngestTopComponent")); - setToolTipText(NbBundle.getMessage(IngestTopComponent.class, "HINT_IngestTopComponent")); - //putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE); - putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE); - - } - - public static synchronized IngestTopComponent getDefault() { - if (instance == null) { - instance = new IngestTopComponent(); - } - return instance; - } - - @Override - public TopComponent getTopComponent() { - return this; - } - - @Override - public void propertyChange(PropertyChangeEvent evt) { - logger.log(Level.INFO, "Unhandled property change: " + evt.getPropertyName()); - } - - @Override - public int getPersistenceType() { - return TopComponent.PERSISTENCE_NEVER; - } - - - private void customizeComponents() { - //custom GUI setup not done by builder - - messagePanel = new IngestMessagePanel(); - - messagePanel.setOpaque(false); - messageFrame.setOpaque(false); - messageFrame.addComponentListener(new ComponentAdapter() { - - @Override - public void componentResized(ComponentEvent e) { - - super.componentResized(e); - messageFrame.setPreferredSize(messageFrame.getSize()); - } - }); - - //make messageframe on top - this.setComponentZOrder(controlPanel, 1); - messageFrame.setContentPane(messagePanel); - messageFrame.pack(); - messageFrame.setVisible(true); - - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - // //GEN-BEGIN:initComponents - private void initComponents() { - - mainScrollPane = new javax.swing.JScrollPane(); - mainPanel = new javax.swing.JPanel(); - messageFrame = new javax.swing.JInternalFrame(); - controlPanel = new javax.swing.JPanel(); - refreshFreqLabel = new javax.swing.JLabel(); - mainProgressBar = new javax.swing.JProgressBar(); - ingestProgressLabel = new javax.swing.JLabel(); - - mainScrollPane.setPreferredSize(new java.awt.Dimension(322, 749)); - - mainPanel.setPreferredSize(new java.awt.Dimension(322, 749)); - - messageFrame.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("InternalFrame.inactiveTitleBackground"), 3, true)); - messageFrame.setMaximizable(true); - messageFrame.setResizable(true); - messageFrame.setTitle(org.openide.util.NbBundle.getMessage(IngestTopComponent.class, "IngestTopComponent.messageFrame.title")); // NOI18N - messageFrame.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); - messageFrame.setFrameIcon(null); - messageFrame.setOpaque(true); - messageFrame.setPreferredSize(new java.awt.Dimension(280, 260)); - messageFrame.setVisible(true); - - javax.swing.GroupLayout messageFrameLayout = new javax.swing.GroupLayout(messageFrame.getContentPane()); - messageFrame.getContentPane().setLayout(messageFrameLayout); - messageFrameLayout.setHorizontalGroup( - messageFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 274, Short.MAX_VALUE) - ); - messageFrameLayout.setVerticalGroup( - messageFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 231, Short.MAX_VALUE) - ); - - org.openide.awt.Mnemonics.setLocalizedText(refreshFreqLabel, org.openide.util.NbBundle.getMessage(IngestTopComponent.class, "IngestTopComponent.refreshFreqLabel.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(ingestProgressLabel, org.openide.util.NbBundle.getMessage(IngestTopComponent.class, "IngestTopComponent.ingestProgressLabel.text")); // NOI18N - - javax.swing.GroupLayout controlPanelLayout = new javax.swing.GroupLayout(controlPanel); - controlPanel.setLayout(controlPanelLayout); - controlPanelLayout.setHorizontalGroup( - controlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(controlPanelLayout.createSequentialGroup() - .addGroup(controlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(controlPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(mainProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 248, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(controlPanelLayout.createSequentialGroup() - .addGap(90, 90, 90) - .addComponent(ingestProgressLabel))) - .addContainerGap(22, Short.MAX_VALUE)) - .addGroup(controlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(controlPanelLayout.createSequentialGroup() - .addGap(74, 74, 74) - .addComponent(refreshFreqLabel) - .addContainerGap(116, Short.MAX_VALUE))) - ); - controlPanelLayout.setVerticalGroup( - controlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(controlPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(mainProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ingestProgressLabel) - .addContainerGap(524, Short.MAX_VALUE)) - .addGroup(controlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(controlPanelLayout.createSequentialGroup() - .addGap(555, 555, 555) - .addComponent(refreshFreqLabel) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - ); - - javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); - mainPanel.setLayout(mainPanelLayout); - mainPanelLayout.setHorizontalGroup( - mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addGap(10, 10, 10) - .addComponent(controlPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap(48, Short.MAX_VALUE)) - .addGroup(mainPanelLayout.createSequentialGroup() - .addComponent(messageFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(58, Short.MAX_VALUE)) - ); - mainPanelLayout.setVerticalGroup( - mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(controlPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(27, 27, 27) - .addComponent(messageFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(415, 415, 415)) - ); - - mainScrollPane.setViewportView(mainPanel); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 771, Short.MAX_VALUE) - ); - }// //GEN-END:initComponents - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JPanel controlPanel; - private javax.swing.JLabel ingestProgressLabel; - private javax.swing.JPanel mainPanel; - private javax.swing.JProgressBar mainProgressBar; - private javax.swing.JScrollPane mainScrollPane; - private javax.swing.JInternalFrame messageFrame; - private javax.swing.JLabel refreshFreqLabel; - // End of variables declaration//GEN-END:variables - - @Override - public void componentOpened() { - logger.log(Level.INFO, "IngestTopComponent opened()"); - // IngestManager.getDefault(); //create initial instance - - } - - @Override - public void componentClosed() { - logger.log(Level.INFO, "IngestTopComponent closed()"); - - } - - void writeProperties(java.util.Properties p) { - // better to version settings since initial version as advocated at - // http://wiki.apidesign.org/wiki/PropertyFiles - p.setProperty("version", "1.0"); - - } - - void readProperties(java.util.Properties p) { - String version = p.getProperty("version"); - - } - - - - -} diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml index 6a1a962387..6909c42876 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml @@ -9,10 +9,10 @@ - + - +