dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/AbstractFile.java

145 lines
4.7 KiB
Java
Raw Permalink Normal View History

2020-05-16 07:45:58 +00:00
package com.bytezone.diskbrowser.applefile;
import java.awt.image.BufferedImage;
import javax.swing.JComponent;
import javax.swing.JPanel;
import com.bytezone.diskbrowser.gui.DataSource;
import com.bytezone.diskbrowser.prodos.ResourceFork;
2020-05-16 07:45:58 +00:00
import com.bytezone.diskbrowser.utilities.HexFormatter;
// -----------------------------------------------------------------------------------//
public abstract class AbstractFile implements DataSource
// -----------------------------------------------------------------------------------//
{
2020-12-20 01:34:42 +00:00
static boolean showDebugText;
2020-12-19 08:40:59 +00:00
2022-02-07 05:28:22 +00:00
protected String name;
2020-05-16 07:45:58 +00:00
public byte[] buffer;
2021-07-21 11:17:43 +00:00
AssemblerProgram assembler;
2020-05-16 07:45:58 +00:00
protected BufferedImage image;
2021-07-21 11:17:43 +00:00
int loadAddress;
ResourceFork resourceFork;
2020-05-16 07:45:58 +00:00
// ---------------------------------------------------------------------------------//
public AbstractFile (String name, byte[] buffer)
// ---------------------------------------------------------------------------------//
{
this.name = name;
this.buffer = buffer;
}
// ---------------------------------------------------------------------------------//
public void setName (String name)
// ---------------------------------------------------------------------------------//
{
this.name = name; // Infocom ZObject uses this - but it sucks
}
2020-05-16 07:45:58 +00:00
// ---------------------------------------------------------------------------------//
@Override
public String getText () // Override this to get a tailored text representation
// ---------------------------------------------------------------------------------//
{
2021-07-21 11:17:43 +00:00
StringBuilder text = new StringBuilder ();
text.append ("Name : " + name + "\n\nNo text description");
2021-07-22 09:40:52 +00:00
2021-07-21 11:17:43 +00:00
if (resourceFork != null)
{
2021-07-22 09:40:52 +00:00
text.append ("\n\nResource Fork:\n\n");
2021-07-21 11:17:43 +00:00
text.append (resourceFork);
}
return text.toString ();
2020-05-16 07:45:58 +00:00
}
// ---------------------------------------------------------------------------------//
@Override
public byte[] getBuffer ()
// ---------------------------------------------------------------------------------//
{
return buffer;
}
2020-12-19 08:40:59 +00:00
// ---------------------------------------------------------------------------------//
public static void setDefaultDebug (boolean value)
// ---------------------------------------------------------------------------------//
{
2020-12-20 01:34:42 +00:00
showDebugText = value;
2020-12-19 08:40:59 +00:00
}
// ---------------------------------------------------------------------------------//
public void setResourceFork (ResourceFork resourceFork)
// ---------------------------------------------------------------------------------//
{
this.resourceFork = resourceFork;
}
2020-12-19 08:40:59 +00:00
// ---------------------------------------------------------------------------------//
public static void setDebug (boolean value)
// ---------------------------------------------------------------------------------//
{
2020-12-20 01:34:42 +00:00
showDebugText = value;
2020-12-19 08:40:59 +00:00
}
2020-05-16 07:45:58 +00:00
// ---------------------------------------------------------------------------------//
public String getName ()
// ---------------------------------------------------------------------------------//
{
return name;
}
// ---------------------------------------------------------------------------------//
@Override
public String getAssembler ()
// ---------------------------------------------------------------------------------//
{
if (buffer == null)
return "No buffer";
if (assembler == null)
this.assembler = new AssemblerProgram (name, buffer, loadAddress);
return assembler.getText ();
}
// ---------------------------------------------------------------------------------//
@Override
public String getHexDump ()
// ---------------------------------------------------------------------------------//
{
if (buffer == null || buffer.length == 0)
return "No buffer";
if (buffer.length <= 999999)
return HexFormatter.format (buffer, 0, buffer.length);
System.out.println ("**** truncating hex dump");
return HexFormatter.format (buffer, 0, 999999);
}
// ---------------------------------------------------------------------------------//
@Override
public BufferedImage getImage ()
// ---------------------------------------------------------------------------------//
{
return image;
}
2020-05-19 08:22:10 +00:00
// ---------------------------------------------------------------------------------//
String getHeader ()
// ---------------------------------------------------------------------------------//
{
return "Name : " + name + "\n\n";
}
2020-05-16 07:45:58 +00:00
// ---------------------------------------------------------------------------------//
@Override
public JComponent getComponent ()
// ---------------------------------------------------------------------------------//
{
2021-04-27 11:26:09 +00:00
return new JPanel ();
2020-05-16 07:45:58 +00:00
}
2015-06-01 09:35:51 +00:00
}