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

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