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)