Autopsy  4.12.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
GlobalSettingsPanel.java
Go to the documentation of this file.
1 /*
2  * Central Repository
3  *
4  * Copyright 2015-2019 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.centralrepository.optionspanel;
20 
21 import java.awt.Cursor;
22 import java.awt.EventQueue;
24 import java.beans.PropertyChangeEvent;
25 import java.beans.PropertyChangeListener;
26 import java.util.EnumSet;
27 import java.util.Set;
28 import javax.swing.JOptionPane;
29 import javax.swing.SwingUtilities;
30 import org.netbeans.spi.options.OptionsPanelController;
31 import org.openide.util.NbBundle;
32 import org.openide.util.NbBundle.Messages;
44 
48 @SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives
49 public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
50 
51  private static final long serialVersionUID = 1L;
52  private static final Logger logger = Logger.getLogger(GlobalSettingsPanel.class.getName());
55 
60  ingestJobEventListener = new IngestJobEventPropertyChangeListener();
61 
62  initComponents();
63  customizeComponents();
64  addIngestJobEventsListener();
65  Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
66  //disable when case is open, enable when case is closed
67  ingestStateUpdated(evt.getNewValue() != null);
68  });
69  }
70 
71  private void customizeComponents() {
72  setName(NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.pnCorrelationProperties.border.title"));
73  }
74 
75  private void addIngestJobEventsListener() {
76  IngestManager.getInstance().addIngestJobEventListener(INGEST_JOB_EVENTS_OF_INTEREST, ingestJobEventListener);
77  ingestStateUpdated(Case.isCaseOpen());
78  }
79 
80  @Messages({"GlobalSettingsPanel.updateFailed.title=Central repository upgrade failed"})
81  private void updateDatabase() {
82 
83  if (EamDbPlatformEnum.getSelectedPlatform().equals(DISABLED)) {
84  return;
85  }
86  setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
87 
88  try {
90  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
91  } catch (EamDbException ex) {
92  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
93  JOptionPane.showMessageDialog(this,
94  ex.getMessage(),
95  NbBundle.getMessage(this.getClass(),
96  "GlobalSettingsPanel.updateFailed.title"),
97  JOptionPane.WARNING_MESSAGE);
98  } finally {
99  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
100  }
101  }
102 
108  @SuppressWarnings("unchecked")
109  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
110  private void initComponents() {
111 
112  jScrollPane1 = new javax.swing.JScrollPane();
113  jPanel1 = new javax.swing.JPanel();
114  lbCentralRepository = new javax.swing.JLabel();
115  cbUseCentralRepo = new javax.swing.JCheckBox();
116  pnDatabaseConfiguration = new javax.swing.JPanel();
117  lbDbPlatformTypeLabel = new javax.swing.JLabel();
118  lbDbNameLabel = new javax.swing.JLabel();
119  lbDbLocationLabel = new javax.swing.JLabel();
120  bnDbConfigure = new javax.swing.JButton();
121  lbDbPlatformValue = new javax.swing.JLabel();
122  lbDbNameValue = new javax.swing.JLabel();
123  lbDbLocationValue = new javax.swing.JLabel();
124  pnCorrelationProperties = new javax.swing.JPanel();
125  bnManageTypes = new javax.swing.JButton();
126  correlationPropertiesScrollPane = new javax.swing.JScrollPane();
127  correlationPropertiesTextArea = new javax.swing.JTextArea();
128  organizationPanel = new javax.swing.JPanel();
129  manageOrganizationButton = new javax.swing.JButton();
130  organizationScrollPane = new javax.swing.JScrollPane();
131  organizationTextArea = new javax.swing.JTextArea();
132  casesPanel = new javax.swing.JPanel();
133  showCasesButton = new javax.swing.JButton();
134  casesScrollPane = new javax.swing.JScrollPane();
135  casesTextArea = new javax.swing.JTextArea();
136  tbOops = new javax.swing.JTextField();
137  ingestRunningWarningLabel = new javax.swing.JLabel();
138 
139  setName(""); // NOI18N
140  setPreferredSize(new java.awt.Dimension(1022, 488));
141 
142  jScrollPane1.setBorder(null);
143  jScrollPane1.setPreferredSize(new java.awt.Dimension(1022, 407));
144 
145  jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
146  jPanel1.setPreferredSize(new java.awt.Dimension(1020, 407));
147 
148  org.openide.awt.Mnemonics.setLocalizedText(lbCentralRepository, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.lbCentralRepository.text")); // NOI18N
149 
150  org.openide.awt.Mnemonics.setLocalizedText(cbUseCentralRepo, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.cbUseCentralRepo.text")); // NOI18N
151  cbUseCentralRepo.addActionListener(new java.awt.event.ActionListener() {
152  public void actionPerformed(java.awt.event.ActionEvent evt) {
153  cbUseCentralRepoActionPerformed(evt);
154  }
155  });
156 
157  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))); // NOI18N
158 
159  org.openide.awt.Mnemonics.setLocalizedText(lbDbPlatformTypeLabel, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.lbDbPlatformTypeLabel.text")); // NOI18N
160 
161  org.openide.awt.Mnemonics.setLocalizedText(lbDbNameLabel, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.lbDbNameLabel.text")); // NOI18N
162 
163  org.openide.awt.Mnemonics.setLocalizedText(lbDbLocationLabel, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.lbDbLocationLabel.text")); // NOI18N
164 
165  org.openide.awt.Mnemonics.setLocalizedText(bnDbConfigure, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.bnDbConfigure.text")); // NOI18N
166  bnDbConfigure.addActionListener(new java.awt.event.ActionListener() {
167  public void actionPerformed(java.awt.event.ActionEvent evt) {
168  bnDbConfigureActionPerformed(evt);
169  }
170  });
171 
172  javax.swing.GroupLayout pnDatabaseConfigurationLayout = new javax.swing.GroupLayout(pnDatabaseConfiguration);
173  pnDatabaseConfiguration.setLayout(pnDatabaseConfigurationLayout);
174  pnDatabaseConfigurationLayout.setHorizontalGroup(
175  pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
176  .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
177  .addContainerGap()
178  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
179  .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
180  .addComponent(bnDbConfigure)
181  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
182  .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
183  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
184  .addComponent(lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
185  .addComponent(lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
186  .addComponent(lbDbLocationLabel))
187  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
188  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
189  .addComponent(lbDbNameValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 936, Short.MAX_VALUE)
190  .addComponent(lbDbPlatformValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
191  .addComponent(lbDbLocationValue, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
192  );
193  pnDatabaseConfigurationLayout.setVerticalGroup(
194  pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
195  .addGroup(pnDatabaseConfigurationLayout.createSequentialGroup()
196  .addGap(7, 7, 7)
197  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
198  .addComponent(lbDbPlatformTypeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
199  .addComponent(lbDbPlatformValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
200  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
201  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
202  .addComponent(lbDbNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
203  .addComponent(lbDbNameValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
204  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205  .addGroup(pnDatabaseConfigurationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
206  .addComponent(lbDbLocationLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
207  .addComponent(lbDbLocationValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
208  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
209  .addComponent(bnDbConfigure)
210  .addGap(8, 8, 8))
211  );
212 
213  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))); // NOI18N
214  pnCorrelationProperties.setPreferredSize(new java.awt.Dimension(674, 93));
215 
216  org.openide.awt.Mnemonics.setLocalizedText(bnManageTypes, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.bnManageProperties.text")); // NOI18N
217  bnManageTypes.addActionListener(new java.awt.event.ActionListener() {
218  public void actionPerformed(java.awt.event.ActionEvent evt) {
219  bnManageTypesActionPerformed(evt);
220  }
221  });
222 
223  correlationPropertiesScrollPane.setBorder(null);
224 
225  correlationPropertiesTextArea.setEditable(false);
226  correlationPropertiesTextArea.setBackground(new java.awt.Color(240, 240, 240));
227  correlationPropertiesTextArea.setColumns(20);
228  correlationPropertiesTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
229  correlationPropertiesTextArea.setLineWrap(true);
230  correlationPropertiesTextArea.setRows(1);
231  correlationPropertiesTextArea.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.correlationPropertiesTextArea.text")); // NOI18N
232  correlationPropertiesTextArea.setToolTipText("");
233  correlationPropertiesTextArea.setWrapStyleWord(true);
234  correlationPropertiesTextArea.setBorder(null);
235  correlationPropertiesTextArea.setOpaque(false);
236  correlationPropertiesScrollPane.setViewportView(correlationPropertiesTextArea);
237 
238  javax.swing.GroupLayout pnCorrelationPropertiesLayout = new javax.swing.GroupLayout(pnCorrelationProperties);
239  pnCorrelationProperties.setLayout(pnCorrelationPropertiesLayout);
240  pnCorrelationPropertiesLayout.setHorizontalGroup(
241  pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
242  .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
243  .addContainerGap()
244  .addGroup(pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
245  .addGroup(pnCorrelationPropertiesLayout.createSequentialGroup()
246  .addComponent(bnManageTypes)
247  .addGap(0, 0, Short.MAX_VALUE))
248  .addComponent(correlationPropertiesScrollPane))
249  .addContainerGap())
250  );
251  pnCorrelationPropertiesLayout.setVerticalGroup(
252  pnCorrelationPropertiesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
253  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnCorrelationPropertiesLayout.createSequentialGroup()
254  .addComponent(correlationPropertiesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
255  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
256  .addComponent(bnManageTypes)
257  .addGap(8, 8, 8))
258  );
259 
260  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))); // NOI18N
261 
262  org.openide.awt.Mnemonics.setLocalizedText(manageOrganizationButton, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.manageOrganizationButton.text")); // NOI18N
263  manageOrganizationButton.addActionListener(new java.awt.event.ActionListener() {
264  public void actionPerformed(java.awt.event.ActionEvent evt) {
265  manageOrganizationButtonActionPerformed(evt);
266  }
267  });
268 
269  organizationScrollPane.setBorder(null);
270 
271  organizationTextArea.setEditable(false);
272  organizationTextArea.setBackground(new java.awt.Color(240, 240, 240));
273  organizationTextArea.setColumns(20);
274  organizationTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
275  organizationTextArea.setLineWrap(true);
276  organizationTextArea.setRows(2);
277  organizationTextArea.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.organizationTextArea.text")); // NOI18N
278  organizationTextArea.setWrapStyleWord(true);
279  organizationTextArea.setBorder(null);
280  organizationTextArea.setOpaque(false);
281  organizationScrollPane.setViewportView(organizationTextArea);
282 
283  javax.swing.GroupLayout organizationPanelLayout = new javax.swing.GroupLayout(organizationPanel);
284  organizationPanel.setLayout(organizationPanelLayout);
285  organizationPanelLayout.setHorizontalGroup(
286  organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
287  .addGroup(organizationPanelLayout.createSequentialGroup()
288  .addContainerGap()
289  .addGroup(organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
290  .addComponent(organizationScrollPane)
291  .addGroup(organizationPanelLayout.createSequentialGroup()
292  .addComponent(manageOrganizationButton)
293  .addGap(0, 0, Short.MAX_VALUE)))
294  .addContainerGap())
295  );
296  organizationPanelLayout.setVerticalGroup(
297  organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
298  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, organizationPanelLayout.createSequentialGroup()
299  .addContainerGap()
300  .addComponent(organizationScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
301  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
302  .addComponent(manageOrganizationButton)
303  .addGap(8, 8, 8))
304  );
305 
306  casesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.casesPanel.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
307  casesPanel.setName("Case Details"); // NOI18N
308 
309  org.openide.awt.Mnemonics.setLocalizedText(showCasesButton, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.showCasesButton.text")); // NOI18N
310  showCasesButton.addActionListener(new java.awt.event.ActionListener() {
311  public void actionPerformed(java.awt.event.ActionEvent evt) {
312  showCasesButtonActionPerformed(evt);
313  }
314  });
315 
316  casesScrollPane.setBorder(null);
317 
318  casesTextArea.setEditable(false);
319  casesTextArea.setBackground(new java.awt.Color(240, 240, 240));
320  casesTextArea.setColumns(20);
321  casesTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
322  casesTextArea.setLineWrap(true);
323  casesTextArea.setRows(2);
324  casesTextArea.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.casesTextArea.text")); // NOI18N
325  casesTextArea.setWrapStyleWord(true);
326  casesTextArea.setBorder(null);
327  casesTextArea.setOpaque(false);
328  casesScrollPane.setViewportView(casesTextArea);
329 
330  javax.swing.GroupLayout casesPanelLayout = new javax.swing.GroupLayout(casesPanel);
331  casesPanel.setLayout(casesPanelLayout);
332  casesPanelLayout.setHorizontalGroup(
333  casesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
334  .addGroup(casesPanelLayout.createSequentialGroup()
335  .addContainerGap()
336  .addGroup(casesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
337  .addComponent(casesScrollPane)
338  .addGroup(casesPanelLayout.createSequentialGroup()
339  .addComponent(showCasesButton)
340  .addGap(0, 0, Short.MAX_VALUE)))
341  .addContainerGap())
342  );
343  casesPanelLayout.setVerticalGroup(
344  casesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
345  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, casesPanelLayout.createSequentialGroup()
346  .addContainerGap()
347  .addComponent(casesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
348  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
349  .addComponent(showCasesButton)
350  .addGap(8, 8, 8))
351  );
352 
353  tbOops.setEditable(false);
354  tbOops.setFont(tbOops.getFont().deriveFont(tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
355  tbOops.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.tbOops.text")); // NOI18N
356  tbOops.setBorder(null);
357 
358  ingestRunningWarningLabel.setFont(ingestRunningWarningLabel.getFont().deriveFont(ingestRunningWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
359  ingestRunningWarningLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/modules/filetypeid/warning16.png"))); // NOI18N
360  org.openide.awt.Mnemonics.setLocalizedText(ingestRunningWarningLabel, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.ingestRunningWarningLabel.text")); // NOI18N
361 
362  javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
363  jPanel1.setLayout(jPanel1Layout);
364  jPanel1Layout.setHorizontalGroup(
365  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
366  .addComponent(lbCentralRepository, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
367  .addGroup(jPanel1Layout.createSequentialGroup()
368  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
369  .addComponent(pnDatabaseConfiguration, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
370  .addComponent(pnCorrelationProperties, javax.swing.GroupLayout.DEFAULT_SIZE, 1012, Short.MAX_VALUE)
371  .addComponent(organizationPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
372  .addComponent(casesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
373  .addGroup(jPanel1Layout.createSequentialGroup()
374  .addComponent(cbUseCentralRepo, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE)
375  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
376  .addComponent(ingestRunningWarningLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 844, Short.MAX_VALUE))
377  .addGroup(jPanel1Layout.createSequentialGroup()
378  .addContainerGap()
379  .addComponent(tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, 974, javax.swing.GroupLayout.PREFERRED_SIZE)))
380  .addContainerGap())
381  );
382  jPanel1Layout.setVerticalGroup(
383  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
384  .addGroup(jPanel1Layout.createSequentialGroup()
385  .addComponent(lbCentralRepository)
386  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
387  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
388  .addComponent(cbUseCentralRepo)
389  .addComponent(ingestRunningWarningLabel))
390  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
391  .addComponent(pnDatabaseConfiguration, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
392  .addGap(0, 0, 0)
393  .addComponent(pnCorrelationProperties, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
394  .addGap(0, 0, 0)
395  .addComponent(organizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
396  .addGap(0, 0, 0)
397  .addComponent(casesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
398  .addGap(0, 0, 0)
399  .addComponent(tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
400  .addContainerGap())
401  );
402 
403  casesPanel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.Case Details.AccessibleContext.accessibleName")); // NOI18N
404 
405  jScrollPane1.setViewportView(jPanel1);
406 
407  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
408  this.setLayout(layout);
409  layout.setHorizontalGroup(
410  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
411  .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
412  );
413  layout.setVerticalGroup(
414  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
415  .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE)
416  );
417  }// </editor-fold>//GEN-END:initComponents
418 
419  private void bnManageTypesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnManageTypesActionPerformed
420  store();
421  ManageCorrelationPropertiesDialog manageCorrelationDialog = new ManageCorrelationPropertiesDialog();
422  firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
423  }//GEN-LAST:event_bnManageTypesActionPerformed
424 
425  private void bnDbConfigureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnDbConfigureActionPerformed
426  store();
428  if (dialog.wasConfigurationChanged()) {
429  updateDatabase();
430  load(); // reload db settings content and update buttons
431  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
432  }
433  }//GEN-LAST:event_bnDbConfigureActionPerformed
434 
435  private void manageOrganizationButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_manageOrganizationButtonActionPerformed
436  store();
437  ManageOrganizationsDialog manageOrganizationsDialog = new ManageOrganizationsDialog();
438  }//GEN-LAST:event_manageOrganizationButtonActionPerformed
439 
440  private void showCasesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showCasesButtonActionPerformed
441  store();
442  ManageCasesDialog.displayManageCasesDialog();
443  }//GEN-LAST:event_showCasesButtonActionPerformed
444 
445  private void cbUseCentralRepoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbUseCentralRepoActionPerformed
446  //if saved setting is disabled checkbox should be disabled already
447  store();
448  updateDatabase();
449  load();
450  this.ingestStateUpdated(Case.isCaseOpen());
451  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
452  }//GEN-LAST:event_cbUseCentralRepoActionPerformed
453 
454  @Override
455  @Messages({"GlobalSettingsPanel.validationerrMsg.mustConfigure=Configure the database to enable this module."})
456  public void load() {
457  tbOops.setText("");
458  enableButtonSubComponents(false);
460  cbUseCentralRepo.setSelected(EamDbUtil.allowUseOfCentralRepository()); // NON-NLS
461  switch (selectedPlatform) {
462  case POSTGRESQL:
463  PostgresEamDbSettings dbSettingsPg = new PostgresEamDbSettings();
464  lbDbPlatformValue.setText(EamDbPlatformEnum.POSTGRESQL.toString());
465  lbDbNameValue.setText(dbSettingsPg.getDbName());
466  lbDbLocationValue.setText(dbSettingsPg.getHost());
467  enableButtonSubComponents(cbUseCentralRepo.isSelected());
468  break;
469  case SQLITE:
470  SqliteEamDbSettings dbSettingsSqlite = new SqliteEamDbSettings();
471  lbDbPlatformValue.setText(EamDbPlatformEnum.SQLITE.toString());
472  lbDbNameValue.setText(dbSettingsSqlite.getDbName());
473  lbDbLocationValue.setText(dbSettingsSqlite.getDbDirectory());
474  enableButtonSubComponents(cbUseCentralRepo.isSelected());
475  break;
476  default:
477  lbDbPlatformValue.setText(EamDbPlatformEnum.DISABLED.toString());
478  lbDbNameValue.setText("");
479  lbDbLocationValue.setText("");
480  tbOops.setText(Bundle.GlobalSettingsPanel_validationerrMsg_mustConfigure());
481  break;
482  }
483 
484  }
485 
486  @Override
487  public void store() { // Click OK or Apply on Options Panel
488  EamDbUtil.setUseCentralRepo(cbUseCentralRepo.isSelected());
489  }
490 
496  public boolean valid() {
497  return !cbUseCentralRepo.isSelected() || !lbDbPlatformValue.getText().equals(DISABLED.toString());
498  }
499 
500  @Override
501  public void saveSettings() { // Click OK on Global Settings Panel
502  store();
503  }
504 
505  @Override
506  @SuppressWarnings("FinalizeDeclaration")
507  protected void finalize() throws Throwable {
508  IngestManager.getInstance().removeIngestJobEventListener(ingestJobEventListener);
509  super.finalize();
510 
511  }
512 
517  private class IngestJobEventPropertyChangeListener implements PropertyChangeListener {
518 
525  @Override
526  public void propertyChange(PropertyChangeEvent event) {
527  if (isLocalIngestJobEvent(event)) {
528  EventQueue.invokeLater(new Runnable() {
529  @Override
530  public void run() {
531  ingestStateUpdated(Case.isCaseOpen());
532  }
533  });
534  }
535  }
536  };
537 
547  private boolean isLocalIngestJobEvent(PropertyChangeEvent event) {
548  if (event instanceof AutopsyEvent) {
549  if (((AutopsyEvent) event).getSourceType() == AutopsyEvent.SourceType.LOCAL) {
550  String eventType = event.getPropertyName();
551  return (eventType.equals(IngestManager.IngestJobEvent.STARTED.toString())
552  || eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString())
553  || eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString()));
554  }
555  }
556  return false;
557  }
558 
559  @Messages({"GlobalSettingsPanel.validationErrMsg.ingestRunning=You cannot change settings while ingest is running."})
560  private void ingestStateUpdated(boolean caseIsOpen) {
561  if (!SwingUtilities.isEventDispatchThread()) {
562  SwingUtilities.invokeLater(() -> {
563  ingestStateUpdated(caseIsOpen);
564  });
565 
566  return;
567  }
568 
569  cbUseCentralRepo.setEnabled(!caseIsOpen);
571  tbOops.setText(Bundle.GlobalSettingsPanel_validationErrMsg_ingestRunning());
572  tbOops.setVisible(true);
573  enableButtonSubComponents(cbUseCentralRepo.isSelected());
574  } else {
575  load();
576  enableDatabaseConfigureButton(cbUseCentralRepo.isSelected() && !caseIsOpen);
577  }
578 
579  }
580 
588  private void enableDatabaseConfigureButton(Boolean enable) {
589  boolean ingestRunning = IngestManager.getInstance().isIngestRunning();
590  ingestRunningWarningLabel.setVisible(ingestRunning);
591  pnDatabaseConfiguration.setEnabled(enable && !ingestRunning);
592  bnDbConfigure.setEnabled(enable && !ingestRunning);
593  lbDbLocationLabel.setEnabled(enable && !ingestRunning);
594  lbDbLocationValue.setEnabled(enable && !ingestRunning);
595  lbDbNameLabel.setEnabled(enable && !ingestRunning);
596  lbDbNameValue.setEnabled(enable && !ingestRunning);
597  lbDbPlatformTypeLabel.setEnabled(enable && !ingestRunning);
598  lbDbPlatformValue.setEnabled(enable && !ingestRunning);
599  tbOops.setEnabled(enable && !ingestRunning);
600  }
601 
610  private boolean enableButtonSubComponents(Boolean enable) {
611  boolean ingestRunning = IngestManager.getInstance().isIngestRunning();
612  pnCorrelationProperties.setEnabled(enable && !ingestRunning);
613  bnManageTypes.setEnabled(enable && !ingestRunning);
614  correlationPropertiesTextArea.setEnabled(enable && !ingestRunning);
615  organizationPanel.setEnabled(enable && !ingestRunning);
616  organizationTextArea.setEnabled(enable && !ingestRunning);
617  manageOrganizationButton.setEnabled(enable && !ingestRunning);
618  showCasesButton.setEnabled(enable && !ingestRunning);
619  casesPanel.setEnabled(enable && !ingestRunning);
620  casesTextArea.setEnabled(enable && !ingestRunning);
621  return true;
622  }
623 
624  // Variables declaration - do not modify//GEN-BEGIN:variables
625  private javax.swing.JButton bnDbConfigure;
626  private javax.swing.JButton bnManageTypes;
627  private javax.swing.JPanel casesPanel;
628  private javax.swing.JScrollPane casesScrollPane;
629  private javax.swing.JTextArea casesTextArea;
630  private javax.swing.JCheckBox cbUseCentralRepo;
631  private javax.swing.JScrollPane correlationPropertiesScrollPane;
632  private javax.swing.JTextArea correlationPropertiesTextArea;
633  private javax.swing.JLabel ingestRunningWarningLabel;
634  private javax.swing.JPanel jPanel1;
635  private javax.swing.JScrollPane jScrollPane1;
636  private javax.swing.JLabel lbCentralRepository;
637  private javax.swing.JLabel lbDbLocationLabel;
638  private javax.swing.JLabel lbDbLocationValue;
639  private javax.swing.JLabel lbDbNameLabel;
640  private javax.swing.JLabel lbDbNameValue;
641  private javax.swing.JLabel lbDbPlatformTypeLabel;
642  private javax.swing.JLabel lbDbPlatformValue;
643  private javax.swing.JButton manageOrganizationButton;
644  private javax.swing.JPanel organizationPanel;
645  private javax.swing.JScrollPane organizationScrollPane;
646  private javax.swing.JTextArea organizationTextArea;
647  private javax.swing.JPanel pnCorrelationProperties;
648  private javax.swing.JPanel pnDatabaseConfiguration;
649  private javax.swing.JButton showCasesButton;
650  private javax.swing.JTextField tbOops;
651  // End of variables declaration//GEN-END:variables
652 }
static synchronized IngestManager getInstance()
void removeIngestJobEventListener(final PropertyChangeListener listener)
void addIngestJobEventListener(final PropertyChangeListener listener)
static void setUseCentralRepo(boolean centralRepoCheckBoxIsSelected)
Definition: EamDbUtil.java:315
synchronized static Logger getLogger(String name)
Definition: Logger.java:124
static void addEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
Definition: Case.java:477

Copyright © 2012-2018 Basis Technology. Generated on: Wed Sep 18 2019
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.