mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-14 17:06:16 +00:00
Merge remote-tracking branch 'upstream/release-4.19.0' into rcordovano-7747-os-acct-inst-create-evt
This commit is contained in:
commit
e00eb327e1
@ -22,6 +22,7 @@ import org.sleuthkit.autopsy.featureaccess.FeatureAccessUtils;
|
|||||||
import com.google.common.annotations.Beta;
|
import com.google.common.annotations.Beta;
|
||||||
import com.google.common.eventbus.Subscribe;
|
import com.google.common.eventbus.Subscribe;
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
|
import java.awt.Cursor;
|
||||||
import org.sleuthkit.autopsy.casemodule.multiusercases.CaseNodeData;
|
import org.sleuthkit.autopsy.casemodule.multiusercases.CaseNodeData;
|
||||||
import java.awt.Frame;
|
import java.awt.Frame;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
@ -1334,12 +1335,14 @@ public class Case {
|
|||||||
* opened via the DirectoryTreeTopComponent 'propertyChange()'
|
* opened via the DirectoryTreeTopComponent 'propertyChange()'
|
||||||
* method on a DATA_SOURCE_ADDED event.
|
* method on a DATA_SOURCE_ADDED event.
|
||||||
*/
|
*/
|
||||||
|
mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
if (hasData) {
|
if (hasData) {
|
||||||
CoreComponentControl.openCoreWindows();
|
CoreComponentControl.openCoreWindows();
|
||||||
} else {
|
} else {
|
||||||
//ensure that the DirectoryTreeTopComponent is open so that it's listener can open the core windows including making it visible.
|
//ensure that the DirectoryTreeTopComponent is open so that it's listener can open the core windows including making it visible.
|
||||||
DirectoryTreeTopComponent.findInstance();
|
DirectoryTreeTopComponent.findInstance();
|
||||||
}
|
}
|
||||||
|
mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reset the main window title to:
|
* Reset the main window title to:
|
||||||
|
@ -43,5 +43,5 @@ OtherOccurrencesPanel.showCommonalityMenuItem.text=Show Frequency
|
|||||||
OtherOccurrencesPanel.showCaseDetailsMenuItem.text=Show Case Details
|
OtherOccurrencesPanel.showCaseDetailsMenuItem.text=Show Case Details
|
||||||
OtherOccurrencesPanel.table.noArtifacts=Item has no attributes with which to search.
|
OtherOccurrencesPanel.table.noArtifacts=Item has no attributes with which to search.
|
||||||
OtherOccurrencesPanel.table.noResultsFound=No results found.
|
OtherOccurrencesPanel.table.noResultsFound=No results found.
|
||||||
OtherOccurrencesPanel_earliestCaseNotAvailable=Not Availble.
|
OtherOccurrencesPanel_earliestCaseNotAvailable=Not Available.
|
||||||
OtherOccurrencesPanel_table_loadingResults=Loading results
|
OtherOccurrencesPanel_table_loadingResults=Loading results
|
||||||
|
@ -34,8 +34,6 @@
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Component class="javax.swing.JFileChooser" name="CSVFileChooser">
|
|
||||||
</Component>
|
|
||||||
</NonVisualComponents>
|
</NonVisualComponents>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
|
@ -35,6 +35,9 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
@ -46,7 +49,6 @@ import javax.swing.SwingWorker;
|
|||||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||||
import javax.swing.table.TableModel;
|
import javax.swing.table.TableModel;
|
||||||
import javax.swing.table.TableRowSorter;
|
import javax.swing.table.TableRowSorter;
|
||||||
import org.openide.util.Exceptions;
|
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
@ -71,7 +73,6 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
private static final CorrelationCaseWrapper NO_ARTIFACTS_CASE = new CorrelationCaseWrapper(Bundle.OtherOccurrencesPanel_table_noArtifacts());
|
private static final CorrelationCaseWrapper NO_ARTIFACTS_CASE = new CorrelationCaseWrapper(Bundle.OtherOccurrencesPanel_table_noArtifacts());
|
||||||
private static final CorrelationCaseWrapper NO_RESULTS_CASE = new CorrelationCaseWrapper(Bundle.OtherOccurrencesPanel_table_noResultsFound());
|
private static final CorrelationCaseWrapper NO_RESULTS_CASE = new CorrelationCaseWrapper(Bundle.OtherOccurrencesPanel_table_noResultsFound());
|
||||||
private static final CorrelationCaseWrapper LOADING_CASE = new CorrelationCaseWrapper(Bundle.OtherOccurrencesPanel_table_loadingResults());
|
|
||||||
private static final Logger logger = Logger.getLogger(OtherOccurrencesPanel.class.getName());
|
private static final Logger logger = Logger.getLogger(OtherOccurrencesPanel.class.getName());
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private final OtherOccurrencesFilesTableModel filesTableModel;
|
private final OtherOccurrencesFilesTableModel filesTableModel;
|
||||||
@ -84,6 +85,11 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
private AbstractFile file = null;
|
private AbstractFile file = null;
|
||||||
|
|
||||||
private SwingWorker<?, ?> worker;
|
private SwingWorker<?, ?> worker;
|
||||||
|
|
||||||
|
// Initializing the JFileChooser in a thread to prevent a block on the EDT
|
||||||
|
// see https://stackoverflow.com/questions/49792375/jfilechooser-is-very-slow-when-using-windows-look-and-feel
|
||||||
|
private final FutureTask<JFileChooser> futureFileChooser = new FutureTask<>(JFileChooser::new);
|
||||||
|
private JFileChooser CSVFileChooser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form OtherOccurrencesPanel
|
* Creates new form OtherOccurrencesPanel
|
||||||
@ -93,9 +99,11 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
this.casesTableModel = new OtherOccurrencesCasesTableModel();
|
this.casesTableModel = new OtherOccurrencesCasesTableModel();
|
||||||
this.dataSourcesTableModel = new OtherOccurrencesDataSourcesTableModel();
|
this.dataSourcesTableModel = new OtherOccurrencesDataSourcesTableModel();
|
||||||
this.correlationAttributes = new ArrayList<>();
|
this.correlationAttributes = new ArrayList<>();
|
||||||
occurrencePanel = new OccurrencePanel();
|
|
||||||
initComponents();
|
initComponents();
|
||||||
customizeComponents();
|
customizeComponents();
|
||||||
|
|
||||||
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
|
executor.execute(futureFileChooser);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void customizeComponents() {
|
private void customizeComponents() {
|
||||||
@ -245,6 +253,18 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
private void saveToCSV() throws NoCurrentCaseException {
|
private void saveToCSV() throws NoCurrentCaseException {
|
||||||
if (casesTableModel.getRowCount() > 0) {
|
if (casesTableModel.getRowCount() > 0) {
|
||||||
|
|
||||||
|
if(CSVFileChooser == null) {
|
||||||
|
try{
|
||||||
|
CSVFileChooser = futureFileChooser.get();
|
||||||
|
} catch (InterruptedException | ExecutionException ex) {
|
||||||
|
// If something happened with the thread try and
|
||||||
|
// initalized the chooser now
|
||||||
|
logger.log(Level.WARNING, "A failure occurred in the JFileChooser background thread");
|
||||||
|
CSVFileChooser = new JFileChooser();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Calendar now = Calendar.getInstance();
|
Calendar now = Calendar.getInstance();
|
||||||
String fileName = String.format("%1$tY%1$tm%1$te%1$tI%1$tM%1$tS_other_data_sources.csv", now);
|
String fileName = String.format("%1$tY%1$tm%1$te%1$tI%1$tM%1$tS_other_data_sources.csv", now);
|
||||||
CSVFileChooser.setCurrentDirectory(new File(Case.getCurrentCaseThrows().getExportDirectory()));
|
CSVFileChooser.setCurrentDirectory(new File(Case.getCurrentCaseThrows().getExportDirectory()));
|
||||||
@ -258,13 +278,13 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
if (!selectedFile.getName().endsWith(".csv")) { // NON-NLS
|
if (!selectedFile.getName().endsWith(".csv")) { // NON-NLS
|
||||||
selectedFile = new File(selectedFile.toString() + ".csv"); // NON-NLS
|
selectedFile = new File(selectedFile.toString() + ".csv"); // NON-NLS
|
||||||
}
|
}
|
||||||
CSVWorker worker = new CSVWorker(selectedFile, file, dataSourceName, deviceId, Collections.unmodifiableCollection(correlationAttributes));
|
CSVWorker csvWorker = new CSVWorker(selectedFile, file, dataSourceName, deviceId, Collections.unmodifiableCollection(correlationAttributes));
|
||||||
worker.execute();
|
csvWorker.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NbBundle.Messages({"OtherOccurrencesPanel_earliestCaseNotAvailable=Not Availble."})
|
@NbBundle.Messages({"OtherOccurrencesPanel_earliestCaseNotAvailable=Not Available."})
|
||||||
/**
|
/**
|
||||||
* Reset the UI and clear cached data.
|
* Reset the UI and clear cached data.
|
||||||
*/
|
*/
|
||||||
@ -685,7 +705,6 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
exportToCSVMenuItem = new javax.swing.JMenuItem();
|
exportToCSVMenuItem = new javax.swing.JMenuItem();
|
||||||
showCaseDetailsMenuItem = new javax.swing.JMenuItem();
|
showCaseDetailsMenuItem = new javax.swing.JMenuItem();
|
||||||
showCommonalityMenuItem = new javax.swing.JMenuItem();
|
showCommonalityMenuItem = new javax.swing.JMenuItem();
|
||||||
CSVFileChooser = new javax.swing.JFileChooser();
|
|
||||||
tableContainerPanel = new javax.swing.JPanel();
|
tableContainerPanel = new javax.swing.JPanel();
|
||||||
tablesViewerSplitPane = new javax.swing.JSplitPane();
|
tablesViewerSplitPane = new javax.swing.JSplitPane();
|
||||||
caseDatasourceFileSplitPane = new javax.swing.JSplitPane();
|
caseDatasourceFileSplitPane = new javax.swing.JSplitPane();
|
||||||
@ -704,12 +723,12 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
|
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
|
||||||
|
|
||||||
rightClickPopupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
|
rightClickPopupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
|
||||||
public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
|
public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
|
||||||
rightClickPopupMenuPopupMenuWillBecomeVisible(evt);
|
|
||||||
}
|
}
|
||||||
public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
|
public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
|
||||||
}
|
}
|
||||||
public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
|
public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
|
||||||
|
rightClickPopupMenuPopupMenuWillBecomeVisible(evt);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -857,7 +876,6 @@ public final class OtherOccurrencesPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.JFileChooser CSVFileChooser;
|
|
||||||
private javax.swing.JSplitPane caseDatasourceFileSplitPane;
|
private javax.swing.JSplitPane caseDatasourceFileSplitPane;
|
||||||
private javax.swing.JSplitPane caseDatasourceSplitPane;
|
private javax.swing.JSplitPane caseDatasourceSplitPane;
|
||||||
private javax.swing.JScrollPane caseScrollPane;
|
private javax.swing.JScrollPane caseScrollPane;
|
||||||
|
@ -34,6 +34,9 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import static java.util.Objects.nonNull;
|
import static java.util.Objects.nonNull;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@ -150,7 +153,7 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan
|
|||||||
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
||||||
private final JMenuItem exportTagsMenuItem;
|
private final JMenuItem exportTagsMenuItem;
|
||||||
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
||||||
private final JFileChooser exportChooser;
|
private JFileChooser exportChooser;
|
||||||
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
||||||
private final JFXPanel fxPanel;
|
private final JFXPanel fxPanel;
|
||||||
|
|
||||||
@ -189,10 +192,10 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan
|
|||||||
@ThreadConfined(type = ThreadConfined.ThreadType.JFX)
|
@ThreadConfined(type = ThreadConfined.ThreadType.JFX)
|
||||||
private Task<Image> readImageFileTask;
|
private Task<Image> readImageFileTask;
|
||||||
private volatile ImageTransforms imageTransforms;
|
private volatile ImageTransforms imageTransforms;
|
||||||
|
|
||||||
static {
|
// Initializing the JFileChooser in a thread to prevent a block on the EDT
|
||||||
ImageIO.scanForPlugins();
|
// see https://stackoverflow.com/questions/49792375/jfilechooser-is-very-slow-when-using-windows-look-and-feel
|
||||||
}
|
private final FutureTask<JFileChooser> futureFileChooser = new FutureTask<>(JFileChooser::new);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a media image file viewer implemented as a Swing panel that
|
* Constructs a media image file viewer implemented as a Swing panel that
|
||||||
@ -210,9 +213,9 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan
|
|||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
imageTransforms = new ImageTransforms(0, 0, true);
|
imageTransforms = new ImageTransforms(0, 0, true);
|
||||||
|
|
||||||
exportChooser = new JFileChooser();
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
exportChooser.setDialogTitle(Bundle.MediaViewImagePanel_fileChooserTitle());
|
executor.execute(futureFileChooser);
|
||||||
|
|
||||||
//Build popupMenu when Tags Menu button is pressed.
|
//Build popupMenu when Tags Menu button is pressed.
|
||||||
imageTaggingOptions = new JPopupMenu();
|
imageTaggingOptions = new JPopupMenu();
|
||||||
@ -1043,6 +1046,18 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan
|
|||||||
final AbstractFile file = imageFile;
|
final AbstractFile file = imageFile;
|
||||||
tagsGroup.clearFocus();
|
tagsGroup.clearFocus();
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
|
||||||
|
if(exportChooser == null) {
|
||||||
|
try {
|
||||||
|
exportChooser = futureFileChooser.get();
|
||||||
|
} catch (InterruptedException | ExecutionException ex) {
|
||||||
|
// If something happened with the thread try and
|
||||||
|
// initalized the chooser now
|
||||||
|
logger.log(Level.WARNING, "A failure occurred in the JFileChooser background thread");
|
||||||
|
exportChooser = new JFileChooser();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
exportChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
exportChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||||
//Always base chooser location to export folder
|
//Always base chooser location to export folder
|
||||||
exportChooser.setCurrentDirectory(new File(Case.getCurrentCase().getExportDirectory()));
|
exportChooser.setCurrentDirectory(new File(Case.getCurrentCase().getExportDirectory()));
|
||||||
|
@ -33,6 +33,7 @@ import java.util.logging.Handler;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.embed.swing.JFXPanel;
|
import javafx.embed.swing.JFXPanel;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import net.sf.sevenzipjbinding.SevenZip;
|
import net.sf.sevenzipjbinding.SevenZip;
|
||||||
import net.sf.sevenzipjbinding.SevenZipNativeInitializationException;
|
import net.sf.sevenzipjbinding.SevenZipNativeInitializationException;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
@ -44,6 +45,7 @@ import org.openide.windows.WindowManager;
|
|||||||
import org.sleuthkit.autopsy.actions.IngestRunningCheck;
|
import org.sleuthkit.autopsy.actions.IngestRunningCheck;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import static org.sleuthkit.autopsy.core.UserPreferences.SETTINGS_PROPERTIES;
|
import static org.sleuthkit.autopsy.core.UserPreferences.SETTINGS_PROPERTIES;
|
||||||
|
import org.sleuthkit.autopsy.corelibs.OpenCvLoader;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
@ -66,6 +68,13 @@ public class Installer extends ModuleInstall {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
loadDynLibraries();
|
loadDynLibraries();
|
||||||
|
|
||||||
|
// This call was moved from MediaViewImagePanel so that it is
|
||||||
|
// not called during top level component construction.
|
||||||
|
ImageIO.scanForPlugins();
|
||||||
|
|
||||||
|
// This will cause OpenCvLoader to load its library instead of
|
||||||
|
OpenCvLoader.openCvIsLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void loadDynLibraries() {
|
private static void loadDynLibraries() {
|
||||||
|
@ -194,7 +194,7 @@ public class ImageUtils {
|
|||||||
public static SortedSet<String> getSupportedImageMimeTypes() {
|
public static SortedSet<String> getSupportedImageMimeTypes() {
|
||||||
return Collections.unmodifiableSortedSet(SUPPORTED_IMAGE_MIME_TYPES);
|
return Collections.unmodifiableSortedSet(SUPPORTED_IMAGE_MIME_TYPES);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default thumbnail, which is the icon for a file. Used when we can
|
* Get the default thumbnail, which is the icon for a file. Used when we can
|
||||||
* not generate a content based thumbnail.
|
* not generate a content based thumbnail.
|
||||||
|
@ -80,6 +80,7 @@ import static org.sleuthkit.autopsy.datamodel.AbstractContentNode.NO_DESCR;
|
|||||||
import org.sleuthkit.autopsy.texttranslation.TextTranslationService;
|
import org.sleuthkit.autopsy.texttranslation.TextTranslationService;
|
||||||
import org.sleuthkit.autopsy.datamodel.utils.FileNameTransTask;
|
import org.sleuthkit.autopsy.datamodel.utils.FileNameTransTask;
|
||||||
import org.sleuthkit.datamodel.AnalysisResult;
|
import org.sleuthkit.datamodel.AnalysisResult;
|
||||||
|
import org.sleuthkit.datamodel.BlackboardArtifact.Category;
|
||||||
import org.sleuthkit.datamodel.Score;
|
import org.sleuthkit.datamodel.Score;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,17 +110,6 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
Case.Events.CR_COMMENT_CHANGED,
|
Case.Events.CR_COMMENT_CHANGED,
|
||||||
Case.Events.CURRENT_CASE);
|
Case.Events.CURRENT_CASE);
|
||||||
|
|
||||||
/*
|
|
||||||
* Artifact types for which the unique path of the artifact's source content
|
|
||||||
* should be displayed in the node's property sheet.
|
|
||||||
*/
|
|
||||||
private static final Integer[] SHOW_UNIQUE_PATH = new Integer[]{
|
|
||||||
BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT.getTypeID(),
|
|
||||||
BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID(),
|
|
||||||
BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT.getTypeID(),
|
|
||||||
BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_ARTIFACT_HIT.getTypeID()
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Artifact types for which the file metadata of the artifact's source file
|
* Artifact types for which the file metadata of the artifact's source file
|
||||||
* should be displayed in the node's property sheet.
|
* should be displayed in the node's property sheet.
|
||||||
@ -129,6 +119,7 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
};
|
};
|
||||||
|
|
||||||
private final BlackboardArtifact artifact;
|
private final BlackboardArtifact artifact;
|
||||||
|
private final BlackboardArtifact.Type artifactType;
|
||||||
private Content srcContent;
|
private Content srcContent;
|
||||||
private volatile String translatedSourceName;
|
private volatile String translatedSourceName;
|
||||||
|
|
||||||
@ -237,6 +228,8 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
public BlackboardArtifactNode(BlackboardArtifact artifact, String iconPath) {
|
public BlackboardArtifactNode(BlackboardArtifact artifact, String iconPath) {
|
||||||
super(artifact, createLookup(artifact, false));
|
super(artifact, createLookup(artifact, false));
|
||||||
this.artifact = artifact;
|
this.artifact = artifact;
|
||||||
|
this.artifactType = getType(artifact);
|
||||||
|
|
||||||
for (Content lookupContent : this.getLookup().lookupAll(Content.class)) {
|
for (Content lookupContent : this.getLookup().lookupAll(Content.class)) {
|
||||||
if ((lookupContent != null) && (!(lookupContent instanceof BlackboardArtifact))) {
|
if ((lookupContent != null) && (!(lookupContent instanceof BlackboardArtifact))) {
|
||||||
srcContent = lookupContent;
|
srcContent = lookupContent;
|
||||||
@ -278,6 +271,8 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
public BlackboardArtifactNode(BlackboardArtifact artifact, boolean lookupIsAssociatedFile) {
|
public BlackboardArtifactNode(BlackboardArtifact artifact, boolean lookupIsAssociatedFile) {
|
||||||
super(artifact, createLookup(artifact, lookupIsAssociatedFile));
|
super(artifact, createLookup(artifact, lookupIsAssociatedFile));
|
||||||
this.artifact = artifact;
|
this.artifact = artifact;
|
||||||
|
this.artifactType = getType(artifact);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//The lookup for a file may or may not exist so we define the srcContent as the parent.
|
//The lookup for a file may or may not exist so we define the srcContent as the parent.
|
||||||
srcContent = artifact.getParent();
|
srcContent = artifact.getParent();
|
||||||
@ -317,6 +312,20 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
public BlackboardArtifactNode(BlackboardArtifact artifact) {
|
public BlackboardArtifactNode(BlackboardArtifact artifact) {
|
||||||
this(artifact, IconsUtil.getIconFilePath(artifact.getArtifactTypeID()));
|
this(artifact, IconsUtil.getIconFilePath(artifact.getArtifactTypeID()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the artifact type of the artifact.
|
||||||
|
* @param artifact The artifact.
|
||||||
|
* @return The artifact type or null if no type could be retrieved.
|
||||||
|
*/
|
||||||
|
private static BlackboardArtifact.Type getType(BlackboardArtifact artifact) {
|
||||||
|
try {
|
||||||
|
return artifact.getType();
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
logger.log(Level.WARNING, MessageFormat.format("Error getting the artifact type for artifact (artifact objID={0})", artifact.getId()), ex);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a Lookup object for this node and populates it with both the
|
* Creates a Lookup object for this node and populates it with both the
|
||||||
@ -655,7 +664,7 @@ public class BlackboardArtifactNode extends AbstractContentNode<BlackboardArtifa
|
|||||||
* If the type of the artifact represented by this node dictates the
|
* If the type of the artifact represented by this node dictates the
|
||||||
* addition of the source content's unique path, add it to the sheet.
|
* addition of the source content's unique path, add it to the sheet.
|
||||||
*/
|
*/
|
||||||
if (Arrays.asList(SHOW_UNIQUE_PATH).contains(artifactTypeId)) {
|
if (artifactType != null && artifactType.getCategory() == Category.ANALYSIS_RESULT) {
|
||||||
String sourcePath = ""; //NON-NLS
|
String sourcePath = ""; //NON-NLS
|
||||||
try {
|
try {
|
||||||
sourcePath = srcContent.getUniquePath();
|
sourcePath = srcContent.getUniquePath();
|
||||||
|
@ -228,7 +228,7 @@ public class HostNode extends DisplayableItemNode {
|
|||||||
* @param hostGrouping The HostGrouping key.
|
* @param hostGrouping The HostGrouping key.
|
||||||
*/
|
*/
|
||||||
HostNode(HostGrouping hostGrouping) {
|
HostNode(HostGrouping hostGrouping) {
|
||||||
this(Children.create(new HostGroupingChildren(HOST_GROUPING_CONVERTER, hostGrouping.getHost()), false), hostGrouping.getHost());
|
this(Children.create(new HostGroupingChildren(HOST_GROUPING_CONVERTER, hostGrouping.getHost()), true), hostGrouping.getHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,6 +33,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.prefs.PreferenceChangeEvent;
|
import java.util.prefs.PreferenceChangeEvent;
|
||||||
@ -44,14 +45,11 @@ import javax.swing.SwingUtilities;
|
|||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import javax.swing.event.PopupMenuEvent;
|
import javax.swing.event.PopupMenuEvent;
|
||||||
import javax.swing.event.PopupMenuListener;
|
import javax.swing.event.PopupMenuListener;
|
||||||
import javax.swing.event.TreeExpansionEvent;
|
|
||||||
import javax.swing.event.TreeExpansionListener;
|
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
import javax.swing.tree.TreeSelectionModel;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openide.explorer.ExplorerManager;
|
import org.openide.explorer.ExplorerManager;
|
||||||
import org.openide.explorer.ExplorerUtils;
|
import org.openide.explorer.ExplorerUtils;
|
||||||
import org.openide.explorer.view.BeanTreeView;
|
import org.openide.explorer.view.BeanTreeView;
|
||||||
import org.openide.explorer.view.Visualizer;
|
|
||||||
import org.openide.nodes.AbstractNode;
|
import org.openide.nodes.AbstractNode;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
@ -126,6 +124,10 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
private static final String GROUPING_THRESHOLD_NAME = "GroupDataSourceThreshold";
|
private static final String GROUPING_THRESHOLD_NAME = "GroupDataSourceThreshold";
|
||||||
private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS
|
private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS
|
||||||
|
|
||||||
|
// nodes to be opened if present at top level
|
||||||
|
private static final Set<String> NODES_TO_EXPAND = Stream.of(AnalysisResults.getName(), DataArtifacts.getName(), ViewsNode.NAME)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the constructor
|
* the constructor
|
||||||
*/
|
*/
|
||||||
@ -134,31 +136,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
|
|
||||||
// only allow one item to be selected at a time
|
// only allow one item to be selected at a time
|
||||||
getTree().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
getTree().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
||||||
//Hook into the JTree and pre-expand the Views Node and Results node when a user
|
|
||||||
//expands an item in the tree that makes these nodes visible.
|
|
||||||
((ExpansionBeanTreeView) getTree()).addTreeExpansionListener(new TreeExpansionListener() {
|
|
||||||
@Override
|
|
||||||
public void treeExpanded(TreeExpansionEvent event) {
|
|
||||||
//Bail immediately if we are not in the Group By view.
|
|
||||||
//Assumption here is that the views are already expanded.
|
|
||||||
if (!CasePreferences.getGroupItemsInTreeByDataSource()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Node expandedNode = Visualizer.findNode(event.getPath().getLastPathComponent());
|
|
||||||
for (Node child : em.getRootContext().getChildren().getNodes()) {
|
|
||||||
if (child.equals(expandedNode)) {
|
|
||||||
preExpandNodes(child.getChildren());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void treeCollapsed(TreeExpansionEvent event) {
|
|
||||||
//Do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
// remove the close button
|
// remove the close button
|
||||||
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);
|
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);
|
||||||
setName(NbBundle.getMessage(DirectoryTreeTopComponent.class, "CTL_DirectoryTreeTopComponent"));
|
setName(NbBundle.getMessage(DirectoryTreeTopComponent.class, "CTL_DirectoryTreeTopComponent"));
|
||||||
@ -201,30 +179,23 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
*/
|
*/
|
||||||
private void preExpandNodes(Children rootChildren) {
|
private void preExpandNodes(Children rootChildren) {
|
||||||
BeanTreeView tree = getTree();
|
BeanTreeView tree = getTree();
|
||||||
for (String categoryKey : new String[]{AnalysisResults.getName(), DataArtifacts.getName()}) {
|
|
||||||
Node categoryNode = rootChildren.findChild(categoryKey);
|
|
||||||
|
|
||||||
if (!Objects.isNull(categoryNode)) {
|
// using getNodes(true) to fetch children so that async nodes are loaded
|
||||||
tree.expandNode(categoryNode);
|
Node[] rootChildrenNodes = rootChildren.getNodes(true);
|
||||||
Children resultsChildren = categoryNode.getChildren();
|
if (rootChildrenNodes == null || rootChildrenNodes.length < 1) {
|
||||||
Arrays.stream(resultsChildren.getNodes()).forEach(tree::expandNode);
|
return;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Node views = rootChildren.findChild(ViewsNode.NAME);
|
|
||||||
if (!Objects.isNull(views)) {
|
|
||||||
tree.expandNode(views);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// expand all nodes parents of and including hosts if group by host/person
|
// expand all nodes parents of and including hosts if group by host/person
|
||||||
if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) {
|
if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) {
|
||||||
Node[] rootNodes = rootChildren.getNodes();
|
Stream.of(rootChildrenNodes)
|
||||||
if (rootNodes != null) {
|
.flatMap((n) -> getHostNodesAndParents(n).stream())
|
||||||
Stream.of(rootNodes)
|
.filter((n) -> n != null)
|
||||||
.flatMap((n) -> getHostNodesAndParents(n).stream())
|
.forEach(tree::expandNode);
|
||||||
.filter((n) -> n != null)
|
} else {
|
||||||
.forEach((n) -> tree.expandNode(n));
|
Stream.of(rootChildrenNodes)
|
||||||
}
|
.filter(n -> n != null && NODES_TO_EXPAND.contains(n.getName()))
|
||||||
|
.forEach(tree::expandNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,11 +57,11 @@
|
|||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
|
||||||
<Component id="descLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="descLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="jAllSetsCheckBox" min="-2" max="-2" attributes="0"/>
|
<Component id="jAllSetsCheckBox" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jScrollPane1" min="-2" pref="164" max="-2" attributes="0"/>
|
<Component id="jScrollPane1" pref="159" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="selectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="selectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="deselectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="deselectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
@ -299,10 +299,10 @@ class PortableCaseInterestingItemsListPanel extends javax.swing.JPanel {
|
|||||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||||
.addGap(6, 6, 6)
|
.addGap(6, 6, 6)
|
||||||
.addComponent(descLabel)
|
.addComponent(descLabel)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(jAllSetsCheckBox)
|
.addComponent(jAllSetsCheckBox)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
@ -56,11 +56,11 @@
|
|||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="descLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="descLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="jAllTagsCheckBox" min="-2" max="-2" attributes="0"/>
|
<Component id="jAllTagsCheckBox" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jScrollPane1" min="-2" pref="168" max="-2" attributes="0"/>
|
<Component id="jScrollPane1" pref="163" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="selectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="selectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="deselectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="deselectButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
@ -331,10 +331,10 @@ class PortableCaseTagsListPanel extends javax.swing.JPanel {
|
|||||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||||
.addComponent(descLabel)
|
.addComponent(descLabel)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(jAllTagsCheckBox)
|
.addComponent(jAllTagsCheckBox)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 163, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
@ -26,26 +26,25 @@
|
|||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="allTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="dataLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="allResultsRadioButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="specificTaggedResultsRadioButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace min="-2" pref="27" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="10" max="-2" attributes="0"/>
|
||||||
<Component id="tagsScrollPane" max="32767" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
|
||||||
<Component id="deselectAllButton" linkSize="1" max="32767" attributes="0"/>
|
|
||||||
<Component id="selectAllButton" linkSize="1" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="allTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
<Component id="advancedButton" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="dataLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Group type="102" attributes="0">
|
||||||
<Component id="allResultsRadioButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Component id="tagsScrollPane" pref="699" max="32767" attributes="0"/>
|
||||||
<Component id="specificTaggedResultsRadioButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="advancedButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
||||||
|
<Component id="deselectAllButton" linkSize="1" max="32767" attributes="0"/>
|
||||||
|
<Component id="selectAllButton" linkSize="1" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="0" pref="454" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
@ -55,15 +54,15 @@
|
|||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="dataLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="dataLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="allResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
<Component id="allResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="allTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
<Component id="allTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="specificTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
<Component id="specificTaggedResultsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="selectAllButton" min="-2" max="-2" attributes="0"/>
|
<Component id="selectAllButton" min="-2" max="-2" attributes="0"/>
|
||||||
@ -72,12 +71,13 @@
|
|||||||
<EmptySpace min="-2" pref="136" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="136" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" alignment="1" attributes="0">
|
<Group type="102" alignment="1" attributes="0">
|
||||||
<Component id="tagsScrollPane" min="-2" pref="150" max="-2" attributes="0"/>
|
<EmptySpace min="1" pref="1" max="-2" attributes="0"/>
|
||||||
|
<Component id="tagsScrollPane" max="32767" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="5" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="5" max="-2" attributes="0"/>
|
||||||
<Component id="advancedButton" min="-2" max="-2" attributes="0"/>
|
<Component id="advancedButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -366,21 +366,20 @@ final class ReportVisualPanel2 extends JPanel {
|
|||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(allTaggedResultsRadioButton)
|
||||||
|
.addComponent(dataLabel)
|
||||||
|
.addComponent(allResultsRadioButton)
|
||||||
|
.addComponent(specificTaggedResultsRadioButton)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGap(27, 27, 27)
|
.addGap(10, 10, 10)
|
||||||
.addComponent(tagsScrollPane)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
|
||||||
.addComponent(deselectAllButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addComponent(selectAllButton, 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.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(allTaggedResultsRadioButton)
|
.addComponent(advancedButton)
|
||||||
.addComponent(dataLabel)
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(allResultsRadioButton)
|
.addComponent(tagsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 699, Short.MAX_VALUE)
|
||||||
.addComponent(specificTaggedResultsRadioButton)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(advancedButton))
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||||
.addGap(0, 454, Short.MAX_VALUE)))
|
.addComponent(deselectAllButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(selectAllButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))))
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -397,7 +396,7 @@ final class ReportVisualPanel2 extends JPanel {
|
|||||||
.addComponent(allTaggedResultsRadioButton)
|
.addComponent(allTaggedResultsRadioButton)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(specificTaggedResultsRadioButton)
|
.addComponent(specificTaggedResultsRadioButton)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addGap(18, 18, 18)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(selectAllButton)
|
.addComponent(selectAllButton)
|
||||||
@ -405,10 +404,11 @@ final class ReportVisualPanel2 extends JPanel {
|
|||||||
.addComponent(deselectAllButton)
|
.addComponent(deselectAllButton)
|
||||||
.addGap(136, 136, 136))
|
.addGap(136, 136, 136))
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
.addComponent(tagsScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addGap(1, 1, 1)
|
||||||
|
.addComponent(tagsScrollPane)
|
||||||
.addGap(5, 5, 5)
|
.addGap(5, 5, 5)
|
||||||
.addComponent(advancedButton)
|
.addComponent(advancedButton)))
|
||||||
.addContainerGap())))
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[834, 374]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
@ -155,6 +155,8 @@ class ReportWizardPortableCaseOptionsVisualPanel extends javax.swing.JPanel {
|
|||||||
listPanel = new javax.swing.JPanel();
|
listPanel = new javax.swing.JPanel();
|
||||||
includeAppCheckbox = new javax.swing.JCheckBox();
|
includeAppCheckbox = new javax.swing.JCheckBox();
|
||||||
|
|
||||||
|
setPreferredSize(new java.awt.Dimension(834, 374));
|
||||||
|
|
||||||
chunkSizeComboBox.addActionListener(new java.awt.event.ActionListener() {
|
chunkSizeComboBox.addActionListener(new java.awt.event.ActionListener() {
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
chunkSizeComboBoxActionPerformed(evt);
|
chunkSizeComboBoxActionPerformed(evt);
|
||||||
|
@ -49,18 +49,18 @@
|
|||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jAllTagsCheckBox" min="-2" max="-2" attributes="0"/>
|
<Component id="jAllTagsCheckBox" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="selectAllButton" min="-2" max="-2" attributes="0"/>
|
<Component id="selectAllButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="deselectAllButton" min="-2" max="-2" attributes="0"/>
|
<Component id="deselectAllButton" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="jScrollPane1" min="-2" pref="112" max="-2" attributes="0"/>
|
<Component id="jScrollPane1" pref="112" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
@ -87,7 +87,7 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/>
|
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<TagName>"/>
|
||||||
</AuxValues>
|
</AuxValues>
|
||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
|
@ -322,7 +322,7 @@ class SaveTaggedHashesToHashDbConfigPanel extends javax.swing.JPanel {
|
|||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(jLabel1)
|
.addComponent(jLabel1)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(jAllTagsCheckBox)
|
.addComponent(jAllTagsCheckBox)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
@ -330,7 +330,7 @@ class SaveTaggedHashesToHashDbConfigPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(selectAllButton)
|
.addComponent(selectAllButton)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(deselectAllButton))
|
.addComponent(deselectAllButton))
|
||||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jLabel2)
|
.addComponent(jLabel2)
|
||||||
.addGap(4, 4, 4)
|
.addGap(4, 4, 4)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user