diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialog.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialog.java index 5b3cd7e829..522551a9b1 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialog.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialog.java @@ -24,48 +24,39 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.JDialog; import javax.swing.JFrame; -import org.sleuthkit.autopsy.casemodule.AddImageAction; +import javax.swing.SwingUtilities; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.datamodel.Image; /** * IngestDialog shown on Case.CASE_ADD_IMAGE property change */ -public class IngestDialog extends JDialog implements PropertyChangeListener{ +public class IngestDialog extends JDialog { - private static IngestDialog instance; private static final String TITLE = "Ingest Modules"; private static Dimension DIMENSIONS = new Dimension(300, 300); - private Image image; + private IngestDialogPanel panel = new IngestDialogPanel(); + + private static Logger logger = Logger.getLogger(IngestDialog.class.getName()); public IngestDialog(JFrame frame, String title, boolean modal) { super(frame, title, modal); - Case.addPropertyChangeListener(this); } public IngestDialog(){ this(new JFrame(TITLE), TITLE, true); } - /** - * Get the Ingest dialog - * @return the startup window singleton - */ - public static synchronized IngestDialog getInstance() { - if (IngestDialog.instance == null) { - JFrame frame = new JFrame(TITLE); - IngestDialog.instance = new IngestDialog(frame, TITLE, true); - } - return instance; - } + /** * Shows the Ingest dialog. */ - public void display() { - + void display() { Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); // set the popUp window / JFrame @@ -76,8 +67,6 @@ public class IngestDialog extends JDialog implements PropertyChangeListener{ // set the location of the popUp Window on the center of the screen setLocation((screenDimension.width - w) / 2, (screenDimension.height - h) / 2); - IngestDialogPanel panel = new IngestDialogPanel(image); - // add the command to close the window to both buttons panel.setCloseButtonActionListener(new ActionListener() { @Override @@ -96,24 +85,20 @@ public class IngestDialog extends JDialog implements PropertyChangeListener{ pack(); setResizable(false); setVisible(true); - } + + void setImage(Image image) { + panel.setImage(image); + } + /** * Closes the Ingest dialog */ public void close() { - this.dispose(); + setVisible(false); + dispose(); } - @Override - public void propertyChange(PropertyChangeEvent evt) { - String changed = evt.getPropertyName(); - Object newValue = evt.getNewValue(); - - if(changed.equals(Case.CASE_ADD_IMAGE)){ - this.image = (Image) newValue; - display(); - } - } + } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java index 4de2f5f1b0..d3110e4730 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java @@ -58,14 +58,19 @@ public class IngestDialogPanel extends javax.swing.JPanel { }; /** Creates new form IngestDialogPanel */ - public IngestDialogPanel(Image image) { + IngestDialogPanel() { services = new ArrayList(); serviceStates = new HashMap(); - this.image = image; initComponents(); customizeComponents(); } + void setImage(Image image) { + this.image = image; + } + + + private void customizeComponents(){ this.manager = IngestTopComponent.getDefault().getManager(); @@ -169,6 +174,7 @@ public class IngestDialogPanel extends javax.swing.JPanel { }// //GEN-END:initComponents private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startButtonActionPerformed + this.manager = IngestTopComponent.getDefault().getManager(); if (manager == null) { return; } @@ -182,11 +188,8 @@ public class IngestDialogPanel extends javax.swing.JPanel { } } - List images = new ArrayList(); - images.add(image); - - if (!services.isEmpty() && !images.isEmpty()) { - manager.execute(servicesToStart, images); + if (!services.isEmpty() ) { + manager.execute(servicesToStart, image); } }//GEN-LAST:event_startButtonActionPerformed diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java index 378ff51561..1f011ef215 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java @@ -18,33 +18,26 @@ */ package org.sleuthkit.autopsy.ingest; -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JOptionPane; -import javax.swing.JScrollPane; -import javax.swing.JSlider; +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; -import org.sleuthkit.datamodel.SleuthkitCase; -import org.sleuthkit.datamodel.TskException; /** * Top component explorer for the Ingest module. @@ -57,7 +50,6 @@ public final class IngestTopComponent extends TopComponent implements DataExplor private Collection services; private Map serviceStates; private IngestMessagePanel messagePanel; - private IngestDialog iD; private ActionListener serviceSelListener = new ActionListener() { @Override @@ -70,7 +62,7 @@ public final class IngestTopComponent extends TopComponent implements DataExplor private IngestTopComponent() { services = new ArrayList(); serviceStates = new HashMap(); - iD = new IngestDialog(); + initComponents(); customizeComponents(); setName(NbBundle.getMessage(IngestTopComponent.class, "CTL_IngestTopComponent")); @@ -151,6 +143,17 @@ public final class IngestTopComponent extends TopComponent implements DataExplor } //clear inbox messagePanel.clearMessages(); + } else if (evt.getPropertyName().equals(Case.CASE_ADD_IMAGE)) { + final Image image = (Image) evt.getNewValue(); + final IngestDialog ingestDialog = new IngestDialog(); + ingestDialog.setImage(image); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + ingestDialog.display(); + } + }); + } } }); @@ -158,26 +161,27 @@ public final class IngestTopComponent extends TopComponent implements DataExplor /* Collection imageServices = IngestManager.enumerateImageServices(); for (IngestServiceImage service : imageServices) { - final String serviceName = service.getName(); - services.add(service); - JCheckBox checkbox = new JCheckBox(serviceName, true); - checkbox.setName(serviceName); - checkbox.addActionListener(serviceSelListener); - servicesPanel.add(checkbox); - serviceStates.put(serviceName, true); + final String serviceName = service.getName(); + services.add(service); + JCheckBox checkbox = new JCheckBox(serviceName, true); + checkbox.setName(serviceName); + checkbox.addActionListener(serviceSelListener); + servicesPanel.add(checkbox); + serviceStates.put(serviceName, true); } - + Collection fsServices = IngestManager.enumerateFsContentServices(); for (IngestServiceFsContent service : fsServices) { - final String serviceName = service.getName(); - services.add(service); - JCheckBox checkbox = new JCheckBox(serviceName, true); - checkbox.setName(serviceName); - checkbox.addActionListener(serviceSelListener); - servicesPanel.add(checkbox); - serviceStates.put(serviceName, true); + final String serviceName = service.getName(); + services.add(service); + JCheckBox checkbox = new JCheckBox(serviceName, true); + checkbox.setName(serviceName); + checkbox.addActionListener(serviceSelListener); + servicesPanel.add(checkbox); + serviceStates.put(serviceName, true); }*/ + } /** This method is called from within the constructor to @@ -294,7 +298,6 @@ public final class IngestTopComponent extends TopComponent implements DataExplor .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; @@ -308,7 +311,9 @@ public final class IngestTopComponent extends TopComponent implements DataExplor @Override public void componentOpened() { logger.log(Level.INFO, "IngestTopComponent opened()"); - manager = new IngestManager(this); + if (manager == null) { + manager = new IngestManager(this); + } } @Override @@ -363,8 +368,8 @@ public final class IngestTopComponent extends TopComponent implements DataExplor void updateProgress(int progress) { this.mainProgressBar.setValue(progress); } - - IngestManager getManager(){ + + IngestManager getManager() { return this.manager; } }