19 package org.sleuthkit.autopsy.casemodule.datasourcesummary;
 
   21 import java.text.DecimalFormat;
 
   23 import java.util.HashMap;
 
   24 import java.util.logging.Level;
 
   25 import java.util.logging.Logger;
 
   26 import javax.swing.table.DefaultTableModel;
 
   27 import org.openide.util.NbBundle.Messages;
 
   35 class DataSourceSummaryDetailsPanel 
extends javax.swing.JPanel {
 
   38     private static final long serialVersionUID = 1L;
 
   39     private Map<Long, String> osDetailMap = 
new HashMap<>();
 
   40     private static final Integer SIZE_COVERSION_CONSTANT = 1000;
 
   41     private static final DecimalFormat APPROXIMATE_SIZE_FORMAT = 
new DecimalFormat(
"#.##");
 
   42     private final Map<Long, Long> unallocatedFilesSizeMap;
 
   43     private final Map<Long, String> usageMap;
 
   44     private static final Logger logger = Logger.getLogger(DataSourceSummaryDetailsPanel.class.getName());
 
   49     @Messages({
"DataSourceSummaryDetailsPanel.getDataSources.error.text=Failed to get the list of datasources for the current case.",
 
   50         "DataSourceSummaryDetailsPanel.getDataSources.error.title=Load Failure"})
 
   51     DataSourceSummaryDetailsPanel(Map<Long, String> usageMap) {
 
   53         this.usageMap = usageMap;
 
   54         this.unallocatedFilesSizeMap = DataSourceInfoUtilities.getSizeOfUnallocatedFiles();
 
   55         osDetailMap = DataSourceInfoUtilities.getOperatingSystems();
 
   63     void updateDetailsPanelData(DataSource selectedDataSource) {
 
   65         if (selectedDataSource != null) {
 
   66             String sizeString = 
"";
 
   67             String sectorSizeString = 
"";
 
   68             String md5String = 
"";
 
   69             String sha1String = 
"";
 
   70             String sha256String = 
"";
 
   71             String acquisitionDetailsString = 
"";
 
   72             String imageTypeString = 
"";
 
   73             String[] filePaths = 
new String[0];
 
   74             String osDetailString = osDetailMap.get(selectedDataSource.getId()) == null ? 
"" : osDetailMap.get(selectedDataSource.getId());
 
   75             String dataSourceTypeString = usageMap.get(selectedDataSource.getId()) == null ? 
"" : usageMap.get(selectedDataSource.getId());
 
   77                 acquisitionDetailsString = selectedDataSource.getAcquisitionDetails();
 
   78             } 
catch (TskCoreException ex) {
 
   79                 logger.log(Level.WARNING, 
"Unable to get aquisition details for selected data source", ex);
 
   81             if (selectedDataSource instanceof Image) {
 
   82                 imageTypeString = ((Image) selectedDataSource).getType().getName();
 
   83                 filePaths = ((Image) selectedDataSource).getPaths();
 
   84                 sizeString = getSizeString(selectedDataSource.getSize());
 
   85                 sectorSizeString = getSizeString(((Image) selectedDataSource).getSsize());
 
   88                     md5String = ((Image) selectedDataSource).getMd5();
 
   89                     if (md5String == null) {
 
   92                 } 
catch (TskCoreException ex) {
 
   93                     logger.log(Level.WARNING, 
"Unable to get MD5 for selected data source", ex);
 
   96                     sha1String = ((Image) selectedDataSource).getSha1();
 
   97                     if (sha1String == null) {
 
  100                 } 
catch (TskCoreException ex) {
 
  101                     logger.log(Level.WARNING, 
"Unable to get SHA1 for selected data source", ex);
 
  104                     sha256String = ((Image) selectedDataSource).getSha256();
 
  105                     if (sha256String == null) {
 
  108                 } 
catch (TskCoreException ex) {
 
  109                     logger.log(Level.WARNING, 
"Unable to get SHA256 for selected data source", ex);
 
  112             displayNameValue.setText(selectedDataSource.getName());
 
  113             originalNameValue.setText(selectedDataSource.getName());
 
  114             deviceIdValue.setText(selectedDataSource.getDeviceId());
 
  115             dataSourceUsageValue.setText(dataSourceTypeString);
 
  116             operatingSystemValue.setText(osDetailString);
 
  117             timeZoneValue.setText(selectedDataSource.getTimeZone());
 
  118             acquisitionDetailsTextArea.setText(acquisitionDetailsString);
 
  119             imageTypeValue.setText(imageTypeString);
 
  120             sizeValue.setText(sizeString);
 
  121             unallocatedSizeValue.setText(getSizeString(unallocatedFilesSizeMap.get(selectedDataSource.getId())));
 
  122             sectorSizeValue.setText(sectorSizeString);
 
  123             md5HashValue.setText(md5String);
 
  124             sha1HashValue.setText(sha1String);
 
  125             sha256HashValue.setText(sha256String);
 
  126             for (String path : filePaths) {
 
  127                 ((DefaultTableModel) filePathsTable.getModel()).addRow(
new Object[]{path});
 
  130         updateFieldVisibility();
 
  143         "DataSourceSummaryDetailsPanel.units.bytes= bytes",
 
  144         "DataSourceSummaryDetailsPanel.units.kilobytes= kB",
 
  145         "DataSourceSummaryDetailsPanel.units.megabytes= MB",
 
  146         "DataSourceSummaryDetailsPanel.units.gigabytes= GB",
 
  147         "DataSourceSummaryDetailsPanel.units.terabytes= TB",
 
  148         "DataSourceSummaryDetailsPanel.units.petabytes= PB" 
  150     private String getSizeString(Long size) {
 
  154         double approximateSize = size;
 
  155         if (approximateSize < SIZE_COVERSION_CONSTANT) {
 
  156             return String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes();
 
  158         approximateSize /= SIZE_COVERSION_CONSTANT;
 
  159         if (approximateSize < SIZE_COVERSION_CONSTANT) {
 
  160             return APPROXIMATE_SIZE_FORMAT.format(approximateSize) + Bundle.DataSourceSummaryDetailsPanel_units_kilobytes()
 
  161                     + 
" (" + String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes() + 
")";
 
  163         approximateSize /= SIZE_COVERSION_CONSTANT;
 
  164         if (approximateSize < SIZE_COVERSION_CONSTANT) {
 
  165             return APPROXIMATE_SIZE_FORMAT.format(approximateSize) + Bundle.DataSourceSummaryDetailsPanel_units_megabytes()
 
  166                     + 
" (" + String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes() + 
")";
 
  168         approximateSize /= SIZE_COVERSION_CONSTANT;
 
  169         if (approximateSize < SIZE_COVERSION_CONSTANT) {
 
  170             return APPROXIMATE_SIZE_FORMAT.format(approximateSize) + Bundle.DataSourceSummaryDetailsPanel_units_gigabytes()
 
  171                     + 
" (" + String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes() + 
")";
 
  173         approximateSize /= SIZE_COVERSION_CONSTANT;
 
  174         if (approximateSize < SIZE_COVERSION_CONSTANT) {
 
  175             return APPROXIMATE_SIZE_FORMAT.format(approximateSize) + Bundle.DataSourceSummaryDetailsPanel_units_terabytes()
 
  176                     + 
" (" + String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes() + 
")";
 
  178         approximateSize /= SIZE_COVERSION_CONSTANT;
 
  179         return APPROXIMATE_SIZE_FORMAT.format(approximateSize) + Bundle.DataSourceSummaryDetailsPanel_units_petabytes()
 
  180                 + 
" (" + String.valueOf(size) + Bundle.DataSourceSummaryDetailsPanel_units_bytes() + 
")";
 
  187     private void updateFieldVisibility() {
 
  188         displayNameValue.setVisible(!displayNameValue.getText().isEmpty());
 
  189         displayNameLabel.setVisible(!displayNameValue.getText().isEmpty());
 
  190         originalNameValue.setVisible(!originalNameValue.getText().isEmpty());
 
  191         originalNameLabel.setVisible(!originalNameValue.getText().isEmpty());
 
  192         deviceIdValue.setVisible(!deviceIdValue.getText().isEmpty());
 
  193         deviceIdLabel.setVisible(!deviceIdValue.getText().isEmpty());
 
  194         dataSourceUsageValue.setVisible(!dataSourceUsageValue.getText().isEmpty());
 
  195         dataSourceUsageLabel.setVisible(!dataSourceUsageValue.getText().isEmpty());
 
  196         operatingSystemValue.setVisible(!operatingSystemValue.getText().isEmpty());
 
  197         operatingSystemLabel.setVisible(!operatingSystemValue.getText().isEmpty());
 
  198         timeZoneValue.setVisible(!timeZoneValue.getText().isEmpty());
 
  199         timeZoneLabel.setVisible(!timeZoneValue.getText().isEmpty());
 
  200         acquisitionDetailsTextArea.setVisible(!acquisitionDetailsTextArea.getText().isEmpty());
 
  201         acquisitionDetailsLabel.setVisible(!acquisitionDetailsTextArea.getText().isEmpty());
 
  202         acquisitionDetailsScrollPane.setVisible(!acquisitionDetailsTextArea.getText().isEmpty());
 
  203         imageTypeValue.setVisible(!imageTypeValue.getText().isEmpty());
 
  204         imageTypeLabel.setVisible(!imageTypeValue.getText().isEmpty());
 
  205         sizeValue.setVisible(!sizeValue.getText().isEmpty());
 
  206         sizeLabel.setVisible(!sizeValue.getText().isEmpty());
 
  207         sectorSizeValue.setVisible(!sectorSizeValue.getText().isEmpty());
 
  208         sectorSizeLabel.setVisible(!sectorSizeValue.getText().isEmpty());
 
  209         md5HashValue.setVisible(!md5HashValue.getText().isEmpty());
 
  210         md5HashLabel.setVisible(!md5HashValue.getText().isEmpty());
 
  211         sha1HashValue.setVisible(!sha1HashValue.getText().isEmpty());
 
  212         sha1HashLabel.setVisible(!sha1HashValue.getText().isEmpty());
 
  213         sha256HashValue.setVisible(!sha256HashValue.getText().isEmpty());
 
  214         sha256HashLabel.setVisible(!sha256HashValue.getText().isEmpty());
 
  215         unallocatedSizeValue.setVisible(!unallocatedSizeValue.getText().isEmpty());
 
  216         unallocatedSizeLabel.setVisible(!unallocatedSizeValue.getText().isEmpty());
 
  217         filePathsTable.setVisible(filePathsTable.getRowCount() > 0);
 
  218         filePathsLabel.setVisible(filePathsTable.getRowCount() > 0);
 
  219         filePathsScrollPane.setVisible(filePathsTable.getRowCount() > 0);
 
  225     private void clearTableValues() {
 
  226         displayNameValue.setText(
"");
 
  227         originalNameValue.setText(
"");
 
  228         deviceIdValue.setText(
"");
 
  229         dataSourceUsageValue.setText(
"");
 
  230         operatingSystemValue.setText(
"");
 
  231         timeZoneValue.setText(
"");
 
  232         acquisitionDetailsTextArea.setText(
"");
 
  233         imageTypeValue.setText(
"");
 
  234         sizeValue.setText(
"");
 
  235         sectorSizeValue.setText(
"");
 
  236         md5HashValue.setText(
"");
 
  237         sha1HashValue.setText(
"");
 
  238         sha256HashValue.setText(
"");
 
  239         unallocatedSizeValue.setText(
"");
 
  240         ((DefaultTableModel) filePathsTable.getModel()).setRowCount(0);
 
  248     @SuppressWarnings(
"unchecked")
 
  250     private 
void initComponents() {
 
  251         java.awt.GridBagConstraints gridBagConstraints;
 
  253         jScrollPane1 = 
new javax.swing.JScrollPane();
 
  254         jPanel1 = 
new javax.swing.JPanel();
 
  255         operatingSystemLabel = 
new javax.swing.JLabel();
 
  256         displayNameLabel = 
new javax.swing.JLabel();
 
  257         originalNameLabel = 
new javax.swing.JLabel();
 
  258         sha1HashValue = 
new javax.swing.JLabel();
 
  259         operatingSystemValue = 
new javax.swing.JLabel();
 
  260         displayNameValue = 
new javax.swing.JLabel();
 
  261         sha256HashValue = 
new javax.swing.JLabel();
 
  262         originalNameValue = 
new javax.swing.JLabel();
 
  263         deviceIdValue = 
new javax.swing.JLabel();
 
  264         filePathsScrollPane = 
new javax.swing.JScrollPane();
 
  265         filePathsTable = 
new javax.swing.JTable();
 
  266         dataSourceUsageValue = 
new javax.swing.JLabel();
 
  267         timeZoneValue = 
new javax.swing.JLabel();
 
  268         imageTypeValue = 
new javax.swing.JLabel();
 
  269         md5HashValue = 
new javax.swing.JLabel();
 
  270         sectorSizeValue = 
new javax.swing.JLabel();
 
  271         sizeValue = 
new javax.swing.JLabel();
 
  272         filePathsLabel = 
new javax.swing.JLabel();
 
  273         sha256HashLabel = 
new javax.swing.JLabel();
 
  274         sha1HashLabel = 
new javax.swing.JLabel();
 
  275         md5HashLabel = 
new javax.swing.JLabel();
 
  276         sectorSizeLabel = 
new javax.swing.JLabel();
 
  277         sizeLabel = 
new javax.swing.JLabel();
 
  278         imageTypeLabel = 
new javax.swing.JLabel();
 
  279         acquisitionDetailsLabel = 
new javax.swing.JLabel();
 
  280         timeZoneLabel = 
new javax.swing.JLabel();
 
  281         dataSourceUsageLabel = 
new javax.swing.JLabel();
 
  282         deviceIdLabel = 
new javax.swing.JLabel();
 
  283         acquisitionDetailsScrollPane = 
new javax.swing.JScrollPane();
 
  284         acquisitionDetailsTextArea = 
new javax.swing.JTextArea();
 
  285         filler1 = 
new javax.swing.Box.Filler(
new java.awt.Dimension(0, 0), 
new java.awt.Dimension(0, 0), 
new java.awt.Dimension(32767, 32767));
 
  286         filler2 = 
new javax.swing.Box.Filler(
new java.awt.Dimension(0, 0), 
new java.awt.Dimension(0, 0), 
new java.awt.Dimension(32767, 32767));
 
  287         unallocatedSizeLabel = 
new javax.swing.JLabel();
 
  288         unallocatedSizeValue = 
new javax.swing.JLabel();
 
  290         jPanel1.setLayout(
new java.awt.GridBagLayout());
 
  292         org.openide.awt.Mnemonics.setLocalizedText(operatingSystemLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.operatingSystemLabel.text")); 
 
  293         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  294         gridBagConstraints.gridx = 0;
 
  295         gridBagConstraints.gridy = 4;
 
  296         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  297         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
 
  298         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  299         jPanel1.add(operatingSystemLabel, gridBagConstraints);
 
  301         org.openide.awt.Mnemonics.setLocalizedText(displayNameLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.displayNameLabel.text")); 
 
  302         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  303         gridBagConstraints.gridx = 0;
 
  304         gridBagConstraints.gridy = 0;
 
  305         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  306         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  307         gridBagConstraints.insets = 
new java.awt.Insets(10, 10, 0, 4);
 
  308         jPanel1.add(displayNameLabel, gridBagConstraints);
 
  310         org.openide.awt.Mnemonics.setLocalizedText(originalNameLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.originalNameLabel.text")); 
 
  311         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  312         gridBagConstraints.gridx = 0;
 
  313         gridBagConstraints.gridy = 1;
 
  314         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  315         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  316         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  317         jPanel1.add(originalNameLabel, gridBagConstraints);
 
  319         org.openide.awt.Mnemonics.setLocalizedText(sha1HashValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sha1HashValue.text")); 
 
  320         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  321         gridBagConstraints.gridx = 1;
 
  322         gridBagConstraints.gridy = 12;
 
  323         gridBagConstraints.gridwidth = 4;
 
  324         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  325         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  326         gridBagConstraints.weightx = 0.5;
 
  327         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  328         jPanel1.add(sha1HashValue, gridBagConstraints);
 
  330         org.openide.awt.Mnemonics.setLocalizedText(operatingSystemValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.operatingSystemValue.text")); 
 
  331         operatingSystemValue.setToolTipText(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.operatingSystemValue.toolTipText")); 
 
  332         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  333         gridBagConstraints.gridx = 1;
 
  334         gridBagConstraints.gridy = 4;
 
  335         gridBagConstraints.gridwidth = 4;
 
  336         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  337         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  338         gridBagConstraints.weightx = 0.5;
 
  339         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  340         jPanel1.add(operatingSystemValue, gridBagConstraints);
 
  342         org.openide.awt.Mnemonics.setLocalizedText(displayNameValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.displayNameValue.text")); 
 
  343         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  344         gridBagConstraints.gridx = 1;
 
  345         gridBagConstraints.gridy = 0;
 
  346         gridBagConstraints.gridwidth = 4;
 
  347         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  348         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  349         gridBagConstraints.weightx = 0.5;
 
  350         gridBagConstraints.insets = 
new java.awt.Insets(10, 0, 0, 10);
 
  351         jPanel1.add(displayNameValue, gridBagConstraints);
 
  353         org.openide.awt.Mnemonics.setLocalizedText(sha256HashValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sha256HashValue.text")); 
 
  354         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  355         gridBagConstraints.gridx = 1;
 
  356         gridBagConstraints.gridy = 13;
 
  357         gridBagConstraints.gridwidth = 4;
 
  358         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  359         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  360         gridBagConstraints.weightx = 0.5;
 
  361         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 6, 10);
 
  362         jPanel1.add(sha256HashValue, gridBagConstraints);
 
  364         org.openide.awt.Mnemonics.setLocalizedText(originalNameValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.originalNameValue.text")); 
 
  365         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  366         gridBagConstraints.gridx = 1;
 
  367         gridBagConstraints.gridy = 1;
 
  368         gridBagConstraints.gridwidth = 4;
 
  369         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  370         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  371         gridBagConstraints.weightx = 0.5;
 
  372         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  373         jPanel1.add(originalNameValue, gridBagConstraints);
 
  375         org.openide.awt.Mnemonics.setLocalizedText(deviceIdValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.deviceIdValue.text")); 
 
  376         deviceIdValue.setToolTipText(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.deviceIdValue.toolTipText")); 
 
  377         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  378         gridBagConstraints.gridx = 1;
 
  379         gridBagConstraints.gridy = 2;
 
  380         gridBagConstraints.gridwidth = 4;
 
  381         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  382         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  383         gridBagConstraints.weightx = 0.5;
 
  384         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 6, 10);
 
  385         jPanel1.add(deviceIdValue, gridBagConstraints);
 
  387         filePathsScrollPane.setPreferredSize(
new java.awt.Dimension(80, 50));
 
  389         filePathsTable.setModel(
new javax.swing.table.DefaultTableModel(
 
  397             boolean[] canEdit = 
new boolean [] {
 
  401             public boolean isCellEditable(
int rowIndex, 
int columnIndex) {
 
  402                 return canEdit [columnIndex];
 
  405         filePathsTable.setTableHeader(null);
 
  406         filePathsScrollPane.setViewportView(filePathsTable);
 
  407         if (filePathsTable.getColumnModel().getColumnCount() > 0) {
 
  408             filePathsTable.getColumnModel().getColumn(0).setHeaderValue(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.filePathsTable.columnModel.title0")); 
 
  411         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  412         gridBagConstraints.gridx = 1;
 
  413         gridBagConstraints.gridy = 14;
 
  414         gridBagConstraints.gridwidth = 4;
 
  415         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
  416         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  417         gridBagConstraints.weightx = 0.5;
 
  418         gridBagConstraints.weighty = 1.2;
 
  419         gridBagConstraints.insets = 
new java.awt.Insets(6, 0, 10, 10);
 
  420         jPanel1.add(filePathsScrollPane, gridBagConstraints);
 
  422         org.openide.awt.Mnemonics.setLocalizedText(dataSourceUsageValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.dataSourceUsageValue.text")); 
 
  423         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  424         gridBagConstraints.gridx = 1;
 
  425         gridBagConstraints.gridy = 3;
 
  426         gridBagConstraints.gridwidth = 4;
 
  427         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  428         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  429         gridBagConstraints.weightx = 0.5;
 
  430         gridBagConstraints.insets = 
new java.awt.Insets(6, 0, 0, 10);
 
  431         jPanel1.add(dataSourceUsageValue, gridBagConstraints);
 
  433         org.openide.awt.Mnemonics.setLocalizedText(timeZoneValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.timeZoneValue.text")); 
 
  434         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  435         gridBagConstraints.gridx = 1;
 
  436         gridBagConstraints.gridy = 5;
 
  437         gridBagConstraints.gridwidth = 4;
 
  438         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  439         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  440         gridBagConstraints.weightx = 0.5;
 
  441         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 6, 10);
 
  442         jPanel1.add(timeZoneValue, gridBagConstraints);
 
  444         org.openide.awt.Mnemonics.setLocalizedText(imageTypeValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.imageTypeValue.text")); 
 
  445         imageTypeValue.setToolTipText(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.imageTypeValue.toolTipText")); 
 
  446         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  447         gridBagConstraints.gridx = 1;
 
  448         gridBagConstraints.gridy = 7;
 
  449         gridBagConstraints.gridwidth = 4;
 
  450         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  451         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  452         gridBagConstraints.weightx = 0.5;
 
  453         gridBagConstraints.insets = 
new java.awt.Insets(6, 0, 0, 10);
 
  454         jPanel1.add(imageTypeValue, gridBagConstraints);
 
  456         org.openide.awt.Mnemonics.setLocalizedText(md5HashValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.md5HashValue.text")); 
 
  457         md5HashValue.setToolTipText(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.md5HashValue.toolTipText")); 
 
  458         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  459         gridBagConstraints.gridx = 1;
 
  460         gridBagConstraints.gridy = 11;
 
  461         gridBagConstraints.gridwidth = 4;
 
  462         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  463         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  464         gridBagConstraints.weightx = 0.5;
 
  465         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  466         jPanel1.add(md5HashValue, gridBagConstraints);
 
  468         org.openide.awt.Mnemonics.setLocalizedText(sectorSizeValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sectorSizeValue.text")); 
 
  469         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  470         gridBagConstraints.gridx = 1;
 
  471         gridBagConstraints.gridy = 10;
 
  472         gridBagConstraints.gridwidth = 4;
 
  473         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  474         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  475         gridBagConstraints.weightx = 0.5;
 
  476         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  477         jPanel1.add(sectorSizeValue, gridBagConstraints);
 
  479         org.openide.awt.Mnemonics.setLocalizedText(sizeValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sizeValue.text")); 
 
  480         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  481         gridBagConstraints.gridx = 1;
 
  482         gridBagConstraints.gridy = 8;
 
  483         gridBagConstraints.gridwidth = 4;
 
  484         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  485         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  486         gridBagConstraints.weightx = 0.5;
 
  487         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  488         jPanel1.add(sizeValue, gridBagConstraints);
 
  490         org.openide.awt.Mnemonics.setLocalizedText(filePathsLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.filePathsLabel.text")); 
 
  491         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  492         gridBagConstraints.gridx = 0;
 
  493         gridBagConstraints.gridy = 14;
 
  494         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  495         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  496         gridBagConstraints.weighty = 1.2;
 
  497         gridBagConstraints.insets = 
new java.awt.Insets(6, 10, 10, 4);
 
  498         jPanel1.add(filePathsLabel, gridBagConstraints);
 
  500         org.openide.awt.Mnemonics.setLocalizedText(sha256HashLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sha256HashLabel.text")); 
 
  501         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  502         gridBagConstraints.gridx = 0;
 
  503         gridBagConstraints.gridy = 13;
 
  504         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  505         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  506         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 6, 4);
 
  507         jPanel1.add(sha256HashLabel, gridBagConstraints);
 
  509         org.openide.awt.Mnemonics.setLocalizedText(sha1HashLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sha1HashLabel.text")); 
 
  510         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  511         gridBagConstraints.gridx = 0;
 
  512         gridBagConstraints.gridy = 12;
 
  513         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  514         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  515         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  516         jPanel1.add(sha1HashLabel, gridBagConstraints);
 
  518         org.openide.awt.Mnemonics.setLocalizedText(md5HashLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.md5HashLabel.text")); 
 
  519         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  520         gridBagConstraints.gridx = 0;
 
  521         gridBagConstraints.gridy = 11;
 
  522         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  523         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  524         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  525         jPanel1.add(md5HashLabel, gridBagConstraints);
 
  527         org.openide.awt.Mnemonics.setLocalizedText(sectorSizeLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sectorSizeLabel.text")); 
 
  528         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  529         gridBagConstraints.gridx = 0;
 
  530         gridBagConstraints.gridy = 10;
 
  531         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  532         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  533         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  534         jPanel1.add(sectorSizeLabel, gridBagConstraints);
 
  536         org.openide.awt.Mnemonics.setLocalizedText(sizeLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.sizeLabel.text")); 
 
  537         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  538         gridBagConstraints.gridx = 0;
 
  539         gridBagConstraints.gridy = 8;
 
  540         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  541         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  542         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  543         jPanel1.add(sizeLabel, gridBagConstraints);
 
  545         org.openide.awt.Mnemonics.setLocalizedText(imageTypeLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.imageTypeLabel.text")); 
 
  546         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  547         gridBagConstraints.gridx = 0;
 
  548         gridBagConstraints.gridy = 7;
 
  549         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  550         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  551         gridBagConstraints.insets = 
new java.awt.Insets(6, 10, 0, 4);
 
  552         jPanel1.add(imageTypeLabel, gridBagConstraints);
 
  554         org.openide.awt.Mnemonics.setLocalizedText(acquisitionDetailsLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.acquisitionDetailsLabel.text")); 
 
  555         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  556         gridBagConstraints.gridx = 0;
 
  557         gridBagConstraints.gridy = 6;
 
  558         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  559         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  560         gridBagConstraints.weighty = 0.6;
 
  561         gridBagConstraints.insets = 
new java.awt.Insets(6, 10, 6, 4);
 
  562         jPanel1.add(acquisitionDetailsLabel, gridBagConstraints);
 
  564         org.openide.awt.Mnemonics.setLocalizedText(timeZoneLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.timeZoneLabel.text")); 
 
  565         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  566         gridBagConstraints.gridx = 0;
 
  567         gridBagConstraints.gridy = 5;
 
  568         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  569         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  570         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 6, 4);
 
  571         jPanel1.add(timeZoneLabel, gridBagConstraints);
 
  573         org.openide.awt.Mnemonics.setLocalizedText(dataSourceUsageLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.dataSourceUsageLabel.text")); 
 
  574         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  575         gridBagConstraints.gridx = 0;
 
  576         gridBagConstraints.gridy = 3;
 
  577         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  578         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  579         gridBagConstraints.insets = 
new java.awt.Insets(6, 10, 0, 4);
 
  580         jPanel1.add(dataSourceUsageLabel, gridBagConstraints);
 
  582         org.openide.awt.Mnemonics.setLocalizedText(deviceIdLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.deviceIdLabel.text")); 
 
  583         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  584         gridBagConstraints.gridx = 0;
 
  585         gridBagConstraints.gridy = 2;
 
  586         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  587         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  588         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 6, 4);
 
  589         jPanel1.add(deviceIdLabel, gridBagConstraints);
 
  591         acquisitionDetailsTextArea.setEditable(
false);
 
  592         acquisitionDetailsTextArea.setBackground(javax.swing.UIManager.getDefaults().getColor(
"TextArea.disabledBackground"));
 
  593         acquisitionDetailsTextArea.setColumns(20);
 
  594         acquisitionDetailsTextArea.setFont(
new java.awt.Font(
"Tahoma", 0, 11)); 
 
  595         acquisitionDetailsTextArea.setRows(4);
 
  596         acquisitionDetailsTextArea.setText(
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.acquisitionDetailsTextArea.text")); 
 
  597         acquisitionDetailsTextArea.setBorder(null);
 
  598         acquisitionDetailsScrollPane.setViewportView(acquisitionDetailsTextArea);
 
  600         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  601         gridBagConstraints.gridx = 1;
 
  602         gridBagConstraints.gridy = 6;
 
  603         gridBagConstraints.gridwidth = 4;
 
  604         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
  605         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  606         gridBagConstraints.weightx = 0.5;
 
  607         gridBagConstraints.weighty = 0.6;
 
  608         gridBagConstraints.insets = 
new java.awt.Insets(6, 0, 6, 10);
 
  609         jPanel1.add(acquisitionDetailsScrollPane, gridBagConstraints);
 
  610         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  611         gridBagConstraints.gridx = 0;
 
  612         gridBagConstraints.gridy = 15;
 
  613         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
  614         gridBagConstraints.weighty = 0.1;
 
  615         jPanel1.add(filler1, gridBagConstraints);
 
  616         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  617         gridBagConstraints.gridx = 1;
 
  618         gridBagConstraints.gridy = 15;
 
  619         gridBagConstraints.gridwidth = 4;
 
  620         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
  621         gridBagConstraints.weighty = 0.1;
 
  622         jPanel1.add(filler2, gridBagConstraints);
 
  624         org.openide.awt.Mnemonics.setLocalizedText(unallocatedSizeLabel, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.unallocatedSizeLabel.text")); 
 
  625         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  626         gridBagConstraints.gridx = 0;
 
  627         gridBagConstraints.gridy = 9;
 
  628         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  629         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  630         gridBagConstraints.insets = 
new java.awt.Insets(0, 10, 0, 4);
 
  631         jPanel1.add(unallocatedSizeLabel, gridBagConstraints);
 
  633         org.openide.awt.Mnemonics.setLocalizedText(unallocatedSizeValue, 
org.openide.util.NbBundle.getMessage(DataSourceSummaryDetailsPanel.class, 
"DataSourceSummaryDetailsPanel.unallocatedSizeValue.text")); 
 
  634         gridBagConstraints = 
new java.awt.GridBagConstraints();
 
  635         gridBagConstraints.gridx = 1;
 
  636         gridBagConstraints.gridy = 9;
 
  637         gridBagConstraints.gridwidth = 4;
 
  638         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 
  639         gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
 
  640         gridBagConstraints.weightx = 0.5;
 
  641         gridBagConstraints.insets = 
new java.awt.Insets(0, 0, 0, 10);
 
  642         jPanel1.add(unallocatedSizeValue, gridBagConstraints);
 
  644         jScrollPane1.setViewportView(jPanel1);
 
  646         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
  647         this.setLayout(layout);
 
  648         layout.setHorizontalGroup(
 
  649             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  650             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
 
  651                 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
 
  654         layout.setVerticalGroup(
 
  655             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  656             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
 
  662     private javax.swing.JLabel acquisitionDetailsLabel;
 
  663     private javax.swing.JScrollPane acquisitionDetailsScrollPane;
 
  664     private javax.swing.JTextArea acquisitionDetailsTextArea;
 
  665     private javax.swing.JLabel dataSourceUsageLabel;
 
  666     private javax.swing.JLabel dataSourceUsageValue;
 
  667     private javax.swing.JLabel deviceIdLabel;
 
  668     private javax.swing.JLabel deviceIdValue;
 
  669     private javax.swing.JLabel displayNameLabel;
 
  670     private javax.swing.JLabel displayNameValue;
 
  671     private javax.swing.JLabel filePathsLabel;
 
  672     private javax.swing.JScrollPane filePathsScrollPane;
 
  673     private javax.swing.JTable filePathsTable;
 
  674     private javax.swing.Box.Filler filler1;
 
  675     private javax.swing.Box.Filler filler2;
 
  676     private javax.swing.JLabel imageTypeLabel;
 
  677     private javax.swing.JLabel imageTypeValue;
 
  678     private javax.swing.JPanel jPanel1;
 
  679     private javax.swing.JScrollPane jScrollPane1;
 
  680     private javax.swing.JLabel md5HashLabel;
 
  681     private javax.swing.JLabel md5HashValue;
 
  682     private javax.swing.JLabel operatingSystemLabel;
 
  683     private javax.swing.JLabel operatingSystemValue;
 
  684     private javax.swing.JLabel originalNameLabel;
 
  685     private javax.swing.JLabel originalNameValue;
 
  686     private javax.swing.JLabel sectorSizeLabel;
 
  687     private javax.swing.JLabel sectorSizeValue;
 
  688     private javax.swing.JLabel sha1HashLabel;
 
  689     private javax.swing.JLabel sha1HashValue;
 
  690     private javax.swing.JLabel sha256HashLabel;
 
  691     private javax.swing.JLabel sha256HashValue;
 
  692     private javax.swing.JLabel sizeLabel;
 
  693     private javax.swing.JLabel sizeValue;
 
  694     private javax.swing.JLabel timeZoneLabel;
 
  695     private javax.swing.JLabel timeZoneValue;
 
  696     private javax.swing.JLabel unallocatedSizeLabel;
 
  697     private javax.swing.JLabel unallocatedSizeValue;