mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-11-16 04:04:39 +00:00
74 lines
2.0 KiB
Java
74 lines
2.0 KiB
Java
|
package com.bytezone.diskbrowser.infocom;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
|
||
|
import com.bytezone.diskbrowser.applefile.AbstractFile;
|
||
|
|
||
|
class Abbreviations extends AbstractFile
|
||
|
{
|
||
|
List<ZString> list;
|
||
|
Header header;
|
||
|
int dataPtr;
|
||
|
int dataSize;
|
||
|
int tablePtr;
|
||
|
int tableSize;
|
||
|
|
||
|
public Abbreviations (Header header)
|
||
|
{
|
||
|
super ("Abbreviations", header.buffer);
|
||
|
this.header = header;
|
||
|
|
||
|
dataPtr = header.getWord (header.abbreviationsTable) * 2;
|
||
|
dataSize = header.abbreviationsTable - dataPtr;
|
||
|
tablePtr = header.abbreviationsTable;
|
||
|
tableSize = header.objectTable - header.abbreviationsTable;
|
||
|
|
||
|
// prepare hex dump
|
||
|
hexBlocks.add (new HexBlock (dataPtr, dataSize, "Abbreviations data:"));
|
||
|
hexBlocks.add (new HexBlock (tablePtr, tableSize, "Abbreviations table:"));
|
||
|
}
|
||
|
|
||
|
private void populate ()
|
||
|
{
|
||
|
System.out.println ("populating abbreviations");
|
||
|
list = new ArrayList<ZString> ();
|
||
|
|
||
|
for (int i = header.abbreviationsTable; i < header.objectTable; i += 2)
|
||
|
{
|
||
|
int j = header.getWord (i) * 2;
|
||
|
ZString zs = new ZString (buffer, j, header);
|
||
|
list.add (zs);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public String getAbbreviation (int abbreviationNumber)
|
||
|
{
|
||
|
if (list == null)
|
||
|
populate ();
|
||
|
return list.get (abbreviationNumber).value;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getText ()
|
||
|
{
|
||
|
if (list == null)
|
||
|
populate ();
|
||
|
|
||
|
StringBuilder text = new StringBuilder ();
|
||
|
|
||
|
// text.append (String.format ("Data address....%04X %d%n", dataPtr, dataPtr));
|
||
|
// text.append (String.format ("Data size.......%04X %d%n", dataSize, dataSize));
|
||
|
// text.append (String.format ("Table address...%04X %d%n", tablePtr, tablePtr));
|
||
|
// text.append (String.format ("Table size......%04X %d (%d words)%n%n", tableSize, tableSize,
|
||
|
// (tableSize / 2)));
|
||
|
|
||
|
int count = 0;
|
||
|
for (ZString word : list)
|
||
|
text.append (String.format ("%3d %s%n", count++, word.value));
|
||
|
if (list.size () > 0)
|
||
|
text.deleteCharAt (text.length () - 1);
|
||
|
|
||
|
return text.toString ();
|
||
|
}
|
||
|
}
|