19 package org.sleuthkit.autopsy.centralrepository.optionspanel;
22 import java.beans.PropertyChangeEvent;
23 import java.beans.PropertyChangeListener;
24 import javax.swing.SwingUtilities;
25 import org.netbeans.spi.options.OptionsPanelController;
26 import org.openide.util.NbBundle.Messages;
58 @Messages({
"GlobalSettingsPanel.title=Central Repository Settings",
59 "GlobalSettingsPanel.cbUseCentralRepo.text=Use a central repository",
60 "GlobalSettingsPanel.pnTagManagement.border.title=Tags",
61 "GlobalSettingsPanel.pnCorrelationProperties.border.title=Correlation Properties",
62 "GlobalSettingsPanel.lbCentralRepository.text=A central repository allows you to correlate files and results between cases.",
63 "GlobalSettingsPanel.manageTagsTextArea.text=Configure which tag names are associated with notable items. "
64 +
"When these tags are used, the file or result will be recorded in the central repository. "
65 +
"If that file or result is seen again in future cases, it will be flagged.",
66 "GlobalSettingsPanel.correlationPropertiesTextArea.text=Choose which file and result properties to store in the central repository for later correlation."})
68 setName(Bundle.GlobalSettingsPanel_title());
84 @SuppressWarnings(
"unchecked")
102 tbOops =
new javax.swing.JTextField();
111 pnDatabaseConfiguration.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
org.openide.util.NbBundle.getMessage(
GlobalSettingsPanel.class,
"GlobalSettingsPanel.pnDatabaseConfiguration.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new java.awt.Font(
"Tahoma", 0, 12)));
120 bnDbConfigure.addActionListener(
new java.awt.event.ActionListener() {
121 public void actionPerformed(java.awt.event.ActionEvent evt) {
128 pnDatabaseConfigurationLayout.setHorizontalGroup(
129 pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
130 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
132 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
133 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
136 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
137 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
138 .addComponent(
lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
139 .addComponent(
lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
140 .addComponent(
lbDbLocationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))
141 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
142 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
143 .addComponent(
lbDbNameValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
144 .addComponent(
lbDbPlatformValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
145 .addComponent(
lbDbLocationValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
147 pnDatabaseConfigurationLayout.setVerticalGroup(
148 pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
149 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
151 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
152 .addComponent(
lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
153 .addComponent(
lbDbPlatformValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
154 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
155 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
156 .addComponent(
lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
157 .addComponent(
lbDbNameValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
158 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
159 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
160 .addComponent(
lbDbLocationLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
161 .addComponent(
lbDbLocationValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
162 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
169 public void actionPerformed(java.awt.event.ActionEvent evt) {
174 bnImportDatabase.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/centralrepository/images/import16.png")));
178 public void actionPerformed(java.awt.event.ActionEvent evt) {
183 pnTagManagement.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
org.openide.util.NbBundle.getMessage(
GlobalSettingsPanel.class,
"GlobalSettingsPanel.pnTagManagement.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new java.awt.Font(
"Tahoma", 0, 12)));
189 bnManageTags.addActionListener(
new java.awt.event.ActionListener() {
190 public void actionPerformed(java.awt.event.ActionEvent evt) {
209 javax.swing.GroupLayout pnTagManagementLayout =
new javax.swing.GroupLayout(
pnTagManagement);
211 pnTagManagementLayout.setHorizontalGroup(
212 pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
213 .addGroup(pnTagManagementLayout.createSequentialGroup()
215 .addGroup(pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
216 .addGroup(pnTagManagementLayout.createSequentialGroup()
218 .addGap(0, 555, Short.MAX_VALUE))
219 .addGroup(pnTagManagementLayout.createSequentialGroup()
221 .addContainerGap())))
223 pnTagManagementLayout.setVerticalGroup(
224 pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
225 .addGroup(pnTagManagementLayout.createSequentialGroup()
227 .addComponent(
manageTagsScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
228 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
229 .addComponent(
bnManageTags, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
233 tbOops.setEditable(
false);
234 tbOops.setFont(
tbOops.getFont().deriveFont(
tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
237 tbOops.addActionListener(
new java.awt.event.ActionListener() {
238 public void actionPerformed(java.awt.event.ActionEvent evt) {
243 pnCorrelationProperties.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
org.openide.util.NbBundle.getMessage(
GlobalSettingsPanel.class,
"GlobalSettingsPanel.pnCorrelationProperties.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new java.awt.Font(
"Tahoma", 0, 12)));
247 bnManageTypes.addActionListener(
new java.awt.event.ActionListener() {
248 public void actionPerformed(java.awt.event.ActionEvent evt) {
269 pnCorrelationPropertiesLayout.setHorizontalGroup(
270 pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
271 .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
273 .addGroup(pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
275 .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
277 .addGap(0, 0, Short.MAX_VALUE)))
280 pnCorrelationPropertiesLayout.setVerticalGroup(
281 pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
282 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnCorrelationPropertiesLayout.createSequentialGroup()
284 .addComponent(
correlationPropertiesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
285 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
292 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
293 this.setLayout(layout);
294 layout.setHorizontalGroup(
295 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
296 .addGroup(layout.createSequentialGroup()
298 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
299 .addComponent(
tbOops, javax.swing.GroupLayout.Alignment.TRAILING)
300 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
301 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
302 .addComponent(
lbCentralRepository, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
303 .addComponent(
pnCorrelationProperties, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
304 .addComponent(
pnTagManagement, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
305 .addComponent(
pnDatabaseConfiguration, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
306 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
307 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
308 .addComponent(
cbUseCentralRepo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)
310 .addGap(0, 0, Short.MAX_VALUE)))
311 .addContainerGap())))
313 layout.setVerticalGroup(
314 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
315 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
317 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
319 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
320 .addComponent(
pnDatabaseConfiguration, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
322 .addComponent(
pnTagManagement, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
324 .addComponent(
pnCorrelationProperties, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
326 .addComponent(
tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
336 ImportHashDatabaseDialog dialog =
new ImportHashDatabaseDialog();
337 firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
342 ManageTagsDialog dialog =
new ManageTagsDialog();
343 firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
348 ManageCorrelationPropertiesDialog dialog =
new ManageCorrelationPropertiesDialog();
349 firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
356 if (dialog.wasConfigurationChanged()) {
357 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
366 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
374 @Messages({
"GlobalSettingsPanel.validationerrMsg.mustConfigure=Configure the database to enable this module."})
380 switch (selectedPlatform) {
400 tbOops.setText(Bundle.GlobalSettingsPanel_validationerrMsg_mustConfigure());
426 @SuppressWarnings(
"FinalizeDeclaration")
452 @Messages({
"GlobalSettingsPanel.validationErrMsg.ingestRunning=You cannot change settings while ingest is running."})
454 if (!SwingUtilities.isEventDispatchThread()) {
455 SwingUtilities.invokeLater(() -> {
463 tbOops.setText(Bundle.GlobalSettingsPanel_validationErrMsg_ingestRunning());
502 tbOops.setEnabled(enable && !ingestRunning);
final IngestJobEventPropertyChangeListener ingestJobEventListener
javax.swing.JLabel lbDbLocationValue
javax.swing.JPanel pnTagManagement
void bnImportDatabaseActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JButton bnManageTypes
static synchronized IngestManager getInstance()
javax.swing.JTextArea manageTagsTextArea
void bnManageTypesActionPerformed(java.awt.event.ActionEvent evt)
static boolean useCentralRepo()
boolean isIngestRunning()
void customizeComponents()
javax.swing.JScrollPane manageTagsScrollPane
void cbUseCentralRepoActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JPanel pnDatabaseConfiguration
void removeIngestJobEventListener(final PropertyChangeListener listener)
javax.swing.JTextArea correlationPropertiesTextArea
javax.swing.JButton bnManageTags
void ingestStateUpdated()
javax.swing.JCheckBox cbUseCentralRepo
void enableDatabaseConfigureButton(Boolean enable)
javax.swing.JTextField tbOops
javax.swing.JButton bnDbConfigure
void tbOopsActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JScrollPane correlationPropertiesScrollPane
void addIngestJobEventListener(final PropertyChangeListener listener)
boolean enableButtonSubComponents(Boolean enable)
javax.swing.JLabel lbDbPlatformTypeLabel
static void setUseCentralRepo(boolean centralRepoCheckBoxIsSelected)
javax.swing.JLabel lbDbNameValue
static final long serialVersionUID
javax.swing.JLabel lbCentralRepository
boolean enableAllSubComponents(Boolean enable)
javax.swing.JButton bnImportDatabase
void propertyChange(PropertyChangeEvent event)
synchronized static Logger getLogger(String name)
javax.swing.JLabel lbDbPlatformValue
javax.swing.JLabel lbDbLocationLabel
void addIngestJobEventsListener()
void bnDbConfigureActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel lbDbNameLabel
void bnManageTagsActionPerformed(java.awt.event.ActionEvent evt)
static final Logger LOGGER
javax.swing.JPanel pnCorrelationProperties