From a8f6fcdf71b823ea51dd618284bd9109fd3eb520 Mon Sep 17 00:00:00 2001 From: adam-m Date: Wed, 15 Feb 2012 16:22:01 -0500 Subject: [PATCH 1/5] keyword search service: get case in init not constructor, as we constructor can be now invoked before case in open --- .../autopsy/keywordsearch/KeywordSearchIngestService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java index 8a6a927f0e..e2cc96cd42 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java @@ -70,7 +70,7 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent private Map> currentResults; private volatile int messageID = 0; private volatile boolean finalRun = false; - private final SleuthkitCase caseHandle = Case.getCurrentCase().getSleuthkitCase(); + private SleuthkitCase caseHandle = null; private static final String[] ingestibleExtensions = {"tar", "jar", "zip", "bzip2", "gz", "tgz", "doc", "xls", "ppt", "rtf", "pdf", "html", "xhtml", "txt", "bmp", "gif", "png", "jpeg", "tiff", "mp3", "aiff", "au", "midi", "wav", @@ -166,6 +166,8 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent @Override public void init(IngestManagerProxy managerProxy) { logger.log(Level.INFO, "init()"); + + caseHandle = Case.getCurrentCase().getSleuthkitCase(); this.managerProxy = managerProxy; From 986ee2326130ae691eac8d4eceac3eb663efabde Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 16 Feb 2012 12:11:58 -0500 Subject: [PATCH 2/5] add standalone ingest floating window top component, custom modes, remove old Ingest explorer --- .../autopsy/ingest/IngestManager.java | 6 +- .../ingest/IngestMessageTopComponent.form | 28 ++ .../ingest/IngestMessageTopComponent.java | 264 ++++++++++++++++++ .../IngestMessageTopComponentWstcref.xml | 11 + .../autopsy/ingest/IngestTopComponent.java | 81 +----- .../ingest/floatingLeftBottomWsmode.xml | 20 ++ .../autopsy/ingest/ingest-msg-icon.png | Bin 0 -> 1471 bytes .../org/sleuthkit/autopsy/ingest/layer.xml | 24 +- 8 files changed, 350 insertions(+), 84 deletions(-) create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/ingest-msg-icon.png diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java index 3c5a642cf5..68f0271b66 100755 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.ingest; -import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.text.DateFormat; @@ -46,7 +45,6 @@ import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.progress.ProgressHandleFactory; import org.openide.util.Cancellable; import org.openide.util.Lookup; -import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.ingest.IngestMessage.MessageType; import org.sleuthkit.datamodel.FsContent; import org.sleuthkit.datamodel.Image; @@ -88,7 +86,7 @@ public class IngestManager { public final static String SERVICE_STOPPED_EVT = IngestManagerEvents.SERVICE_STOPPED.name(); public final static String SERVICE_HAS_DATA_EVT = IngestManagerEvents.SERVICE_HAS_DATA.name(); //ui - private IngestUI ui = IngestTopComponent.getDefault(); + private IngestUI ui = IngestMessageTopComponent.findInstance(); //singleton private static IngestManager instance; @@ -97,8 +95,8 @@ public class IngestManager { } static synchronized IngestManager getDefault() { - logger.log(Level.INFO, "creating manager instance"); if (instance == null) { + logger.log(Level.INFO, "creating manager instance"); instance = new IngestManager(); } return instance; diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form new file mode 100644 index 0000000000..b8a67a0dd3 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form @@ -0,0 +1,28 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java new file mode 100644 index 0000000000..bae40c776a --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java @@ -0,0 +1,264 @@ +/* + * 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.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.logging.Logger; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import org.openide.util.ImageUtilities; +import org.openide.util.NbBundle; +import org.openide.windows.TopComponent; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Image; + +/** + * Top component which displays something. + */ + +//@ConvertAsProperties(dtd = "-//org.sleuthkit.autopsy.ingest//IngestMessage//EN", +//autostore = false) +//@TopComponent.Description(preferredID = "IngestMessageTopComponent", +//iconBase = "org/sleuthkit/autopsy/ingest/ingest-msg-icon.png", +//persistenceType = TopComponent.PERSISTENCE_NEVER) +//@TopComponent.Registration(mode = "floatingLeftBottom", openAtStartup = false) +//@ActionID(category = "Window", id = "org.sleuthkit.autopsy.ingest.IngestMessageTopComponent") +//@ActionReference(path = "Menu/Window" /*, position = 333 */) +//@TopComponent.OpenActionRegistration(displayName = "#CTL_IngestMessageAction", +//preferredID = "IngestMessageTopComponent") +public final class IngestMessageTopComponent extends TopComponent implements IngestUI { + + private static IngestMessageTopComponent instance; + private static final Logger logger = Logger.getLogger(IngestMessageTopComponent.class.getName()); + private IngestMessagePanel messagePanel; + private static String PREFERRED_ID = "IngestMessageTopComponent"; + + + public IngestMessageTopComponent() { + initComponents(); + customizeComponents(); + registerListeners(); + setName(NbBundle.getMessage(IngestMessageTopComponent.class, "CTL_IngestMessageTopComponent")); + setToolTipText(NbBundle.getMessage(IngestMessageTopComponent.class, "HINT_IngestMessageTopComponent")); + putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE); + //putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE); + + } + + private static synchronized IngestMessageTopComponent getDefault() { + if (instance == null) { + instance = new IngestMessageTopComponent(); + } + return instance; + } + + public static synchronized IngestMessageTopComponent findInstance() { + TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID); + if (win == null) { + return getDefault(); + } + if (win instanceof IngestMessageTopComponent) { + return (IngestMessageTopComponent) win; + } + + return getDefault(); + } + + + /** 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() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 385, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 362, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables + + @Override + public void componentOpened() { + // TODO add custom code on component opening + // WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); + IngestManager.getDefault(); //create initial instance + //TODO alternatively, reigster manager with lookup and instantiate when case is opened or image added + } + + @Override + public void componentClosed() { + // TODO add custom code on component closing + // WindowManager.getDefault().findMode("bottomSlidingSide").dockInto(this); + } + + @Override + protected void componentShowing() { + super.componentShowing(); + //WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); + } + + @Override + protected void componentHidden() { + super.componentHidden(); + //WindowManager.getDefault().findMode("bottomSlidingSide").dockInto(this); + //WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); + } + + @Override + protected void componentActivated() { + super.componentActivated(); + } + + @Override + protected void componentDeactivated() { + super.componentDeactivated(); + } + + @Override + public boolean canClose() { + return false; + } + + @Override + public int getPersistenceType() { + return TopComponent.PERSISTENCE_NEVER; + } + + @Override + public java.awt.Image getIcon() { + return ImageUtilities.loadImage( + "org/sleuthkit/autopsy/ingest/ingest-msg-icon.png"); + } + + + + 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"); + // TODO store your settings + } + + void readProperties(java.util.Properties p) { + String version = p.getProperty("version"); + // TODO read your settings according to their version + } + + private void registerListeners() { + //handle case change + Case.addPropertyChangeListener(new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) { + Case oldCase = (Case) evt.getOldValue(); + if (oldCase == null) //nothing to do, new case had been opened + { + return; + } + //stop workers if running + IngestManager.getDefault().stopAll(); + //clear inbox + clearMessages(); + } else if (evt.getPropertyName().equals(Case.CASE_ADD_IMAGE)) { + final Image image = (Image) evt.getNewValue(); + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + displayIngestDialog(image); + } + }); + + } + } + }); + } + + private void customizeComponents() { + //custom GUI setup not done by builder + + messagePanel = new IngestMessagePanel(); + messagePanel.setOpaque(false); + setLayout(new BorderLayout()); + add(messagePanel, BorderLayout.CENTER); + + //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST1")); + //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST2")); + //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST3")); + } + + /** + * Display ingest summary report in some dialog + */ + @Override + public void displayReport(String ingestReport) { + JOptionPane.showMessageDialog( + null, + ingestReport, + "File Ingest Summary", + JOptionPane.INFORMATION_MESSAGE); + } + + /** + * Display IngestMessage from service (forwarded by IngestManager) + */ + @Override + public void displayMessage(IngestMessage ingestMessage) { + addMessage(ingestMessage); + } + + @Override + public void initProgress(int maximum) { + } + + @Override + public void updateProgress(int progress) { + } + + @Override + public void clearMessages() { + clearMessages(); + } + + @Override + public void displayIngestDialog(final Image image) { + final IngestDialog ingestDialog = new IngestDialog(); + ingestDialog.setImage(image); + ingestDialog.display(); + + } + + public void addMessage(IngestMessage m) { + messagePanel.addMessage(m); + } +} diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml new file mode 100644 index 0000000000..0a085fd645 --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java index 1bdc53a342..15de3e3e84 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestTopComponent.java @@ -35,7 +35,7 @@ import org.sleuthkit.datamodel.Image; /** * Top component explorer for the Ingest module. */ -public final class IngestTopComponent extends TopComponent implements DataExplorer, IngestUI { +public final class IngestTopComponent extends TopComponent implements DataExplorer { private static IngestTopComponent instance; private static final Logger logger = Logger.getLogger(IngestTopComponent.class.getName()); @@ -43,8 +43,8 @@ public final class IngestTopComponent extends TopComponent implements DataExplor private IngestTopComponent() { initComponents(); - customizeComponents(); - registerListeners(); + // customizeComponents(); + //registerListeners(); setName(NbBundle.getMessage(IngestTopComponent.class, "CTL_IngestTopComponent")); setToolTipText(NbBundle.getMessage(IngestTopComponent.class, "HINT_IngestTopComponent")); //putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE); @@ -74,36 +74,6 @@ public final class IngestTopComponent extends TopComponent implements DataExplor return TopComponent.PERSISTENCE_NEVER; } - private void registerListeners() { - //handle case change - Case.addPropertyChangeListener(new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) { - Case oldCase = (Case) evt.getOldValue(); - if (oldCase == null) //nothing to do, new case had been opened - { - return; - } - //stop workers if running - IngestManager.getDefault().stopAll(); - //clear inbox - clearMessages(); - } else if (evt.getPropertyName().equals(Case.CASE_ADD_IMAGE)) { - final Image image = (Image) evt.getNewValue(); - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - displayIngestDialog(image); - } - }); - - } - } - }); - } private void customizeComponents() { //custom GUI setup not done by builder @@ -257,7 +227,7 @@ public final class IngestTopComponent extends TopComponent implements DataExplor @Override public void componentOpened() { logger.log(Level.INFO, "IngestTopComponent opened()"); - IngestManager.getDefault(); //create initial instance + // IngestManager.getDefault(); //create initial instance } @@ -279,46 +249,7 @@ public final class IngestTopComponent extends TopComponent implements DataExplor } - /** - * Display ingest summary report in some dialog - */ - @Override - public void displayReport(String ingestReport) { - JOptionPane.showMessageDialog( - null, - ingestReport, - "File Ingest Summary", - JOptionPane.INFORMATION_MESSAGE); - } + - /** - * Display IngestMessage from service (forwarded by IngestManager) - */ - @Override - public void displayMessage(IngestMessage ingestMessage) { - messagePanel.addMessage(ingestMessage); - } - - @Override - public void initProgress(int maximum) { - this.mainProgressBar.setMaximum(maximum); - } - - @Override - public void updateProgress(int progress) { - this.mainProgressBar.setValue(progress); - } - - @Override - public void clearMessages() { - messagePanel.clearMessages(); - } - - @Override - public void displayIngestDialog(final Image image) { - final IngestDialog ingestDialog = new IngestDialog(); - ingestDialog.setImage(image); - ingestDialog.display(); - - } + } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml new file mode 100644 index 0000000000..9a958c3f6d --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/ingest-msg-icon.png b/Ingest/src/org/sleuthkit/autopsy/ingest/ingest-msg-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..98a142996e03575c10c14959e227ad89a07db423 GIT binary patch literal 1471 zcmV;w1wi_VP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1yo5yK~zXf-IG~Q z8&?#^ulltNL4HKp;4Q*PkHH6n-UT*5R45rUhy(s#=AYJ`J z8NAHm1!IqGj13_vOfNP~qoxZ{#7jp%{q@(mch0$I&Rp|}QMPRor*mhfvTtCtfOvwRKI9>E| z`s7HCwKn5js4Bc~D+>^NS#VYacTMm!LYNcc4S{S4@O83z9$Z(3_1jUk#vjfAQhn0A(F=ecgW3jINrIY?KVyA+$H_o1fBb-0x0I(hbj+=L4cBNGaB zzIZT(?C~cyybQLZ`3-|v@9-=sw-%II2S#R?cCyw?R+~_>TqnyNKqkRfYQn|R7059A zW-JTP;0{aEdnM}h#Y^FhCtED+(QKv8@uTB6SN}6&_2a-B&omqR6jf;-^bd!}{lSRu z9d^2d4nOF22S;{0w{0paHijPGDHc8nVUXt`>~x}2KYGnimyRcqm!S~i+W`ul%WezU z?3mw+Yjt*u)rS+6a=AlQ`8rwF0Z;@W0Du<&2LLz#I{V(?( z!b6>!@>pPA3r@E|rJoD#$S#oUP_xNR5+$?M>#$=qJFHEzUleGLWLqXR8j)?8=_7&e zoz;40)!tcUqIR+i21&cocmbGpYFBA%m_)eZ6sY>NCd%4DQc@DcJDSrH!>yyu$ z(mAhmZbv$okj@pQa}nv>Ksq;`F!~36yZNEk6awpJEJ2pisVYtsbS+?5z zh}F-q!^;A&gB<6(@qS)1o1BqickX6y-}TK%vyxfwox1_atY0#lxpOx+BR!YQzL3nG z+>#uBaC?07PtI?=w`B~1U)HSwU(9OpMWR_38Z(>xG}HfM2ICd2MeT~NZM%#C(u$F* zMvubcHTVdVpO{zZop@nk3t6!SR?Y5UsZ|~dRR8=HwIf00N`Ob}R=+oDLjvJQ#_fvR z5R7F9(*i8R>veXs#kabmRw|87cf8j-Yqw8Y&2h6iJ~%jSwT|2E=TP_ePa4e;#~rfl zAykIxGt8jQ_BZV~c%pXtJyE+e91M`gZPe}v5#;4>T4(u%1%=6k8uU)LJMv7fUs{we zFRKlDM5A-cS5;4+Dput>tJMonAX}8LJ=1Qe42z2!2;$dk%)2Q@?Iggm-b>&Gf+!|P zDjZJZcp;r;r}v;%?Sw)})D?4~5r+edM04=q_4*M0a`2e7T9@U96T?I0CjM0iFxcP* zD%ioADU?c3alDkx(j-aYM5$ETpMD~S?jcAZ7R%agLAN`eO4HNASA=7F7X=nIsCgSD ziK5Bsfj6#7Uk(6fp=%wdBV@CORGVgl!C9$Y4*%^6XwXEfaRfV>Oy;jCX!;@u#}0>f z#k{Y!U3LKHz%sqJefcW;|2G9xj%)rzTW|*Sb + + + + + - - - - - + + + + + + + + + + From f507d6b23b8cf18042fa14aee15c257be12e0467 Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 16 Feb 2012 16:14:50 -0500 Subject: [PATCH 3/5] ingest message top component docking / undocking Ingest manager API to check if file or image services are running --- .../autopsy/ingest/IngestManager.java | 35 ++++++--- .../ingest/IngestMessageTopComponent.java | 78 ++++++++++--------- .../IngestMessageTopComponentWstcref.xml | 2 +- .../sleuthkit/autopsy/ingest/IngestUI.java | 3 +- .../autopsy/ingest/dockedBottomWsmode.xml | 17 ++++ .../ingest/floatingLeftBottomWsmode.xml | 4 +- .../org/sleuthkit/autopsy/ingest/layer.xml | 6 +- 7 files changed, 91 insertions(+), 54 deletions(-) create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/dockedBottomWsmode.xml diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java index 68f0271b66..43cdf8b108 100755 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -102,7 +102,6 @@ public class IngestManager { return instance; } - /** * Add property change listener to listen to ingest events * @param l PropertyChangeListener to add @@ -127,10 +126,9 @@ public class IngestManager { void execute(final Collection services, final Collection images) { logger.log(Level.INFO, "Will enqueue number of images: " + images.size()); - logger.log(Level.INFO, "Starting enqueue worker"); queueWorker = new EnqueueWorker(services, images); queueWorker.execute(); - + ui.restoreMessages(); //logger.log(Level.INFO, "Queues: " + imageQueue.toString() + " " + fsContentQueue.toString()); } @@ -274,21 +272,34 @@ public class IngestManager { * test if any of image of fscontent ingesters are running * @return true if any service is running, false otherwise */ - synchronized boolean isIngestRunning() { - //enqueue running? + public synchronized boolean isIngestRunning() { + if (isEnqueueRunning()) { + return true; + } else if (isFileIngestRunning()) { + return true; + } else if (isImageIngestRunning()) { + return true; + } else { + return false; + } + + } + + public synchronized boolean isEnqueueRunning() { if (queueWorker != null && !queueWorker.isDone()) { return true; } + return false; + } - //enque not running - - //file ingester running? + public synchronized boolean isFileIngestRunning() { if (fsContentIngester != null && !fsContentIngester.isDone()) { return true; } + return false; + } - //file ingester not running - + public synchronized boolean isImageIngestRunning() { if (imageIngesters.isEmpty()) { return false; } @@ -303,9 +314,9 @@ public class IngestManager { } if (allDone) { return false; + } else { + return true; } - - return true; } /** diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java index bae40c776a..2692387a8c 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java @@ -21,11 +21,13 @@ package org.sleuthkit.autopsy.ingest; import java.awt.BorderLayout; 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.ImageUtilities; import org.openide.util.NbBundle; +import org.openide.windows.Mode; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; @@ -34,33 +36,21 @@ import org.sleuthkit.datamodel.Image; /** * Top component which displays something. */ - -//@ConvertAsProperties(dtd = "-//org.sleuthkit.autopsy.ingest//IngestMessage//EN", -//autostore = false) -//@TopComponent.Description(preferredID = "IngestMessageTopComponent", -//iconBase = "org/sleuthkit/autopsy/ingest/ingest-msg-icon.png", -//persistenceType = TopComponent.PERSISTENCE_NEVER) -//@TopComponent.Registration(mode = "floatingLeftBottom", openAtStartup = false) -//@ActionID(category = "Window", id = "org.sleuthkit.autopsy.ingest.IngestMessageTopComponent") -//@ActionReference(path = "Menu/Window" /*, position = 333 */) -//@TopComponent.OpenActionRegistration(displayName = "#CTL_IngestMessageAction", -//preferredID = "IngestMessageTopComponent") public final class IngestMessageTopComponent extends TopComponent implements IngestUI { private static IngestMessageTopComponent instance; private static final Logger logger = Logger.getLogger(IngestMessageTopComponent.class.getName()); private IngestMessagePanel messagePanel; + private IngestManager manager; private static String PREFERRED_ID = "IngestMessageTopComponent"; - public IngestMessageTopComponent() { initComponents(); customizeComponents(); registerListeners(); setName(NbBundle.getMessage(IngestMessageTopComponent.class, "CTL_IngestMessageTopComponent")); setToolTipText(NbBundle.getMessage(IngestMessageTopComponent.class, "HINT_IngestMessageTopComponent")); - putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE); - //putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE); + //putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE); } @@ -83,7 +73,6 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing return getDefault(); } - /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -108,29 +97,53 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing @Override public void componentOpened() { - // TODO add custom code on component opening - // WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); - IngestManager.getDefault(); //create initial instance - //TODO alternatively, reigster manager with lookup and instantiate when case is opened or image added + logger.log(Level.INFO, "OPENED"); + //create manager instance + if (manager == null) + manager = IngestManager.getDefault(); } @Override public void componentClosed() { + logger.log(Level.INFO, "CLOSED"); // TODO add custom code on component closing // WindowManager.getDefault().findMode("bottomSlidingSide").dockInto(this); + if (manager.isIngestRunning()) { + /* + Mode mode = WindowManager.getDefault().findMode("floatingLeftBottom"); + //Mode mode = WindowManager.getDefault().findMode("bottomSlidingSide"); + if (mode != null) { + mode.dockInto(this); + this.open(); + } + + return; + */ + } + + Mode mode = WindowManager.getDefault().findMode("dockedBottom"); + if (mode != null) { + mode.dockInto(this); + this.open(); + } + } @Override protected void componentShowing() { - super.componentShowing(); - //WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); + logger.log(Level.INFO, "SHOWING"); + + Mode mode = WindowManager.getDefault().findMode("floatingLeftBottom"); + if (mode != null) { + mode.dockInto(this); + this.open(); + } } @Override protected void componentHidden() { - super.componentHidden(); - //WindowManager.getDefault().findMode("bottomSlidingSide").dockInto(this); - //WindowManager.getDefault().findMode("floatingLeftBottom").dockInto(this); + logger.log(Level.INFO, "HIDDEN"); + } @Override @@ -145,7 +158,7 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing @Override public boolean canClose() { - return false; + return true; } @Override @@ -156,10 +169,8 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing @Override public java.awt.Image getIcon() { return ImageUtilities.loadImage( - "org/sleuthkit/autopsy/ingest/ingest-msg-icon.png"); + "org/sleuthkit/autopsy/ingest/ingest-msg-icon.png"); } - - void writeProperties(java.util.Properties p) { // better to version settings since initial version as advocated at @@ -211,10 +222,6 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing messagePanel.setOpaque(false); setLayout(new BorderLayout()); add(messagePanel, BorderLayout.CENTER); - - //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST1")); - //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST2")); - //messagePanel.addMessage(IngestMessage.createManagerMessage("TEST3")); } /** @@ -234,7 +241,7 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing */ @Override public void displayMessage(IngestMessage ingestMessage) { - addMessage(ingestMessage); + messagePanel.addMessage(ingestMessage); } @Override @@ -258,7 +265,8 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing } - public void addMessage(IngestMessage m) { - messagePanel.addMessage(m); + @Override + public void restoreMessages() { + componentShowing(); } } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml index 0a085fd645..b2b20289fe 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponentWstcref.xml @@ -7,5 +7,5 @@ and open the template in the editor. - + diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestUI.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestUI.java index 5989c0011e..cbc361c23f 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestUI.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestUI.java @@ -27,11 +27,10 @@ import org.sleuthkit.datamodel.Image; public interface IngestUI { void displayMessage(final IngestMessage message); void clearMessages(); + void restoreMessages(); void displayIngestDialog(final Image image); void initProgress(final int maximum); void updateProgress(final int progress); void displayReport(final String report); - - } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/dockedBottomWsmode.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/dockedBottomWsmode.xml new file mode 100644 index 0000000000..0e663eb73a --- /dev/null +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/dockedBottomWsmode.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml index 9a958c3f6d..4289ff5e16 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/floatingLeftBottomWsmode.xml @@ -7,14 +7,12 @@ - - + \ No newline at end of file diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/layer.xml b/Ingest/src/org/sleuthkit/autopsy/ingest/layer.xml index 0d1f79bfdb..9cd0c71445 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/layer.xml +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/layer.xml @@ -30,8 +30,12 @@ - + + + + + From cf6b2e8adb910bd6aff35071a91d655ef6b1c90f Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 16 Feb 2012 17:27:32 -0500 Subject: [PATCH 4/5] remove unused method --- .../org/sleuthkit/autopsy/ingest/IngestManager.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java index 43cdf8b108..e4db79d22b 100755 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -360,7 +360,6 @@ public class IngestManager { } SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { ui.displayMessage(message); @@ -496,16 +495,6 @@ public class IngestManager { }); } - private void updateMainProgress(final int progress) { - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - ui.updateProgress(progress); - } - }); - } - //image worker to remove itself when complete or interrupted void removeImageIngestWorker(IngestImageThread worker) { //remove worker @@ -979,7 +968,6 @@ public class IngestManager { } progress.progress(unit.content.getName(), ++processedFiles); - updateMainProgress(processedFiles); --numFsContents; } logger.log(Level.INFO, "Done background processing"); From 581e1584036dd999ab64b55011862e3b64b9cdd7 Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 16 Feb 2012 17:27:59 -0500 Subject: [PATCH 5/5] decrease icon size --- .../autopsy/ingest/ingest-msg-icon.png | Bin 1471 -> 1183 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/ingest-msg-icon.png b/Ingest/src/org/sleuthkit/autopsy/ingest/ingest-msg-icon.png index 98a142996e03575c10c14959e227ad89a07db423..f828d7c7fb506ee46a2dcf22f8b0f4e33b4308a0 100644 GIT binary patch delta 1160 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 F0fO8dwp;)J