19 package org.sleuthkit.autopsy.centralrepository.optionspanel;
21 import java.awt.Cursor;
23 import java.beans.PropertyChangeEvent;
24 import java.beans.PropertyChangeListener;
25 import javax.swing.JOptionPane;
26 import javax.swing.SwingUtilities;
27 import org.netbeans.spi.options.OptionsPanelController;
28 import org.openide.util.NbBundle;
29 import org.openide.util.NbBundle.Messages;
61 @Messages({
"GlobalSettingsPanel.title=Central Repository Settings",
62 "GlobalSettingsPanel.cbUseCentralRepo.text=Use a central repository",
63 "GlobalSettingsPanel.pnTagManagement.border.title=Tags",
64 "GlobalSettingsPanel.pnCorrelationProperties.border.title=Correlation Properties",
65 "GlobalSettingsPanel.lbCentralRepository.text=A central repository allows you to correlate files and results between cases.",
66 "GlobalSettingsPanel.manageTagsTextArea.text=Configure which tag names are associated with notable items. "
67 +
"When these tags are used, the file or result will be recorded in the central repository. "
68 +
"If that file or result is seen again in future cases, it will be flagged.",
69 "GlobalSettingsPanel.correlationPropertiesTextArea.text=Choose which file and result properties to store in the central repository for later correlation.",
70 "GlobalSettingsPanel.organizationPanel.border.title=Organizations",
71 "GlobalSettingsPanel.manageOrganizationButton.text=Manage Organizations",
72 "GlobalSettingsPanel.organizationTextArea.text=Organization information can be tracked in the central repository"
76 setName(Bundle.GlobalSettingsPanel_title());
84 @Messages({
"GlobalSettingsPanel.updateFailed.title=Update failed",
85 "GlobalSettingsPanel.updateFailed.message=Failed to update database. Central repository has been disabled."
92 setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
96 setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
98 JOptionPane.showMessageDialog(null,
99 NbBundle.getMessage(
this.getClass(),
100 "GlobalSettingsPanel.updateFailed.message"),
101 NbBundle.getMessage(
this.getClass(),
102 "GlobalSettingsPanel.updateFailed.title"),
103 JOptionPane.WARNING_MESSAGE);
106 setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
115 @SuppressWarnings(
"unchecked")
128 tbOops =
new javax.swing.JTextField();
141 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)));
150 bnDbConfigure.addActionListener(
new java.awt.event.ActionListener() {
151 public void actionPerformed(java.awt.event.ActionEvent evt) {
158 pnDatabaseConfigurationLayout.setHorizontalGroup(
159 pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
160 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
162 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
163 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
166 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
167 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
168 .addComponent(
lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
169 .addComponent(
lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
170 .addComponent(
lbDbLocationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))
171 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
172 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
173 .addComponent(
lbDbNameValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
174 .addComponent(
lbDbPlatformValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
175 .addComponent(
lbDbLocationValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
177 pnDatabaseConfigurationLayout.setVerticalGroup(
178 pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
179 .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
181 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
182 .addComponent(
lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
183 .addComponent(
lbDbPlatformValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
184 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
185 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
186 .addComponent(
lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
187 .addComponent(
lbDbNameValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
188 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
189 .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
190 .addComponent(
lbDbLocationLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
191 .addComponent(
lbDbLocationValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
192 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
199 public void actionPerformed(java.awt.event.ActionEvent evt) {
204 tbOops.setEditable(
false);
205 tbOops.setFont(
tbOops.getFont().deriveFont(
tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
209 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)));
213 bnManageTypes.addActionListener(
new java.awt.event.ActionListener() {
214 public void actionPerformed(java.awt.event.ActionEvent evt) {
235 pnCorrelationPropertiesLayout.setHorizontalGroup(
236 pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
237 .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
239 .addGroup(pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
241 .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
243 .addGap(0, 0, Short.MAX_VALUE)))
246 pnCorrelationPropertiesLayout.setVerticalGroup(
247 pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
248 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnCorrelationPropertiesLayout.createSequentialGroup()
250 .addComponent(
correlationPropertiesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
251 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
258 organizationPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
org.openide.util.NbBundle.getMessage(
GlobalSettingsPanel.class,
"GlobalSettingsPanel.organizationPanel.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new java.awt.Font(
"Tahoma", 0, 12)));
262 public void actionPerformed(java.awt.event.ActionEvent evt) {
280 javax.swing.GroupLayout organizationPanelLayout =
new javax.swing.GroupLayout(
organizationPanel);
282 organizationPanelLayout.setHorizontalGroup(
283 organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
284 .addGroup(organizationPanelLayout.createSequentialGroup()
286 .addGroup(organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
288 .addGroup(organizationPanelLayout.createSequentialGroup()
290 .addGap(0, 0, Short.MAX_VALUE)))
293 organizationPanelLayout.setVerticalGroup(
294 organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
295 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, organizationPanelLayout.createSequentialGroup()
297 .addComponent(
organizationScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
298 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
303 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
304 this.setLayout(layout);
305 layout.setHorizontalGroup(
306 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
307 .addGroup(layout.createSequentialGroup()
309 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
310 .addComponent(
tbOops, javax.swing.GroupLayout.Alignment.TRAILING)
311 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
312 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
313 .addComponent(
organizationPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
314 .addComponent(
lbCentralRepository, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
315 .addComponent(
pnCorrelationProperties, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
316 .addComponent(
pnDatabaseConfiguration, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
317 .addComponent(
cbUseCentralRepo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE))
318 .addContainerGap())))
320 layout.setVerticalGroup(
321 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
322 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
324 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
326 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
327 .addComponent(
pnDatabaseConfiguration, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
329 .addComponent(
pnCorrelationProperties, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
331 .addComponent(
organizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
333 .addComponent(
tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
340 ManageCorrelationPropertiesDialog dialog =
new ManageCorrelationPropertiesDialog();
341 firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
349 if (dialog.wasConfigurationChanged()) {
350 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
360 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
369 @Messages({
"GlobalSettingsPanel.validationerrMsg.mustConfigure=Configure the database to enable this module."})
375 switch (selectedPlatform) {
395 tbOops.setText(Bundle.GlobalSettingsPanel_validationerrMsg_mustConfigure());
421 @SuppressWarnings(
"FinalizeDeclaration")
448 @Messages({
"GlobalSettingsPanel.validationErrMsg.ingestRunning=You cannot change settings while ingest is running."})
450 if (!SwingUtilities.isEventDispatchThread()) {
451 SwingUtilities.invokeLater(() -> {
459 tbOops.setText(Bundle.GlobalSettingsPanel_validationErrMsg_ingestRunning());
498 tbOops.setEnabled(enable && !ingestRunning);
final IngestJobEventPropertyChangeListener ingestJobEventListener
javax.swing.JLabel lbDbLocationValue
javax.swing.JButton bnManageTypes
static synchronized IngestManager getInstance()
javax.swing.JScrollPane organizationScrollPane
void bnManageTypesActionPerformed(java.awt.event.ActionEvent evt)
static boolean useCentralRepo()
static boolean upgradeDatabase()
boolean isIngestRunning()
void customizeComponents()
void cbUseCentralRepoActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JPanel pnDatabaseConfiguration
javax.swing.JPanel organizationPanel
void removeIngestJobEventListener(final PropertyChangeListener listener)
javax.swing.JTextArea correlationPropertiesTextArea
void ingestStateUpdated()
javax.swing.JCheckBox cbUseCentralRepo
void enableDatabaseConfigureButton(Boolean enable)
javax.swing.JTextField tbOops
javax.swing.JButton bnDbConfigure
javax.swing.JScrollPane correlationPropertiesScrollPane
void addIngestJobEventListener(final PropertyChangeListener listener)
javax.swing.JTextArea organizationTextArea
boolean enableButtonSubComponents(Boolean enable)
javax.swing.JLabel lbDbPlatformTypeLabel
javax.swing.JButton manageOrganizationButton
static void setUseCentralRepo(boolean centralRepoCheckBoxIsSelected)
javax.swing.JLabel lbDbNameValue
static final long serialVersionUID
javax.swing.JLabel lbCentralRepository
boolean enableAllSubComponents(Boolean enable)
void propertyChange(PropertyChangeEvent event)
synchronized static Logger getLogger(String name)
javax.swing.JLabel lbDbPlatformValue
javax.swing.JLabel lbDbLocationLabel
void addIngestJobEventsListener()
void manageOrganizationButtonActionPerformed(java.awt.event.ActionEvent evt)
void bnDbConfigureActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel lbDbNameLabel
static final Logger LOGGER
javax.swing.JPanel pnCorrelationProperties