19 package org.sleuthkit.autopsy.contentviewers;
 
   21 import java.awt.Component;
 
   22 import org.openide.nodes.Node;
 
   23 import org.openide.util.NbBundle;
 
   24 import org.openide.util.NbBundle.Messages;
 
   25 import org.openide.util.lookup.ServiceProvider;
 
   31 import org.
sleuthkit.datamodel.TskData.TSK_DB_FILES_TYPE_ENUM;
 
   38 @ServiceProvider(service = DataContentViewer.class, position = 6)
 
   46         customizeComponents();
 
   54     @SuppressWarnings(
"unchecked")
 
   56     private 
void initComponents() {
 
   58         jPopupMenu1 = 
new javax.swing.JPopupMenu();
 
   59         jScrollPane2 = 
new javax.swing.JScrollPane();
 
   60         jTextPane1 = 
new javax.swing.JTextPane();
 
   62         setPreferredSize(
new java.awt.Dimension(100, 52));
 
   64         jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
 
   65         jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 
   66         jScrollPane2.setPreferredSize(
new java.awt.Dimension(610, 52));
 
   68         jTextPane1.setEditable(
false);
 
   69         jTextPane1.setPreferredSize(
new java.awt.Dimension(600, 52));
 
   70         jScrollPane2.setViewportView(jTextPane1);
 
   72         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
   73         this.setLayout(layout);
 
   74         layout.setHorizontalGroup(
 
   75             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
   76             .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
   78         layout.setVerticalGroup(
 
   79             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
   80             .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  104         jTextPane1.setText(
"<html><body>" + str + 
"</body></html>"); 
 
  108         sb.append(
"<table>"); 
 
  112         sb.append(
"</table>"); 
 
  115     private void addRow(StringBuilder sb, String key, String value) {
 
  116         sb.append(
"<tr><td>"); 
 
  118         sb.append(
"</td><td>"); 
 
  120         sb.append(
"</td></tr>"); 
 
  124         "Metadata.tableRowTitle.mimeType=MIME Type",
 
  125         "Metadata.nodeText.truncated=(results truncated)"})
 
  128         AbstractFile file = node.getLookup().lookup(AbstractFile.class);
 
  130             setText(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.nonFilePassedIn"));
 
  134         StringBuilder sb = 
new StringBuilder();
 
  138             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.name"), file.getUniquePath());
 
  139         } 
catch (TskCoreException ex) {
 
  140             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.name"), file.getParentPath() + 
"/" + file.getName());
 
  143         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.type"), file.getType().getName());
 
  144         addRow(sb, Bundle.Metadata_tableRowTitle_mimeType(), file.getMIMEType());
 
  145         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.size"), Long.toString(file.getSize()));
 
  146         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.fileNameAlloc"), file.getDirFlagAsString());
 
  147         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.metadataAlloc"), file.getMetaFlagsAsString());
 
  148         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.modified"), 
ContentUtils.
getStringTime(file.getMtime(), file));
 
  149         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.accessed"), 
ContentUtils.
getStringTime(file.getAtime(), file));
 
  150         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.created"), 
ContentUtils.
getStringTime(file.getCrtime(), file));
 
  151         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.changed"), 
ContentUtils.
getStringTime(file.getCtime(), file));
 
  154         String md5 = file.getMd5Hash();
 
  156             md5 = NbBundle.getMessage(this.getClass(), 
"Metadata.tableRowContent.md5notCalc");
 
  158         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.md5"), md5);
 
  159         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.hashLookupResults"), file.getKnown().toString());
 
  161         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.internalid"), Long.toString(file.getId()));
 
  162         if (file.getType().compareTo(TSK_DB_FILES_TYPE_ENUM.LOCAL) == 0) {
 
  163             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.localPath"), file.getLocalAbsPath());
 
  173             if (file instanceof FsContent) {
 
  174                 FsContent fsFile = (FsContent) file;
 
  176                 sb.append(
"<hr /><pre>\n"); 
 
  177                 sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.text"));
 
  178                 sb.append(
" <br /><br />"); 
 
  179                 for (String str : fsFile.getMetaDataText()) {
 
  180                     sb.append(str).append(
"<br />"); 
 
  186                     if(sb.length() > 50000){
 
  187                         sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.truncated"));
 
  191                 sb.append(
"</pre>\n"); 
 
  193         } 
catch (TskCoreException ex) {
 
  194             sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.exceptionNotice.text")).append(ex.getLocalizedMessage());
 
  197         setText(sb.toString());
 
  198         jTextPane1.setCaretPosition(0);
 
  199         this.setCursor(null);
 
  204         return NbBundle.getMessage(this.getClass(), 
"Metadata.title");
 
  209         return NbBundle.getMessage(this.getClass(), 
"Metadata.toolTip");
 
  230         AbstractFile file = node.getLookup().lookup(AbstractFile.class);
 
void endTable(StringBuilder sb)
 
static String getStringTime(long epochSeconds, TimeZone tzone)
 
void addRow(StringBuilder sb, String key, String value)
 
javax.swing.JTextPane jTextPane1
 
javax.swing.JPopupMenu jPopupMenu1
 
void customizeComponents()
 
static void configureTextPaneAsHtml(JTextPane pane)
 
boolean isSupported(Node node)
 
DataContentViewer createInstance()
 
int isPreferred(Node node)
 
javax.swing.JScrollPane jScrollPane2
 
void startTable(StringBuilder sb)