From d7ddb86a2a89b57d4282bb98623be88a4719b07c Mon Sep 17 00:00:00 2001 From: Joe Ho Date: Wed, 8 May 2019 19:48:53 -0400 Subject: [PATCH] Reposition buttons and title. Check for ejected USB drive prior to run. --- .../casemodule/LogicalImagerDSProcessor.java | 7 +++ .../casemodule/LogicalImagerPanel.form | 60 ++++++++++++------- .../casemodule/LogicalImagerPanel.java | 52 +++++++++------- .../timeline/ui/Bundle.properties-MERGED | 6 +- 4 files changed, 80 insertions(+), 45 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerDSProcessor.java index 332447fddc..6715997a71 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerDSProcessor.java @@ -23,6 +23,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.filechooser.FileFilter; import org.openide.util.NbBundle.Messages; @@ -125,6 +126,12 @@ public class LogicalImagerDSProcessor implements DataSourceProcessor { public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { configPanel.storeSettings(); Path imagePath = configPanel.getImagePath(); + if (!imagePath.toFile().exists()) { + // TODO: Better ways to detect ejected USB drive? + String msg = imagePath.toString() + " not found.\nUSB drive has been ejected."; + JOptionPane.showMessageDialog(null, msg, "ERROR", JOptionPane.ERROR_MESSAGE); + return; + } String deviceId = UUID.randomUUID().toString(); String timeZone = "America/New_York"; // TODO: temporary boolean ignoreFatOrphanFiles = false; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.form index 63dfdc0714..3afcae45fa 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.form @@ -24,35 +24,47 @@ - - - - + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + @@ -76,7 +88,9 @@ - + + + @@ -210,5 +224,7 @@ + + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.java index 60d06075fb..63e7f3f276 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LogicalImagerPanel.java @@ -129,6 +129,7 @@ public class LogicalImagerPanel extends JPanel implements DocumentListener { browseButton = new javax.swing.JButton(); imageScrollPane = new javax.swing.JScrollPane(); imageTable = new javax.swing.JTable(); + jSeparator1 = new javax.swing.JSeparator(); setMinimumSize(new java.awt.Dimension(0, 65)); setPreferredSize(new java.awt.Dimension(403, 65)); @@ -204,30 +205,38 @@ public class LogicalImagerPanel extends JPanel implements DocumentListener { layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addGap(150, 150, 150) - .addComponent(topLabel) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(238, 238, 238) + .addComponent(topLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(28, 28, 28) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(messageLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(scanButton) - .addComponent(selectDriveLabel) - .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(45, 45, 45) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(browseButton) - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(28, 28, 28) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(selectAcquisitionFromDriveLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(imageScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 346, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(selectDriveLabel) + .addGap(289, 289, 289)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(scanButton) + .addGap(126, 126, 126))) + .addComponent(browseButton)) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(28, 28, 28) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(selectAcquisitionFromDriveLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(imageScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 346, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addGap(346, 346, 346) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addGap(144, 144, 144) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(60, Short.MAX_VALUE)))) ); layout.setVerticalGroup( @@ -242,7 +251,9 @@ public class LogicalImagerPanel extends JPanel implements DocumentListener { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(scanButton) .addComponent(browseButton)) - .addGap(26, 26, 26) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(selectDriveLabel) .addComponent(selectAcquisitionFromDriveLabel)) @@ -400,6 +411,7 @@ public class LogicalImagerPanel extends JPanel implements DocumentListener { private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel6; private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSeparator jSeparator1; private javax.swing.JLabel messageLabel; private javax.swing.JButton scanButton; private javax.swing.JLabel selectAcquisitionFromDriveLabel; diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle.properties-MERGED index 3255e82f2b..ed3e6724d8 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle.properties-MERGED @@ -1,4 +1,4 @@ -/* +/*= * Autopsy Forensic Browser * * Copyright 2013-15 Basis Technology Corp. @@ -14,8 +14,8 @@ * 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. - */ +*=limitations under the License. +*/= AbstractTimelineChart.defaultTooltip.text=Drag the mouse to select a time interval to zoom into.\nRight-click for more actions. HistoryToolBar.historyLabel.text=History