From 628d115171a4c0e64872c21c1fee8167c0864914 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Sun, 23 Dec 2018 12:15:51 +1100 Subject: [PATCH] Dual DOS and CPM --- src/com/bytezone/diskbrowser/cpm/CPMDisk.java | 21 +++++++++++++++---- .../disk/AbstractFormattedDisk.java | 3 --- .../diskbrowser/disk/DiskFactory.java | 7 ++++--- .../diskbrowser/disk/DualDosDisk.java | 4 ++-- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/com/bytezone/diskbrowser/cpm/CPMDisk.java b/src/com/bytezone/diskbrowser/cpm/CPMDisk.java index c9ca0fe..1cf553c 100644 --- a/src/com/bytezone/diskbrowser/cpm/CPMDisk.java +++ b/src/com/bytezone/diskbrowser/cpm/CPMDisk.java @@ -25,6 +25,7 @@ public class CPMDisk extends AbstractFormattedDisk private int version; // http://www.seasip.info/Cpm/format22.html // // http://www.seasip.info/Cpm/format31.html + private final DefaultMutableTreeNode volumeNode; public CPMDisk (Disk disk) { @@ -54,7 +55,9 @@ public class CPMDisk extends AbstractFormattedDisk } } - DefaultMutableTreeNode root = getCatalogTreeRoot (); + DefaultMutableTreeNode rootNode = getCatalogTreeRoot (); + volumeNode = new DefaultMutableTreeNode (); + rootNode.add (volumeNode); for (int sector = 0; sector < 8; sector++) { @@ -91,7 +94,7 @@ public class CPMDisk extends AbstractFormattedDisk { fileEntries.add (entry); DefaultMutableTreeNode node = new DefaultMutableTreeNode (entry); - root.add (node); + volumeNode.add (node); node.setAllowsChildren (false); } else @@ -99,8 +102,11 @@ public class CPMDisk extends AbstractFormattedDisk } } - root.setUserObject (getCatalog ()); // override the disk's default display - makeNodeVisible (root.getFirstLeaf ()); + // root.setUserObject (getCatalog ()); // override the disk's default display + // makeNodeVisible (rootNode.getFirstLeaf ()); + + volumeNode.setUserObject (getCatalog ()); + makeNodeVisible (volumeNode.getFirstLeaf ()); } private SectorType getSectorType (String type) @@ -228,4 +234,11 @@ public class CPMDisk extends AbstractFormattedDisk return false; return true; } + + @Override + public String toString () + { + StringBuffer text = new StringBuffer ("CPM disk"); + return text.toString (); + } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/disk/AbstractFormattedDisk.java b/src/com/bytezone/diskbrowser/disk/AbstractFormattedDisk.java index d685bef..eaf5a64 100755 --- a/src/com/bytezone/diskbrowser/disk/AbstractFormattedDisk.java +++ b/src/com/bytezone/diskbrowser/disk/AbstractFormattedDisk.java @@ -226,9 +226,6 @@ public abstract class AbstractFormattedDisk implements FormattedDisk return null; } - /* - * Catalog Tree routines - */ @Override public JTree getCatalogTree () { diff --git a/src/com/bytezone/diskbrowser/disk/DiskFactory.java b/src/com/bytezone/diskbrowser/disk/DiskFactory.java index 1cf66c1..5d2d0c9 100755 --- a/src/com/bytezone/diskbrowser/disk/DiskFactory.java +++ b/src/com/bytezone/diskbrowser/disk/DiskFactory.java @@ -416,9 +416,10 @@ public class DiskFactory if (disk2 != null) disk = new DualDosDisk (disk, disk2); - // disk2 = checkCPMDisk (appleDisk256); - // if (disk2 != null) - // disk = new DualDosDisk (disk, disk2); + AppleDisk appleDisk = new AppleDisk (file, 35, 16); + disk2 = checkCPMDisk (appleDisk); + if (disk2 != null) + disk = new DualDosDisk (disk, disk2); } } else if (suffix.equals ("po")) diff --git a/src/com/bytezone/diskbrowser/disk/DualDosDisk.java b/src/com/bytezone/diskbrowser/disk/DualDosDisk.java index 0428c1e..c8b1fd6 100755 --- a/src/com/bytezone/diskbrowser/disk/DualDosDisk.java +++ b/src/com/bytezone/diskbrowser/disk/DualDosDisk.java @@ -23,8 +23,8 @@ public class DualDosDisk implements FormattedDisk public DualDosDisk (FormattedDisk disk0, FormattedDisk disk1) { String diskName = disk0.getDisk ().getFile ().getName (); - String text = "This disk contains both DOS and Prodos files\n\n" + disk0.getDisk () - + "\n" + disk1.getDisk (); + String text = "This disk contains both DOS and another OS\n\n" + disk0.getDisk () + + "\n\n" + disk1.getDisk (); DefaultAppleFileSource dafs = new DefaultAppleFileSource (diskName, text, this); DefaultMutableTreeNode root = new DefaultMutableTreeNode (dafs);