Autopsy  4.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
KeywordSearchGlobalLanguageSettingsPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2012-2014 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.keywordsearch;
20 
21 import java.awt.GridLayout;
22 import java.awt.event.ActionEvent;
23 import java.awt.event.ActionListener;
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28 import javax.swing.JCheckBox;
33 
37 class KeywordSearchGlobalLanguageSettingsPanel extends javax.swing.JPanel implements OptionsPanel {
38 
39  private final Map<String, StringExtract.StringExtractUnicodeTable.SCRIPT> scripts = new HashMap<>();
40  private ActionListener updateLanguagesAction;
41  private List<SCRIPT> toUpdate;
42 
43  KeywordSearchGlobalLanguageSettingsPanel() {
44  initComponents();
45  customizeComponents();
46  }
47 
48  private void customizeComponents() {
49  updateLanguagesAction = new ActionListener() {
50  @Override
51  public void actionPerformed(ActionEvent e) {
52  toUpdate = new ArrayList<>();
53  final int components = checkPanel.getComponentCount();
54  for (int i = 0; i < components; ++i) {
55  JCheckBox ch = (JCheckBox) checkPanel.getComponent(i);
56  if (ch.isSelected()) {
57  SCRIPT s = scripts.get(ch.getText());
58  toUpdate.add(s);
59  }
60  }
61  }
62  };
63 
64  initScriptsCheckBoxes();
65  reloadScriptsCheckBoxes();
66  }
67 
68  private void activateScriptsCheckboxes(boolean activate) {
69  final int components = checkPanel.getComponentCount();
70  for (int i = 0; i < components; ++i) {
71  JCheckBox ch = (JCheckBox) checkPanel.getComponent(i);
72  ch.setEnabled(activate);
73  }
74  }
75 
76  private static String getLangText(SCRIPT script) {
77  StringBuilder sb = new StringBuilder();
78  sb.append(script.toString()).append(" (");
79  sb.append(script.getLanguages());
80  sb.append(")");
81  return sb.toString();
82  }
83 
84  private void initScriptsCheckBoxes() {
85  final List<StringExtract.StringExtractUnicodeTable.SCRIPT> supportedScripts = StringExtract.getSupportedScripts();
86  checkPanel.setLayout(new GridLayout(0, 1));
87  for (StringExtract.StringExtractUnicodeTable.SCRIPT s : supportedScripts) {
88  String text = getLangText(s);
89  JCheckBox ch = new JCheckBox(text);
90  ch.addActionListener(updateLanguagesAction);
91  checkPanel.add(ch);
92  ch.setSelected(false);
93  scripts.put(text, s);
94  }
95  }
96 
97  private void reloadScriptsCheckBoxes() {
98  boolean utf16
99  = Boolean.parseBoolean(KeywordSearchSettings.getStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF16.toString()));
100 
101  enableUTF16Checkbox.setSelected(utf16);
102 
103  boolean utf8
104  = Boolean.parseBoolean(KeywordSearchSettings.getStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF8.toString()));
105  enableUTF8Checkbox.setSelected(utf8);
106 
107  final List<SCRIPT> serviceScripts = KeywordSearchSettings.getStringExtractScripts();
108  final int components = checkPanel.getComponentCount();
109 
110  for (int i = 0; i < components; ++i) {
111  JCheckBox ch = (JCheckBox) checkPanel.getComponent(i);
112 
113  StringExtract.StringExtractUnicodeTable.SCRIPT script = scripts.get(ch.getText());
114 
115  ch.setSelected(serviceScripts.contains(script));
116  }
117  }
118 
119  private void activateWidgets() {
120  reloadScriptsCheckBoxes();
121 
122  boolean utf16
123  = Boolean.parseBoolean(KeywordSearchSettings.getStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF16.toString()));
124 
125  enableUTF16Checkbox.setSelected(utf16);
126 
127  boolean utf8
128  = Boolean.parseBoolean(KeywordSearchSettings.getStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF8.toString()));
129  enableUTF8Checkbox.setSelected(utf8);
130  final boolean extractEnabled = utf16 || utf8;
131 
132  boolean ingestNotRunning = !IngestManager.getInstance().isIngestRunning() && !IngestManager.getInstance().isIngestRunning();
133  //enable / disable checboxes
134  activateScriptsCheckboxes(extractEnabled && ingestNotRunning);
135  enableUTF16Checkbox.setEnabled(ingestNotRunning);
136  enableUTF8Checkbox.setEnabled(ingestNotRunning);
137  }
138 
144  @SuppressWarnings("unchecked")
145  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
146  private void initComponents() {
147 
148  languagesLabel = new javax.swing.JLabel();
149  langPanel = new javax.swing.JScrollPane();
150  checkPanel = new javax.swing.JPanel();
151  enableUTF8Checkbox = new javax.swing.JCheckBox();
152  enableUTF16Checkbox = new javax.swing.JCheckBox();
153  ingestSettingsLabel = new javax.swing.JLabel();
154 
155  org.openide.awt.Mnemonics.setLocalizedText(languagesLabel, org.openide.util.NbBundle.getMessage(KeywordSearchGlobalLanguageSettingsPanel.class, "KeywordSearchGlobalLanguageSettingsPanel.languagesLabel.text")); // NOI18N
156 
157  langPanel.setPreferredSize(new java.awt.Dimension(430, 361));
158 
159  checkPanel.setPreferredSize(new java.awt.Dimension(400, 361));
160 
161  javax.swing.GroupLayout checkPanelLayout = new javax.swing.GroupLayout(checkPanel);
162  checkPanel.setLayout(checkPanelLayout);
163  checkPanelLayout.setHorizontalGroup(
164  checkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
165  .addGap(0, 428, Short.MAX_VALUE)
166  );
167  checkPanelLayout.setVerticalGroup(
168  checkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
169  .addGap(0, 395, Short.MAX_VALUE)
170  );
171 
172  langPanel.setViewportView(checkPanel);
173 
174  org.openide.awt.Mnemonics.setLocalizedText(enableUTF8Checkbox, org.openide.util.NbBundle.getMessage(KeywordSearchGlobalLanguageSettingsPanel.class, "KeywordSearchGlobalLanguageSettingsPanel.enableUTF8Checkbox.text")); // NOI18N
175  enableUTF8Checkbox.addActionListener(new java.awt.event.ActionListener() {
176  public void actionPerformed(java.awt.event.ActionEvent evt) {
177  enableUTF8CheckboxActionPerformed(evt);
178  }
179  });
180 
181  org.openide.awt.Mnemonics.setLocalizedText(enableUTF16Checkbox, org.openide.util.NbBundle.getMessage(KeywordSearchGlobalLanguageSettingsPanel.class, "KeywordSearchGlobalLanguageSettingsPanel.enableUTF16Checkbox.text")); // NOI18N
182  enableUTF16Checkbox.addActionListener(new java.awt.event.ActionListener() {
183  public void actionPerformed(java.awt.event.ActionEvent evt) {
184  enableUTF16CheckboxActionPerformed(evt);
185  }
186  });
187 
188  org.openide.awt.Mnemonics.setLocalizedText(ingestSettingsLabel, org.openide.util.NbBundle.getMessage(KeywordSearchGlobalLanguageSettingsPanel.class, "KeywordSearchGlobalLanguageSettingsPanel.ingestSettingsLabel.text")); // NOI18N
189 
190  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
191  this.setLayout(layout);
192  layout.setHorizontalGroup(
193  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
194  .addGroup(layout.createSequentialGroup()
195  .addContainerGap()
196  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
197  .addComponent(ingestSettingsLabel)
198  .addGroup(layout.createSequentialGroup()
199  .addGap(10, 10, 10)
200  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
201  .addComponent(enableUTF16Checkbox)
202  .addComponent(enableUTF8Checkbox)))
203  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
204  .addComponent(languagesLabel, javax.swing.GroupLayout.Alignment.LEADING)
205  .addComponent(langPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
206  .addContainerGap(255, Short.MAX_VALUE))
207  );
208  layout.setVerticalGroup(
209  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
210  .addGroup(layout.createSequentialGroup()
211  .addContainerGap()
212  .addComponent(ingestSettingsLabel)
213  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
214  .addComponent(enableUTF16Checkbox)
215  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
216  .addComponent(enableUTF8Checkbox)
217  .addGap(18, 18, 18)
218  .addComponent(languagesLabel)
219  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
220  .addComponent(langPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 397, Short.MAX_VALUE)
221  .addContainerGap())
222  );
223  }// </editor-fold>//GEN-END:initComponents
224 
225  private void enableUTF8CheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableUTF8CheckboxActionPerformed
226 
227  boolean selected = this.enableUTF8Checkbox.isSelected();
228 
229  activateScriptsCheckboxes(selected || this.enableUTF16Checkbox.isSelected());
230 
231  }//GEN-LAST:event_enableUTF8CheckboxActionPerformed
232 
233  private void enableUTF16CheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableUTF16CheckboxActionPerformed
234 
235  boolean selected = this.enableUTF16Checkbox.isSelected();
236 
237  activateScriptsCheckboxes(selected || this.enableUTF8Checkbox.isSelected());
238  }//GEN-LAST:event_enableUTF16CheckboxActionPerformed
239 
240  // Variables declaration - do not modify//GEN-BEGIN:variables
241  private javax.swing.JPanel checkPanel;
242  private javax.swing.JCheckBox enableUTF16Checkbox;
243  private javax.swing.JCheckBox enableUTF8Checkbox;
244  private javax.swing.JLabel ingestSettingsLabel;
245  private javax.swing.JScrollPane langPanel;
246  private javax.swing.JLabel languagesLabel;
247  // End of variables declaration//GEN-END:variables
248 
249  @Override
250  public void store() {
251  KeywordSearchSettings.setStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF8.toString(),
252  Boolean.toString(enableUTF8Checkbox.isSelected()));
253  KeywordSearchSettings.setStringExtractOption(TextExtractor.ExtractOptions.EXTRACT_UTF16.toString(),
254  Boolean.toString(enableUTF16Checkbox.isSelected()));
255 
256  if (toUpdate != null) {
257  KeywordSearchSettings.setStringExtractScripts(toUpdate);
258  }
259 
260  // This is a stop-gap way of notifying the job settings panel of potential changes.
261  XmlKeywordSearchList.getCurrent().fireLanguagesEvent(KeywordSearchList.LanguagesEvent.LANGUAGES_CHANGED);
262  }
263 
264  @Override
265  public void load() {
266  activateWidgets();
267  }
268 }

Copyright © 2012-2015 Basis Technology. Generated on: Wed Apr 6 2016
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.