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

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