19 package org.sleuthkit.autopsy.contentviewers;
 
   22 import com.google.common.base.Strings;
 
   23 import java.awt.Component;
 
   24 import java.util.HashMap;
 
   26 import java.util.logging.Level;
 
   27 import org.openide.nodes.Node;
 
   28 import org.openide.util.NbBundle;
 
   29 import org.openide.util.lookup.ServiceProvider;
 
   38 @ServiceProvider(service = DataContentViewer.class, position = 3)
 
   39 @SuppressWarnings(
"PMD.SingularField") 
 
   42     private static final int CONFIDENCE_LEVEL = 5;
 
   43     private static final long serialVersionUID = 1L;
 
   46     private final Map<String, FileTypeViewer> mimeTypeToViewerMap = 
new HashMap<>();
 
   49     private final FileTypeViewer[] KNOWN_VIEWERS = 
new FileTypeViewer[]{
 
   52         new MediaFileViewer(),
 
   64         for (FileTypeViewer cv : KNOWN_VIEWERS) {
 
   65             cv.getSupportedMIMETypes().forEach((mimeType) -> {
 
   66                 if (mimeTypeToViewerMap.containsKey(mimeType) == 
false) {
 
   67                     mimeTypeToViewerMap.put(mimeType, cv);
 
   69                     LOGGER.log(Level.WARNING, 
"Duplicate viewer for mimtype: {0}", mimeType); 
 
   76         LOGGER.log(Level.INFO, 
"Created ApplicationContentViewer instance: {0}", 
this); 
 
   87         return  mimeTypeToViewerMap.get(mimeType);
 
   95     @SuppressWarnings(
"unchecked")
 
   97     private 
void initComponents() {
 
   99         setLayout(
new javax.swing.OverlayLayout(
this));
 
  111         if (selectedNode == null) {
 
  115         AbstractFile file = selectedNode.getLookup().lookup(AbstractFile.class);
 
  120         String mimeType = file.getMIMEType();
 
  121         if (Strings.isNullOrEmpty(mimeType)) {
 
  122             LOGGER.log(Level.INFO, 
"Mimetype not known for file: {0}", file.getName()); 
 
  127                 LOGGER.log(Level.SEVERE, 
"Failed to initialize FileTypeDetector.", ex); 
 
  132         if (mimeType.equalsIgnoreCase(
"application/octet-stream")) {
 
  136             FileTypeViewer viewer = getSupportingViewer(mimeType);
 
  137             if (viewer != null) {
 
  140                 viewer.setFile(file);
 
  142                 this.add(viewer.getComponent());
 
  150     @NbBundle.Messages(
"ApplicationContentViewer.title=Application")
 
  152         return Bundle.ApplicationContentViewer_title();
 
  156     @NbBundle.Messages(
"ApplicationContentViewer.toolTip=Displays file contents.")
 
  158         return Bundle.ApplicationContentViewer_toolTip();
 
  174         if (lastViewer != null) {
 
  175             lastViewer.resetComponent();
 
  188         AbstractFile aFile = node.getLookup().lookup(AbstractFile.class);
 
  193         String mimeType = aFile.getMIMEType();
 
  194         if (Strings.isNullOrEmpty(mimeType)) {
 
  195             LOGGER.log(Level.INFO, 
"Mimetype not known for file: {0}", aFile.getName()); 
 
  200                 LOGGER.log(Level.SEVERE, 
"Failed to initialize FileTypeDetector.", ex); 
 
  205         if (mimeType.equalsIgnoreCase(
"application/octet-stream")) {
 
  208             return (getSupportingViewer(mimeType) != null);
 
  215         AbstractFile file = node.getLookup().lookup(AbstractFile.class);
 
  216         String mimeType = file.getMIMEType();
 
  218         if (Strings.isNullOrEmpty(mimeType)) {
 
  219             LOGGER.log(Level.INFO, 
"Mimetype not known for file: {0}", file.getName()); 
 
  224                 LOGGER.log(Level.SEVERE, 
"Failed to initialize FileTypeDetector.", ex); 
 
  229         if (mimeType.equalsIgnoreCase(
"application/octet-stream")) {
 
  232             if (null != getSupportingViewer(mimeType)) {
 
  233                 return CONFIDENCE_LEVEL;
 
FileTypeViewer lastViewer
String getMIMEType(AbstractFile file)
boolean isSupported(Node node)
int isPreferred(Node node)
FileTypeViewer getSupportingViewer(String mimeType)
void setNode(Node selectedNode)
DataContentViewer createInstance()
synchronized static Logger getLogger(String name)