Autopsy  4.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
MimeTypePanel.java
Go to the documentation of this file.
1 /*
2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
6 package org.sleuthkit.autopsy.filesearch;
7 
8 import java.beans.PropertyChangeListener;
9 import java.util.ArrayList;
10 import java.util.HashSet;
11 import java.util.List;
12 import java.util.Set;
13 import java.util.SortedSet;
14 import java.util.logging.Level;
15 import javax.swing.event.ListSelectionEvent;
16 import javax.swing.event.ListSelectionListener;
17 import org.apache.tika.mime.MediaType;
18 import org.apache.tika.mime.MimeTypes;
21 
26 public class MimeTypePanel extends javax.swing.JPanel {
27 
28  private static final SortedSet<MediaType> mediaTypes = MimeTypes.getDefaultMimeTypes().getMediaTypeRegistry().getTypes();
29  private static final Logger logger = Logger.getLogger(MimeTypePanel.class.getName());
30  private static final long serialVersionUID = 1L;
31 
35  public MimeTypePanel() {
37  setComponentsEnabled();
38  this.mimeTypeList.addListSelectionListener(new ListSelectionListener() {
39  @Override
40  public void valueChanged(ListSelectionEvent e) {
41  firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
42  }
43  });
44  }
45 
46  private String[] getMimeTypeArray() {
47  Set<String> fileTypesCollated = new HashSet<>();
48  for (MediaType mediaType : mediaTypes) {
49  fileTypesCollated.add(mediaType.toString());
50  }
51 
52  FileTypeDetector fileTypeDetector;
53  try {
54  fileTypeDetector = new FileTypeDetector();
55  List<String> userDefinedFileTypes = fileTypeDetector.getUserDefinedTypes();
56  fileTypesCollated.addAll(userDefinedFileTypes);
57 
59  logger.log(Level.SEVERE, "Unable to get user defined file types", ex);
60  }
61 
62  List<String> toSort = new ArrayList<>(fileTypesCollated);
63  toSort.sort((String string1, String string2) -> {
64  int result = String.CASE_INSENSITIVE_ORDER.compare(string1, string2);
65  if (result == 0) {
66  result = string1.compareTo(string2);
67  }
68  return result;
69  });
70  String[] mimeTypeArray = new String[toSort.size()];
71  return toSort.toArray(mimeTypeArray);
72  }
73 
74  List<String> getMimeTypesSelected() {
75  return this.mimeTypeList.getSelectedValuesList();
76  }
77 
78  boolean isSelected() {
79  return this.mimeTypeCheckBox.isSelected();
80  }
81 
82  void setComponentsEnabled() {
83  boolean enabled = this.isSelected();
84  this.mimeTypeList.setEnabled(enabled);
85  this.jLabel1.setEnabled(enabled);
86  }
87 
93  @SuppressWarnings("unchecked")
94  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
95  private void initComponents() {
96 
97  jScrollPane1 = new javax.swing.JScrollPane();
98  mimeTypeList = new javax.swing.JList<>();
99  mimeTypeCheckBox = new javax.swing.JCheckBox();
100  jLabel1 = new javax.swing.JLabel();
101 
102  setMinimumSize(new java.awt.Dimension(150, 150));
103  setPreferredSize(new java.awt.Dimension(100, 100));
104 
105  mimeTypeList.setModel(new javax.swing.AbstractListModel<String>() {
106  String[] strings = getMimeTypeArray();
107  public int getSize() { return strings.length; }
108  public String getElementAt(int i) { return strings[i]; }
109  });
110  mimeTypeList.setMinimumSize(new java.awt.Dimension(0, 200));
111  jScrollPane1.setViewportView(mimeTypeList);
112 
113  org.openide.awt.Mnemonics.setLocalizedText(mimeTypeCheckBox, org.openide.util.NbBundle.getMessage(MimeTypePanel.class, "MimeTypePanel.mimeTypeCheckBox.text")); // NOI18N
114  mimeTypeCheckBox.addActionListener(new java.awt.event.ActionListener() {
115  public void actionPerformed(java.awt.event.ActionEvent evt) {
117  }
118  });
119 
120  jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
121  org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(MimeTypePanel.class, "MimeTypePanel.jLabel1.text")); // NOI18N
122 
123  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
124  this.setLayout(layout);
125  layout.setHorizontalGroup(
126  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
127  .addGroup(layout.createSequentialGroup()
128  .addComponent(mimeTypeCheckBox)
129  .addGap(0, 0, Short.MAX_VALUE))
130  .addGroup(layout.createSequentialGroup()
131  .addContainerGap()
132  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
133  .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE)
134  .addGroup(layout.createSequentialGroup()
135  .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 246, javax.swing.GroupLayout.PREFERRED_SIZE)
136  .addGap(0, 0, Short.MAX_VALUE)))
137  .addContainerGap())
138  );
139  layout.setVerticalGroup(
140  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
141  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
142  .addComponent(mimeTypeCheckBox)
143  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
144  .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 106, Short.MAX_VALUE)
145  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
146  .addComponent(jLabel1)
147  .addContainerGap())
148  );
149  }// </editor-fold>//GEN-END:initComponents
150 
151  private void mimeTypeCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mimeTypeCheckBoxActionPerformed
152  setComponentsEnabled();
153  firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
154  this.mimeTypeList.setSelectedIndices(new int[0]);
155  }//GEN-LAST:event_mimeTypeCheckBoxActionPerformed
156 
157 
158  // Variables declaration - do not modify//GEN-BEGIN:variables
159  private javax.swing.JLabel jLabel1;
160  private javax.swing.JScrollPane jScrollPane1;
161  private javax.swing.JCheckBox mimeTypeCheckBox;
162  private javax.swing.JList<String> mimeTypeList;
163  // End of variables declaration//GEN-END:variables
164 }
void mimeTypeCheckBoxActionPerformed(java.awt.event.ActionEvent evt)
static final SortedSet< MediaType > mediaTypes
synchronized static Logger getLogger(String name)
Definition: Logger.java:161

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