19 package org.sleuthkit.autopsy.contentviewers;
21 import java.awt.CardLayout;
22 import java.awt.Component;
23 import java.awt.Dimension;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.logging.Level;
33 @SuppressWarnings(
"PMD.SingularField")
34 class MediaFileViewer extends javax.swing.JPanel implements FileTypeViewer {
36 private static final Logger LOGGER = Logger.getLogger(MediaFileViewer.class.getName());
37 private AbstractFile lastFile;
39 private final MediaPlayerPanel mediaPlayerPanel;
40 private final boolean mediaPlayerPanelInited;
41 private final MediaViewImagePanel imagePanel;
42 private final boolean imagePanelInited;
44 private static final String IMAGE_VIEWER_LAYER =
"IMAGE";
45 private static final String MEDIA_PLAYER_LAYER =
"AUDIO_VIDEO";
50 public MediaFileViewer() {
55 mediaPlayerPanel =
new MediaPlayerPanel();
56 mediaPlayerPanelInited = mediaPlayerPanel.isInited();
58 imagePanel =
new MediaViewImagePanel();
59 imagePanelInited = imagePanel.isInited();
61 customizeComponents();
62 LOGGER.log(Level.INFO,
"Created MediaView instance: {0}",
this);
65 private void customizeComponents() {
66 add(imagePanel, IMAGE_VIEWER_LAYER);
67 add(mediaPlayerPanel, MEDIA_PLAYER_LAYER);
77 @SuppressWarnings(
"unchecked")
79 private
void initComponents() {
81 setLayout(
new java.awt.CardLayout());
82 getAccessibleContext().setAccessibleDescription(
org.openide.util.NbBundle.getMessage(MediaFileViewer.class,
"MediaFileViewer.AccessibleContext.accessibleDescription"));
93 public List<String> getSupportedMIMETypes() {
95 List<String> mimeTypes =
new ArrayList<>();
97 mimeTypes.addAll(this.imagePanel.getSupportedMimeTypes());
98 mimeTypes.addAll(this.mediaPlayerPanel.getSupportedMimeTypes());
110 public void setFile(AbstractFile file) {
118 if (file.equals(lastFile)) {
124 final Dimension dims = MediaFileViewer.this.getSize();
126 if (mediaPlayerPanelInited && mediaPlayerPanel.isSupported(file)) {
127 mediaPlayerPanel.loadFile(file, dims);
128 this.showVideoPanel();
129 }
else if (imagePanelInited && imagePanel.isSupported(file)) {
130 imagePanel.showImageFx(file, dims);
131 this.showImagePanel();
133 }
catch (Exception e) {
134 LOGGER.log(Level.SEVERE,
"Exception while setting node", e);
141 private void showVideoPanel() {
142 CardLayout layout = (CardLayout) this.getLayout();
143 layout.show(
this, MEDIA_PLAYER_LAYER);
149 private void showImagePanel() {
150 CardLayout layout = (CardLayout) this.getLayout();
151 layout.show(
this, IMAGE_VIEWER_LAYER);
155 public Component getComponent() {
160 public void resetComponent() {
161 mediaPlayerPanel.reset();
174 List<String> getSupportedMimeTypes();
181 List<String> getSupportedExtensions();
183 boolean isSupported(AbstractFile file);