19 package org.sleuthkit.autopsy.report.infrastructure;
24 import java.awt.GridLayout;
26 import org.openide.util.NbBundle;
33 @SuppressWarnings(
"PMD.SingularField")
34 class ReportWizardPortableCaseOptionsVisualPanel extends javax.swing.JPanel {
36 private static final long serialVersionUID = 1L;
38 private final ReportWizardPortableCaseOptionsPanel wizPanel;
39 private PortableCaseReportModuleSettings settings = null;
40 private final Map<String, ReportModuleConfig> moduleConfigs;
41 private final boolean useCaseSpecificData;
46 ReportWizardPortableCaseOptionsVisualPanel(ReportWizardPortableCaseOptionsPanel wizPanel, Map<String, ReportModuleConfig> moduleConfigs,
boolean useCaseSpecificData) {
47 this.wizPanel = wizPanel;
48 this.useCaseSpecificData = useCaseSpecificData;
49 this.moduleConfigs = moduleConfigs;
51 customizeComponents();
54 private void customizeComponents() {
56 if (!PlatformUtil.isWindowsOS()) {
57 errorLabel.setVisible(
true);
58 compressCheckbox.setEnabled(
false);
60 errorLabel.setVisible(
false);
63 for (ChunkSize chunkSize : ChunkSize.values()) {
64 chunkSizeComboBox.addItem(chunkSize);
68 if (moduleConfigs != null) {
70 ReportModuleConfig config = moduleConfigs.get(PortableCaseReportModule.class.getCanonicalName());
73 ReportModuleSettings reportSettings = config.getModuleSettings();
75 if (reportSettings instanceof PortableCaseReportModuleSettings) {
76 settings = (PortableCaseReportModuleSettings) reportSettings;
81 if (settings == null) {
83 settings =
new PortableCaseReportModuleSettings();
87 compressCheckbox.setSelected(settings.shouldCompress());
88 chunkSizeComboBox.setEnabled(settings.shouldCompress());
89 chunkSizeComboBox.setSelectedItem(settings.getChunkSize());
92 listPanel.setLayout(
new GridLayout(1, 2));
93 listPanel.add(
new PortableCaseTagsListPanel(wizPanel, settings, useCaseSpecificData));
94 listPanel.add(
new PortableCaseInterestingItemsListPanel(wizPanel, settings, useCaseSpecificData));
98 "ReportWizardPortableCaseOptionsVisualPanel.getName.title=Choose Portable Case settings",})
100 public String getName() {
101 return Bundle.ReportWizardPortableCaseOptionsVisualPanel_getName_title();
109 private ChunkSize getChunkSize() {
110 return (ChunkSize) chunkSizeComboBox.getSelectedItem();
117 private void updateCompression() {
118 if (settings != null) {
119 settings.updateCompression(compressCheckbox.isSelected(), getChunkSize());
120 wizPanel.setFinish(settings.isValid());
127 private void updateIncludeApplication() {
128 if (settings != null) {
129 settings.setIncludeApplication(includeAppCheckbox.isSelected());
138 PortableCaseReportModuleSettings getPortableCaseReportSettings() {
147 @SuppressWarnings(
"unchecked")
149 private
void initComponents() {
151 mainPanel =
new javax.swing.JPanel();
152 chunkSizeComboBox =
new javax.swing.JComboBox<>();
153 compressCheckbox =
new javax.swing.JCheckBox();
154 errorLabel =
new javax.swing.JLabel();
155 listPanel =
new javax.swing.JPanel();
156 includeAppCheckbox =
new javax.swing.JCheckBox();
158 chunkSizeComboBox.addActionListener(
new java.awt.event.ActionListener() {
159 public void actionPerformed(java.awt.event.ActionEvent evt) {
160 chunkSizeComboBoxActionPerformed(evt);
164 org.openide.awt.Mnemonics.setLocalizedText(compressCheckbox,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.text"));
165 compressCheckbox.setToolTipText(
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.toolTipText"));
166 compressCheckbox.addActionListener(
new java.awt.event.ActionListener() {
167 public void actionPerformed(java.awt.event.ActionEvent evt) {
168 compressCheckboxActionPerformed(evt);
172 errorLabel.setForeground(
new java.awt.Color(255, 0, 0));
173 org.openide.awt.Mnemonics.setLocalizedText(errorLabel,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.errorLabel.text"));
175 javax.swing.GroupLayout listPanelLayout =
new javax.swing.GroupLayout(listPanel);
176 listPanel.setLayout(listPanelLayout);
177 listPanelLayout.setHorizontalGroup(
178 listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
179 .addGap(0, 0, Short.MAX_VALUE)
181 listPanelLayout.setVerticalGroup(
182 listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
183 .addGap(0, 190, Short.MAX_VALUE)
186 org.openide.awt.Mnemonics.setLocalizedText(includeAppCheckbox,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.includeAppCheckbox.text"));
187 includeAppCheckbox.addActionListener(
new java.awt.event.ActionListener() {
188 public void actionPerformed(java.awt.event.ActionEvent evt) {
189 includeAppCheckboxActionPerformed(evt);
193 javax.swing.GroupLayout mainPanelLayout =
new javax.swing.GroupLayout(mainPanel);
194 mainPanel.setLayout(mainPanelLayout);
195 mainPanelLayout.setHorizontalGroup(
196 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
197 .addComponent(listPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
198 .addGroup(mainPanelLayout.createSequentialGroup()
200 .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
201 .addGroup(mainPanelLayout.createSequentialGroup()
202 .addComponent(compressCheckbox)
203 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
204 .addComponent(chunkSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
205 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
206 .addComponent(errorLabel))
207 .addComponent(includeAppCheckbox))
208 .addContainerGap(41, Short.MAX_VALUE))
210 mainPanelLayout.setVerticalGroup(
211 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
212 .addGroup(mainPanelLayout.createSequentialGroup()
213 .addComponent(listPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
214 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
215 .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
216 .addComponent(compressCheckbox)
217 .addComponent(chunkSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
218 .addComponent(errorLabel))
219 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
220 .addComponent(includeAppCheckbox)
224 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
225 this.setLayout(layout);
226 layout.setHorizontalGroup(
227 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
228 .addGap(0, 463, Short.MAX_VALUE)
229 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230 .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
232 layout.setVerticalGroup(
233 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
234 .addGap(0, 259, Short.MAX_VALUE)
235 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
236 .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
240 private void chunkSizeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
244 private void compressCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
245 chunkSizeComboBox.setEnabled(compressCheckbox.isSelected() && !includeAppCheckbox.isSelected());
249 private void includeAppCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
250 if (includeAppCheckbox.isSelected()) {
251 chunkSizeComboBox.setEnabled(
false);
252 chunkSizeComboBox.setSelectedItem(ChunkSize.NONE);
254 chunkSizeComboBox.setEnabled(compressCheckbox.isSelected());
256 updateIncludeApplication();
261 private javax.swing.JComboBox<ChunkSize> chunkSizeComboBox;
262 private javax.swing.JCheckBox compressCheckbox;
263 private javax.swing.JLabel errorLabel;
264 private javax.swing.JCheckBox includeAppCheckbox;
265 private javax.swing.JPanel listPanel;
266 private javax.swing.JPanel mainPanel;