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 setPreferredSize(
new java.awt.Dimension(834, 374));
160 chunkSizeComboBox.addActionListener(
new java.awt.event.ActionListener() {
161 public void actionPerformed(java.awt.event.ActionEvent evt) {
162 chunkSizeComboBoxActionPerformed(evt);
166 org.openide.awt.Mnemonics.setLocalizedText(compressCheckbox,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.text"));
167 compressCheckbox.setToolTipText(
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.toolTipText"));
168 compressCheckbox.addActionListener(
new java.awt.event.ActionListener() {
169 public void actionPerformed(java.awt.event.ActionEvent evt) {
170 compressCheckboxActionPerformed(evt);
174 errorLabel.setForeground(
new java.awt.Color(255, 0, 0));
175 org.openide.awt.Mnemonics.setLocalizedText(errorLabel,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.errorLabel.text"));
177 javax.swing.GroupLayout listPanelLayout =
new javax.swing.GroupLayout(listPanel);
178 listPanel.setLayout(listPanelLayout);
179 listPanelLayout.setHorizontalGroup(
180 listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
181 .addGap(0, 0, Short.MAX_VALUE)
183 listPanelLayout.setVerticalGroup(
184 listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
185 .addGap(0, 190, Short.MAX_VALUE)
188 org.openide.awt.Mnemonics.setLocalizedText(includeAppCheckbox,
org.openide.util.NbBundle.getMessage(ReportWizardPortableCaseOptionsVisualPanel.class,
"ReportWizardPortableCaseOptionsVisualPanel.includeAppCheckbox.text"));
189 includeAppCheckbox.addActionListener(
new java.awt.event.ActionListener() {
190 public void actionPerformed(java.awt.event.ActionEvent evt) {
191 includeAppCheckboxActionPerformed(evt);
195 javax.swing.GroupLayout mainPanelLayout =
new javax.swing.GroupLayout(mainPanel);
196 mainPanel.setLayout(mainPanelLayout);
197 mainPanelLayout.setHorizontalGroup(
198 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
199 .addComponent(listPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
200 .addGroup(mainPanelLayout.createSequentialGroup()
202 .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
203 .addGroup(mainPanelLayout.createSequentialGroup()
204 .addComponent(compressCheckbox)
205 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
206 .addComponent(chunkSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
207 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
208 .addComponent(errorLabel))
209 .addComponent(includeAppCheckbox))
210 .addContainerGap(41, Short.MAX_VALUE))
212 mainPanelLayout.setVerticalGroup(
213 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
214 .addGroup(mainPanelLayout.createSequentialGroup()
215 .addComponent(listPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
216 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
217 .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
218 .addComponent(compressCheckbox)
219 .addComponent(chunkSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
220 .addComponent(errorLabel))
221 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
222 .addComponent(includeAppCheckbox)
226 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
227 this.setLayout(layout);
228 layout.setHorizontalGroup(
229 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230 .addGap(0, 463, Short.MAX_VALUE)
231 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
232 .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
234 layout.setVerticalGroup(
235 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
236 .addGap(0, 259, Short.MAX_VALUE)
237 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
238 .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
242 private void chunkSizeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
246 private void compressCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
247 chunkSizeComboBox.setEnabled(compressCheckbox.isSelected() && !includeAppCheckbox.isSelected());
251 private void includeAppCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
252 if (includeAppCheckbox.isSelected()) {
253 chunkSizeComboBox.setEnabled(
false);
254 chunkSizeComboBox.setSelectedItem(ChunkSize.NONE);
256 chunkSizeComboBox.setEnabled(compressCheckbox.isSelected());
258 updateIncludeApplication();
263 private javax.swing.JComboBox<ChunkSize> chunkSizeComboBox;
264 private javax.swing.JCheckBox compressCheckbox;
265 private javax.swing.JLabel errorLabel;
266 private javax.swing.JCheckBox includeAppCheckbox;
267 private javax.swing.JPanel listPanel;
268 private javax.swing.JPanel mainPanel;