1 46 package org.mr.core.persistent.file; 47 48 import java.awt.BorderLayout ; 49 import java.awt.GridLayout ; 50 import java.awt.event.ActionEvent ; 51 import java.awt.event.ActionListener ; 52 import java.awt.event.MouseAdapter ; 53 import java.awt.event.MouseEvent ; 54 import java.io.File ; 55 import java.io.IOException ; 56 import java.nio.ByteBuffer ; 57 58 import javax.swing.DefaultListModel ; 59 import javax.swing.JButton ; 60 import javax.swing.JFileChooser ; 61 import javax.swing.JFrame ; 62 import javax.swing.JLabel ; 63 import javax.swing.JList ; 64 import javax.swing.JPanel ; 65 import javax.swing.JScrollPane ; 66 import javax.swing.JTextArea ; 67 68 import org.mr.MantaAgent; 69 import org.mr.core.util.byteable.Byteable; 70 import org.mr.core.util.byteable.ByteableInputStream; 71 72 73 74 78 public class FatFileViewer { 79 80 private static JLabel fatName; 81 private static JLabel entryCount; 82 private static DefaultListModel EntriesListModel = new DefaultListModel () ; 83 private static JTextArea asBuffer; 84 private final static JFileChooser fc = new JFileChooser ("./"); 85 private static JFrame frame; 86 private static JLabel fileSizeLabel; 87 private static JLabel assignedClusterLabel; 88 private static MantaFatFile mff; 89 private static JTextArea entryToString; 90 91 92 public static void main(String [] args) { 93 frame = new JFrame ("FAT File Utility Comprehension King - Fat FUCK"); 94 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 95 96 MantaAgent.getInstance().init(); 97 98 BorderLayout outter = new BorderLayout (); 99 outter.setHgap(2); 100 outter.setVgap(2); 101 JPanel panel = new JPanel (outter); 102 frame.setContentPane(panel); 103 104 GridLayout topLayout = new GridLayout (7,1); 105 topLayout.setHgap(2); 106 topLayout.setVgap(2); 107 JPanel top = new JPanel (topLayout); 108 109 JLabel loadCap = new JLabel ("Load new file:"); 110 111 top.add(loadCap); 112 JButton load = new JButton ("Load me"); 113 top.add(load); 114 load.addActionListener(new ActionListener () { 115 public void actionPerformed(ActionEvent e) { 116 doLoad(e); 117 } 118 }); 119 120 JLabel detailsCap = new JLabel ("FAT file details:"); 121 top.add(detailsCap); 122 123 fatName = new JLabel ("File name: N/A"); 124 top.add(fatName); 125 126 127 entryCount = new JLabel ("Entry Count: N/A"); 128 top.add(entryCount); 129 130 fileSizeLabel = new JLabel ("File size: N/A"); 131 top.add(fileSizeLabel); 132 133 assignedClusterLabel = new JLabel ("Assigned Cluster: N/A"); 134 top.add(assignedClusterLabel); 135 136 137 141 BorderLayout botLayout = new BorderLayout (); 142 botLayout.setHgap(5); 143 botLayout.setVgap(5); 144 JPanel bot = new JPanel (botLayout); 145 146 147 JPanel leftBot = new JPanel (new BorderLayout ()); 148 149 JLabel filesCap = new JLabel ("Fat entries:"); 150 leftBot.add(filesCap,BorderLayout.NORTH); 151 final JList fileList = new JList (); 152 153 fileList.addMouseListener(new MouseAdapter () { 154 public void mouseClicked(MouseEvent e) { 155 int index = fileList.locationToIndex(e.getPoint()); 156 loadEntry((String )EntriesListModel.get(index)); 157 158 } 159 }); 160 161 fileList.setModel(EntriesListModel) ; 162 EntriesListModel.addElement("N/A"); 163 164 JScrollPane scrollPane = new JScrollPane (fileList); 165 166 leftBot.add(scrollPane,BorderLayout.CENTER); 167 168 bot.add(leftBot,BorderLayout.WEST); 169 170 171 JPanel rightBot = new JPanel (new BorderLayout ()); 172 JPanel asBufferPan = new JPanel (new BorderLayout ()); 174 175 JLabel bufferCap = new JLabel ("Entry as buffer:"); 176 asBufferPan.add(bufferCap, BorderLayout.NORTH); 177 asBuffer = new JTextArea (2,30); 178 asBuffer.setWrapStyleWord(true); 179 180 scrollPane = new JScrollPane (asBuffer); 181 asBufferPan.add(scrollPane, BorderLayout.CENTER); 182 183 rightBot.add(asBufferPan,BorderLayout.NORTH); 184 185 JPanel asStringPan = new JPanel (new BorderLayout ()); 187 188 JLabel asStringCap = new JLabel ("Entry as String:"); 189 asStringPan.add(asStringCap, BorderLayout.NORTH); 190 entryToString = new JTextArea (2,30); 191 entryToString.setWrapStyleWord(true); 192 193 scrollPane = new JScrollPane (entryToString); 194 asStringPan.add(scrollPane, BorderLayout.CENTER); 195 196 rightBot.add(asStringPan,BorderLayout.CENTER); 197 198 199 bot.add(rightBot,BorderLayout.CENTER); 200 201 panel.add(top , BorderLayout.NORTH ); 202 panel.add(bot, BorderLayout.CENTER); 203 204 205 frame.pack(); 206 frame.setVisible(true); 207 } 208 209 protected static void loadEntry(String entryName) { 210 if(mff==null)return; 211 asBuffer.setText(""); 212 ByteBuffer buf = mff.load(Integer.parseInt(entryName)); 213 String bufferToString = " "; 214 byte[] under = buf.array(); 215 for (int i = 0; i < under.length; i++) { 216 byte underByte = under[i]; 217 bufferToString +=underByte+" "; 218 } 219 asBuffer.setText(bufferToString); 220 try { 221 ByteableInputStream in = new ByteableInputStream(); 222 in.setUnderLine(buf); 223 Byteable result = in.readByteable(); 224 entryToString.setText(result.toString()); 225 } catch (IOException e) { 226 entryToString.setText("error creating object from buffer"+e.getMessage()); 227 e.printStackTrace(); 228 } 229 asBuffer.setCaretPosition(0); 230 entryToString.setCaretPosition(0); 231 } 232 233 protected static final void doLoad(ActionEvent e) { 234 int returnVal = fc.showOpenDialog(frame); 235 236 if (returnVal == JFileChooser.APPROVE_OPTION) { 237 File file = fc.getSelectedFile(); 238 System.out.println("Opening: " + file.getAbsolutePath()); 240 String fileName = file.getName(); 241 fatName.setText("File name: "+fileName); 242 243 mff = new MantaFatFile(file.getAbsolutePath()); 244 entryCount.setText("Entry Count: "+mff.getFileInFatCount()); 245 246 int assignedClusterCount = mff.getAssignedClusterCount(); 247 assignedClusterLabel.setText("Assigned Cluster: "+assignedClusterCount); 248 249 int fileSize = mff.getCurrentFileSize(); 250 fileSizeLabel.setText("File size: "+fileSize+" Bytes"); 251 252 EntriesListModel.clear(); 253 int[] entries= mff.getFileList(); 255 for (int i = 0; i < entries.length; i++) { 256 EntriesListModel.addElement(String.valueOf(entries[i])); 257 } 258 259 260 } 261 } 262 263 } 264 | Popular Tags |