Autopsy  3.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
LocalFilesPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2013 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.casemodule;
20 
21 import java.beans.PropertyChangeListener;
22 import java.beans.PropertyChangeSupport;
23 import java.io.File;
24 import java.util.Set;
25 import java.util.TreeSet;
26 import javax.swing.JFileChooser;
27 import javax.swing.JPanel;
28 
29 import org.openide.util.NbBundle;
32 import java.util.logging.Level;
37  class LocalFilesPanel extends JPanel {
38 
39  private PropertyChangeSupport pcs = null;
40  private Set<File> currentFiles = new TreeSet<File>(); //keep currents in a set to disallow duplicates per add
41  private boolean enableNext = false;
42  private static LocalFilesPanel instance;
43  public static final String FILES_SEP = ",";
44  private static final Logger logger = Logger.getLogger(LocalFilesPanel.class.getName());
48  private LocalFilesPanel() {
49  initComponents();
50  customInit();
51  }
52 
53  static synchronized LocalFilesPanel getDefault() {
54  if (instance == null) {
55  instance = new LocalFilesPanel();
56  }
57  return instance;
58  }
59 
60  private void customInit() {
61  localFileChooser.setMultiSelectionEnabled(true);
62  selectedPaths.setText("");
63 
64  }
65 
66  //@Override
67  public String getContentPaths() {
68  //TODO consider interface change to return list of paths instead
69 
70  if (currentFiles == null) {
71  return "";
72  }
73  StringBuilder b = new StringBuilder();
74  for (File f : currentFiles) {
75  b.append(f.getAbsolutePath() );
76  b.append(FILES_SEP);
77  }
78  return b.toString();
79  }
80 
81  //@Override
82  public void setContentPath(String s) {
83  //for the local file panel we don't need to restore the last paths used
84  //when the wizard restarts
85  }
86 
87  //@Override
88  public String getContentType() {
89  return NbBundle.getMessage(this.getClass(), "LocalFilesPanel.contentType.text");
90  }
91 
92  //@Override
93  public boolean validatePanel() {
94  return enableNext;
95  }
96 
97  //@Override
98  public void select() {
99  reset();
100  }
101 
102  //@Override
103  public void reset() {
104  currentFiles.clear();
105  selectedPaths.setText("");
106  enableNext = false;
107 
108  //pcs.firePropertyChange(AddImageWizardChooseDataSourceVisual.EVENT.UPDATE_UI.toString(), false, true);
109  }
110 
111  @Override
112  public synchronized void addPropertyChangeListener(PropertyChangeListener pcl) {
113  super.addPropertyChangeListener(pcl);
114 
115  if (pcs == null) {
116  pcs = new PropertyChangeSupport(this);
117  }
118 
119  pcs.addPropertyChangeListener(pcl);
120  }
121 
122  @Override
123  public void removePropertyChangeListener(PropertyChangeListener pcl) {
124  super.removePropertyChangeListener(pcl);
125 
126  pcs.removePropertyChangeListener(pcl);
127  }
128 
129 
130  @Override
131  public String toString() {
132  return NbBundle.getMessage(this.getClass(), "LocalFilesDSProcessor.toString.text");
133  }
134 
140  @SuppressWarnings("unchecked")
141  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
142  private void initComponents() {
143 
144  localFileChooser = new javax.swing.JFileChooser();
145  jScrollPane1 = new javax.swing.JScrollPane();
146  jTextArea1 = new javax.swing.JTextArea();
147  selectButton = new javax.swing.JButton();
148  infoLabel = new javax.swing.JLabel();
149  clearButton = new javax.swing.JButton();
150  jScrollPane2 = new javax.swing.JScrollPane();
151  selectedPaths = new javax.swing.JTextArea();
152 
153  localFileChooser.setApproveButtonText(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.localFileChooser.approveButtonText")); // NOI18N
154  localFileChooser.setApproveButtonToolTipText(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.localFileChooser.approveButtonToolTipText")); // NOI18N
155  localFileChooser.setDialogTitle(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.localFileChooser.dialogTitle")); // NOI18N
156  localFileChooser.setFileSelectionMode(javax.swing.JFileChooser.FILES_AND_DIRECTORIES);
157 
158  jTextArea1.setColumns(20);
159  jTextArea1.setRows(5);
160  jScrollPane1.setViewportView(jTextArea1);
161 
162  org.openide.awt.Mnemonics.setLocalizedText(selectButton, org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.selectButton.text")); // NOI18N
163  selectButton.setToolTipText(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.selectButton.toolTipText")); // NOI18N
164  selectButton.setActionCommand(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.selectButton.actionCommand")); // NOI18N
165  selectButton.addActionListener(new java.awt.event.ActionListener() {
166  public void actionPerformed(java.awt.event.ActionEvent evt) {
167  selectButtonActionPerformed(evt);
168  }
169  });
170 
171  org.openide.awt.Mnemonics.setLocalizedText(infoLabel, org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.infoLabel.text")); // NOI18N
172 
173  org.openide.awt.Mnemonics.setLocalizedText(clearButton, org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.clearButton.text")); // NOI18N
174  clearButton.setToolTipText(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.clearButton.toolTipText")); // NOI18N
175  clearButton.addActionListener(new java.awt.event.ActionListener() {
176  public void actionPerformed(java.awt.event.ActionEvent evt) {
177  clearButtonActionPerformed(evt);
178  }
179  });
180 
181  selectedPaths.setEditable(false);
182  selectedPaths.setColumns(20);
183  selectedPaths.setRows(5);
184  selectedPaths.setToolTipText(org.openide.util.NbBundle.getMessage(LocalFilesPanel.class, "LocalFilesPanel.selectedPaths.toolTipText")); // NOI18N
185  jScrollPane2.setViewportView(selectedPaths);
186 
187  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
188  this.setLayout(layout);
189  layout.setHorizontalGroup(
190  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
191  .addGroup(layout.createSequentialGroup()
192  .addComponent(infoLabel)
193  .addGap(0, 0, Short.MAX_VALUE))
194  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
195  .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 353, Short.MAX_VALUE)
196  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
197  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
198  .addComponent(selectButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
199  .addComponent(clearButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
200  .addGap(2, 2, 2))
201  );
202  layout.setVerticalGroup(
203  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
204  .addGroup(layout.createSequentialGroup()
205  .addComponent(infoLabel)
206  .addGap(5, 5, 5)
207  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
208  .addGroup(layout.createSequentialGroup()
209  .addComponent(selectButton)
210  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 17, Short.MAX_VALUE)
211  .addComponent(clearButton))
212  .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
213  .addGap(0, 0, 0))
214  );
215  }// </editor-fold>//GEN-END:initComponents
216 
217  private void selectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectButtonActionPerformed
218  int returnVal = localFileChooser.showOpenDialog(this);
219  if (returnVal == JFileChooser.APPROVE_OPTION) {
220  File [] files = localFileChooser.getSelectedFiles();
221  for (File f : files) {
222  currentFiles.add(f);
223  }
224 
225  //update label
226  StringBuilder allPaths = new StringBuilder();
227  for (File f : currentFiles) {
228  allPaths.append(f.getAbsolutePath()).append("\n");
229  }
230  this.selectedPaths.setText(allPaths.toString());
231  this.selectedPaths.setToolTipText(allPaths.toString());
232 
233  }
234 
235  if (!currentFiles.isEmpty()) {
236  enableNext = true;
237  }
238  else {
239  enableNext = false;
240  }
241 
242  try {
243  pcs.firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true);
244  }
245  catch (Exception e) {
246  logger.log(Level.SEVERE, "LocalFilesPanel listener threw exception", e); //NON-NLS
247  MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr"),
248  NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr.msg"),
249  MessageNotifyUtil.MessageType.ERROR);
250  }
251  }//GEN-LAST:event_selectButtonActionPerformed
252 
253  private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearButtonActionPerformed
254  reset();
255 
256 
257  }//GEN-LAST:event_clearButtonActionPerformed
258 
259  // Variables declaration - do not modify//GEN-BEGIN:variables
260  private javax.swing.JButton clearButton;
261  private javax.swing.JLabel infoLabel;
262  private javax.swing.JScrollPane jScrollPane1;
263  private javax.swing.JScrollPane jScrollPane2;
264  private javax.swing.JTextArea jTextArea1;
265  private javax.swing.JFileChooser localFileChooser;
266  private javax.swing.JButton selectButton;
267  private javax.swing.JTextArea selectedPaths;
268  // End of variables declaration//GEN-END:variables
269 }
static Logger getLogger(String name)
Definition: Logger.java:131

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