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

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