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;
 
   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(610, 52));
 
   64         jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
 
   65         jScrollPane2.setPreferredSize(
new java.awt.Dimension(610, 52));
 
   67         jTextPane1.setEditable(
false);
 
   68         jTextPane1.setPreferredSize(
new java.awt.Dimension(600, 52));
 
   69         jScrollPane2.setViewportView(jTextPane1);
 
   71         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
   72         this.setLayout(layout);
 
   73         layout.setHorizontalGroup(
 
   74             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
   75             .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
   77         layout.setVerticalGroup(
 
   78             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
   79             .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  103         jTextPane1.setText(
"<html><body>" + str + 
"</body></html>"); 
 
  107         sb.append(
"<table>"); 
 
  111         sb.append(
"</table>"); 
 
  114     private void addRow(StringBuilder sb, String key, String value) {
 
  115         sb.append(
"<tr><td>"); 
 
  117         sb.append(
"</td><td>"); 
 
  119         sb.append(
"</td></tr>"); 
 
  123         "Metadata.tableRowTitle.mimeType=MIME Type",
 
  124         "Metadata.nodeText.truncated=(results truncated)"})
 
  127         AbstractFile file = node.getLookup().lookup(AbstractFile.class);
 
  129             setText(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.nonFilePassedIn"));
 
  133         StringBuilder sb = 
new StringBuilder();
 
  137             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.name"), file.getUniquePath());
 
  138         } 
catch (TskCoreException ex) {
 
  139             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.name"), file.getParentPath() + 
"/" + file.getName());
 
  142         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.type"), file.getType().getName());
 
  143         addRow(sb, Bundle.Metadata_tableRowTitle_mimeType(), file.getMIMEType());
 
  144         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.size"), Long.toString(file.getSize()));
 
  145         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.fileNameAlloc"), file.getDirFlagAsString());
 
  146         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.metadataAlloc"), file.getMetaFlagsAsString());
 
  147         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.modified"), 
ContentUtils.
getStringTime(file.getMtime(), file));
 
  148         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.accessed"), 
ContentUtils.
getStringTime(file.getAtime(), file));
 
  149         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.created"), 
ContentUtils.
getStringTime(file.getCrtime(), file));
 
  150         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.changed"), 
ContentUtils.
getStringTime(file.getCtime(), file));
 
  153         String md5 = file.getMd5Hash();
 
  155             md5 = NbBundle.getMessage(this.getClass(), 
"Metadata.tableRowContent.md5notCalc");
 
  157         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.md5"), md5);
 
  158         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.hashLookupResults"), file.getKnown().toString());
 
  160         addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.internalid"), Long.toString(file.getId()));
 
  161         if (file.getType().compareTo(TSK_DB_FILES_TYPE_ENUM.LOCAL) == 0) {
 
  162             addRow(sb, NbBundle.getMessage(
this.getClass(), 
"Metadata.tableRowTitle.localPath"), file.getLocalAbsPath());
 
  172             if (file instanceof FsContent) {
 
  173                 FsContent fsFile = (FsContent) file;
 
  175                 sb.append(
"<hr /><pre>\n"); 
 
  176                 sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.text"));
 
  177                 sb.append(
" <br /><br />"); 
 
  178                 for (String str : fsFile.getMetaDataText()) {
 
  179                     sb.append(str).append(
"<br />"); 
 
  185                     if(sb.length() > 50000){
 
  186                         sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.truncated"));
 
  190                 sb.append(
"</pre>\n"); 
 
  192         } 
catch (TskCoreException ex) {
 
  193             sb.append(NbBundle.getMessage(
this.getClass(), 
"Metadata.nodeText.exceptionNotice.text")).append(ex.getLocalizedMessage());
 
  196         setText(sb.toString());
 
  197         jTextPane1.setCaretPosition(0);
 
  198         this.setCursor(null);
 
  203         return NbBundle.getMessage(this.getClass(), 
"Metadata.title");
 
  208         return NbBundle.getMessage(this.getClass(), 
"Metadata.toolTip");
 
  228         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)