19 package org.sleuthkit.autopsy.casemodule;
21 import java.awt.Color;
22 import java.awt.Component;
23 import java.awt.Dimension;
24 import java.awt.GridBagConstraints;
25 import java.awt.GridBagLayout;
26 import java.awt.event.ActionEvent;
27 import java.awt.event.ActionListener;
28 import java.util.ArrayList;
29 import java.util.Enumeration;
30 import java.util.HashMap;
31 import java.util.List;
33 import java.util.logging.Level;
34 import javax.swing.AbstractButton;
35 import javax.swing.Box.Filler;
36 import javax.swing.JPanel;
37 import javax.swing.JTextArea;
38 import javax.swing.JToggleButton;
39 import org.openide.util.Lookup;
40 import org.openide.util.NbBundle;
49 final class AddImageWizardSelectDspVisual
extends JPanel {
51 private static final Logger logger = Logger.
getLogger(AddImageWizardSelectDspVisual.class.getName());
52 private String selectedDsp;
57 AddImageWizardSelectDspVisual(String lastDspUsed) {
59 selectedDsp = lastDspUsed;
61 if ((Case.getCurrentCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && selectedDsp.equals(LocalDiskDSProcessor.getType())) {
62 selectedDsp = ImageDSProcessor.getType();
64 createDataSourceProcessorButtons();
73 private void updateSelectedDsp() {
74 Enumeration<AbstractButton> buttonGroup = buttonGroup1.getElements();
75 while (buttonGroup.hasMoreElements()) {
76 AbstractButton dspButton = buttonGroup.nextElement();
77 if (dspButton.isSelected()) {
78 selectedDsp = dspButton.getName();
90 String getSelectedDsp() {
94 @NbBundle.Messages(
"AddImageWizardSelectDspVisual.multiUserWarning.text=This type of Data Source Processor is not available in multi-user mode")
99 private void createDataSourceProcessorButtons() {
101 ActionListener cbActionListener =
new ActionListener() {
103 public void actionPerformed(ActionEvent e) {
107 List<String> dspList = getListOfDsps();
109 GridBagLayout gridBagLayout =
new GridBagLayout();
110 GridBagConstraints constraints =
new GridBagConstraints();
111 constraints.fill = GridBagConstraints.HORIZONTAL;
112 constraints.gridx = 0;
113 constraints.gridy = 0;
114 constraints.weighty = 0;
115 constraints.anchor = GridBagConstraints.LINE_START;
116 Dimension spacerBlockDimension =
new Dimension(6, 4);
117 for (String dspType : dspList) {
118 boolean shouldAddMultiUserWarning =
false;
119 constraints.weightx = 1;
121 Filler spacer =
new Filler(spacerBlockDimension, spacerBlockDimension, spacerBlockDimension);
122 gridBagLayout.setConstraints(spacer, constraints);
127 JToggleButton dspButton = createDspButton(dspType);
128 dspButton.addActionListener(cbActionListener);
129 if ((Case.getCurrentCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && dspType.equals(LocalDiskDSProcessor.getType())){
130 dspButton.setEnabled(
false);
131 dspButton.setSelected(
false);
132 shouldAddMultiUserWarning =
true;
134 jPanel1.add(dspButton);
135 buttonGroup1.add(dspButton);
136 gridBagLayout.setConstraints(dspButton, constraints);
139 Filler buttonTextSpacer =
new Filler(spacerBlockDimension, spacerBlockDimension, spacerBlockDimension);
140 gridBagLayout.setConstraints(buttonTextSpacer, constraints);
141 jPanel1.add(buttonTextSpacer);
145 JTextArea myLabel =
new JTextArea();
146 if (shouldAddMultiUserWarning) {
147 myLabel.setText(dspType +
" - " + NbBundle.getMessage(
this.getClass(),
"AddImageWizardSelectDspVisual.multiUserWarning.text"));
148 myLabel.setEnabled(
false);
150 myLabel.setText(dspType);
152 myLabel.setBackground(
new Color(240, 240, 240));
153 myLabel.setEditable(
false);
154 myLabel.setWrapStyleWord(
true);
155 myLabel.setLineWrap(
true);
156 jPanel1.add(myLabel);
157 gridBagLayout.setConstraints(myLabel, constraints);
158 constraints.weightx = 0;
160 constraints.gridx = 0;
162 Component vertGlue = javax.swing.Box.createVerticalGlue();
163 jPanel1.add(vertGlue);
165 constraints.gridx = 0;
166 constraints.weighty = 1;
167 gridBagLayout.setConstraints(vertGlue, constraints);
168 jPanel1.setLayout(gridBagLayout);
179 private List<String> getListOfDsps() {
180 List<String> dspList =
new ArrayList<>();
181 final Map<String, DataSourceProcessor> datasourceProcessorsMap =
new HashMap<>();
182 for (DataSourceProcessor dsProcessor : Lookup.getDefault().lookupAll(DataSourceProcessor.class)) {
183 if (!datasourceProcessorsMap.containsKey(dsProcessor.getDataSourceType())) {
184 datasourceProcessorsMap.put(dsProcessor.getDataSourceType(), dsProcessor);
186 logger.log(Level.SEVERE,
"discoverDataSourceProcessors(): A DataSourceProcessor already exists for type = {0}", dsProcessor.getDataSourceType());
189 dspList.add(ImageDSProcessor.getType());
190 dspList.add(LocalDiskDSProcessor.getType());
191 dspList.add(LocalFilesDSProcessor.getType());
192 dspList.add(RawDSProcessor.getType());
194 for (String dspType : datasourceProcessorsMap.keySet()) {
195 if (!dspList.contains(dspType)) {
196 dspList.add(dspType);
209 private JToggleButton createDspButton(String dspType) {
210 JToggleButton dspButton =
new JToggleButton();
211 dspButton.setMaximumSize(
new java.awt.Dimension(48, 48));
212 dspButton.setMinimumSize(
new java.awt.Dimension(48, 48));
213 dspButton.setPreferredSize(
new java.awt.Dimension(48, 48));
214 dspButton.setName(dspType);
215 dspButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/fileextmismatch/options-icon.png")));
216 dspButton.setSelectedIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/corecomponents/checkbox32.png")));
217 dspButton.setFocusable(
false);
218 if (dspType.equals(selectedDsp)) {
219 dspButton.setSelected(
true);
221 dspButton.setSelected(
false);
226 @SuppressWarnings(
"unchecked")
228 private
void initComponents() {
230 buttonGroup1 =
new javax.swing.ButtonGroup();
231 jScrollPane1 =
new javax.swing.JScrollPane();
232 jPanel1 =
new javax.swing.JPanel();
233 filler1 =
new javax.swing.Box.Filler(
new java.awt.Dimension(6, 8),
new java.awt.Dimension(6, 8),
new java.awt.Dimension(6, 8));
235 jPanel1.setLayout(
new java.awt.GridBagLayout());
236 jPanel1.add(filler1,
new java.awt.GridBagConstraints());
238 jScrollPane1.setViewportView(jPanel1);
240 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
241 this.setLayout(layout);
242 layout.setHorizontalGroup(
243 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
244 .addGap(0, 588, Short.MAX_VALUE)
245 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
246 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 588, Short.MAX_VALUE))
248 layout.setVerticalGroup(
249 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
250 .addGap(0, 328, Short.MAX_VALUE)
251 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
252 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE))
258 private javax.swing.ButtonGroup buttonGroup1;
259 private javax.swing.Box.Filler filler1;
260 private javax.swing.JPanel jPanel1;
261 private javax.swing.JScrollPane jScrollPane1;
synchronized static Logger getLogger(String name)