mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2025-02-08 02:30:30 +00:00
Include folders in prodos sort
This commit is contained in:
parent
fb68f65a95
commit
0974aa1be7
@ -635,7 +635,6 @@ public class ApplesoftBasicProgram extends BasicProgram
|
||||
System.out.println (target);
|
||||
System.out.println (HexFormatter.format (buffer, startPtr, length - 1));
|
||||
System.out.println (e);
|
||||
// assert false;
|
||||
}
|
||||
}
|
||||
// else if (basicPreferences.alignAssign)
|
||||
@ -692,21 +691,6 @@ public class ApplesoftBasicProgram extends BasicProgram
|
||||
return false;
|
||||
}
|
||||
|
||||
// private boolean isToken (byte value)
|
||||
// {
|
||||
// return (value & 0x80) > 0;
|
||||
// }
|
||||
|
||||
// private boolean isControlCharacter (byte value)
|
||||
// {
|
||||
// return value < 32;
|
||||
// }
|
||||
|
||||
// private boolean isDigit (byte value)
|
||||
// {
|
||||
// return value >= 48 && value <= 57;
|
||||
// }
|
||||
|
||||
public int getAddress ()
|
||||
{
|
||||
return getLoadAddress () + startPtr;
|
||||
|
@ -181,12 +181,10 @@ public abstract class AbstractFormattedDisk implements FormattedDisk
|
||||
{
|
||||
this.originalPath = path;
|
||||
|
||||
DefaultMutableTreeNode root =
|
||||
(DefaultMutableTreeNode) catalogTree.getModel ().getRoot ();
|
||||
DefaultAppleFileSource afs =
|
||||
new DefaultAppleFileSource (getName (), disk.toString (), this);
|
||||
DefaultMutableTreeNode root = getCatalogTreeRoot ();
|
||||
if (root.getUserObject () == null)
|
||||
root.setUserObject (afs);
|
||||
root.setUserObject (
|
||||
new DefaultAppleFileSource (getName (), disk.toString (), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -405,8 +403,7 @@ public abstract class AbstractFormattedDisk implements FormattedDisk
|
||||
@Override
|
||||
public boolean stillAvailable (DiskAddress da)
|
||||
{
|
||||
return sectorTypes[da.getBlock ()] == usedSector
|
||||
|| sectorTypes[da.getBlock ()] == emptySector;
|
||||
return stillAvailable (da.getBlock ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -24,6 +24,7 @@ class AppleDiskTab extends AbstractTab
|
||||
{
|
||||
FormattedDisk disk;
|
||||
|
||||
// restoring from a file selection
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font, FileSelectedEvent event)
|
||||
{
|
||||
@ -32,6 +33,7 @@ class AppleDiskTab extends AbstractTab
|
||||
redoHandler.fileSelected (event);
|
||||
}
|
||||
|
||||
// restoring from a sector selection
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font, SectorSelectedEvent event)
|
||||
{
|
||||
@ -44,9 +46,9 @@ class AppleDiskTab extends AbstractTab
|
||||
// couldn't find the file entry. Either the file has been deleted, or it is a disk
|
||||
// with redefined files (Wizardry, Infocom etc).
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler navMan, Font font, String lastFileUsed)
|
||||
RedoHandler redoHandler, Font font, String lastFileUsed)
|
||||
{
|
||||
super (navMan, selector, font);
|
||||
super (redoHandler, selector, font);
|
||||
create (disk);
|
||||
// System.out.println ("ooh - couldn't find the previous file");
|
||||
DefaultMutableTreeNode node = findNode (lastFileUsed);
|
||||
@ -54,21 +56,21 @@ class AppleDiskTab extends AbstractTab
|
||||
{
|
||||
AppleFileSource afs = (AppleFileSource) node.getUserObject ();
|
||||
FileSelectedEvent event = new FileSelectedEvent (this, afs);
|
||||
navMan.fileSelected (event);
|
||||
redoHandler.fileSelected (event);
|
||||
}
|
||||
}
|
||||
|
||||
// User is selecting a new disk from the catalog
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler navMan, Font font)
|
||||
RedoHandler redoHandler, Font font)
|
||||
{
|
||||
super (navMan, selector, font);
|
||||
super (redoHandler, selector, font);
|
||||
create (disk);
|
||||
|
||||
AppleFileSource afs = (AppleFileSource) findNode (2).getUserObject (); // select Catalog
|
||||
if (afs == null)
|
||||
afs = (AppleFileSource) findNode (1).getUserObject (); // select Disk
|
||||
navMan.fileSelected (new FileSelectedEvent (this, afs));
|
||||
redoHandler.fileSelected (new FileSelectedEvent (this, afs));
|
||||
}
|
||||
|
||||
private void create (FormattedDisk disk)
|
||||
@ -125,13 +127,10 @@ class AppleDiskTab extends AbstractTab
|
||||
while (children.hasMoreElements ())
|
||||
{
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode) children.nextElement ();
|
||||
Object o = node.getUserObject ();
|
||||
if (o instanceof AppleFileSource)
|
||||
{
|
||||
AppleFileSource afs = (AppleFileSource) node.getUserObject ();
|
||||
if (nodeName.equals (afs.getUniqueName ()))
|
||||
return node;
|
||||
}
|
||||
Object userObject = node.getUserObject ();
|
||||
if (userObject instanceof AppleFileSource
|
||||
&& nodeName.equals (((AppleFileSource) userObject).getUniqueName ()))
|
||||
return node;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ class CatalogPanel extends JTabbedPane
|
||||
|
||||
private Font font;
|
||||
private FileSystemTab fileTab;
|
||||
private final List<AppleDiskTab> diskTabs = new ArrayList<AppleDiskTab> ();
|
||||
private final List<AppleDiskTab> diskTabs = new ArrayList<> ();
|
||||
private final DiskAndFileSelector selector = new DiskAndFileSelector ();
|
||||
private final RedoHandler redoHandler;
|
||||
private CloseTabAction closeTabAction;
|
||||
@ -61,9 +61,6 @@ class CatalogPanel extends JTabbedPane
|
||||
|
||||
setTabPlacement (SwingConstants.BOTTOM);
|
||||
setPreferredSize (new Dimension (360, 802)); // width, height
|
||||
|
||||
// createTabs (prefs);
|
||||
// addChangeListener (new TabChangeListener ());
|
||||
}
|
||||
|
||||
RootFolderData getRootFolderData ()
|
||||
@ -84,7 +81,6 @@ class CatalogPanel extends JTabbedPane
|
||||
|
||||
rootFolderData.setRootFolder (rootDirectoryFile);
|
||||
|
||||
// move to restore()
|
||||
String lastDiskUsed = prefs.get (prefsLastDiskUsed, "");
|
||||
int lastDosUsed = prefs.getInt (prefsLastDosUsed, -1);
|
||||
String lastFileUsed = prefs.get (prefsLastFileUsed, "");
|
||||
|
@ -2,8 +2,8 @@ package com.bytezone.diskbrowser.gui;
|
||||
|
||||
/***********************************************************************************************
|
||||
* Interface implemented by AbstractTab, and in turn FileSystemTab and AppleDiskTab.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
***********************************************************************************************/
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
@ -16,5 +16,3 @@ interface Tab
|
||||
|
||||
public DefaultMutableTreeNode getRootNode ();
|
||||
}
|
||||
|
||||
// public void addMouseListener (MouseAdapter ma)
|
@ -26,16 +26,16 @@ public class TreeBuilder
|
||||
private final FileComparator fileComparator = new FileComparator ();
|
||||
private final JTree tree;
|
||||
|
||||
public TreeBuilder (File folder)
|
||||
public TreeBuilder (File rootFolder)
|
||||
{
|
||||
assert (folder.exists ());
|
||||
assert (folder.isDirectory ());
|
||||
assert (rootFolder.exists ());
|
||||
assert (rootFolder.isDirectory ());
|
||||
|
||||
FileNode fileNode = new FileNode (folder);
|
||||
FileNode fileNode = new FileNode (rootFolder);
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode (fileNode);
|
||||
fileNode.setTreeNode (root);
|
||||
|
||||
addFiles (root, folder);
|
||||
addFiles (root, rootFolder);
|
||||
DefaultTreeModel treeModel = new DefaultTreeModel (root);
|
||||
tree = new JTree (treeModel);
|
||||
|
||||
@ -98,7 +98,7 @@ public class TreeBuilder
|
||||
/*
|
||||
* Class used to control the text displayed by the JTree.
|
||||
*/
|
||||
public class FileNode implements DataSource
|
||||
public class FileNode implements DataSource // why does it implement DataSource?
|
||||
{
|
||||
DefaultMutableTreeNode parentNode;
|
||||
public final File file;
|
||||
@ -185,8 +185,6 @@ public class TreeBuilder
|
||||
if (f.isHidden ())
|
||||
continue;
|
||||
String name = f.getName ();
|
||||
// if (name.startsWith ("."))
|
||||
// continue;
|
||||
|
||||
Date d = new Date (f.lastModified ());
|
||||
int pos = name.lastIndexOf ('.');
|
||||
|
@ -86,19 +86,20 @@ public class ProdosDisk extends AbstractFormattedDisk
|
||||
|
||||
if (ProdosDisk.prodosPreferences.sortDirectories)
|
||||
{
|
||||
sort (volumeNode);
|
||||
sortLeaves (volumeNode);
|
||||
sortFolders (volumeNode);
|
||||
((DefaultTreeModel) catalogTree.getModel ()).reload ();
|
||||
}
|
||||
}
|
||||
|
||||
public void sort (DefaultMutableTreeNode node)
|
||||
public void sortLeaves (DefaultMutableTreeNode node)
|
||||
{
|
||||
for (int base = 0; base < node.getChildCount (); base++)
|
||||
for (int i = 0; i < node.getChildCount (); i++)
|
||||
{
|
||||
DefaultMutableTreeNode baseNode = (DefaultMutableTreeNode) node.getChildAt (base);
|
||||
DefaultMutableTreeNode baseNode = (DefaultMutableTreeNode) node.getChildAt (i);
|
||||
if (!baseNode.isLeaf ())
|
||||
{
|
||||
sort (baseNode);
|
||||
sortLeaves (baseNode);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -107,7 +108,7 @@ public class ProdosDisk extends AbstractFormattedDisk
|
||||
String smallestName = childName;
|
||||
int smallestPos = -1;
|
||||
|
||||
for (int j = base + 1; j < node.getChildCount (); j++)
|
||||
for (int j = i + 1; j < node.getChildCount (); j++)
|
||||
{
|
||||
DefaultMutableTreeNode compareNode = (DefaultMutableTreeNode) node.getChildAt (j);
|
||||
if (!compareNode.isLeaf ())
|
||||
@ -125,7 +126,45 @@ public class ProdosDisk extends AbstractFormattedDisk
|
||||
if (smallestNode != null)
|
||||
{
|
||||
node.insert (baseNode, smallestPos);
|
||||
node.insert (smallestNode, base);
|
||||
node.insert (smallestNode, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sortFolders (DefaultMutableTreeNode node)
|
||||
{
|
||||
for (int i = 0; i < node.getChildCount (); i++)
|
||||
{
|
||||
DefaultMutableTreeNode baseNode = (DefaultMutableTreeNode) node.getChildAt (i);
|
||||
if (baseNode.isLeaf ())
|
||||
continue;
|
||||
|
||||
sortFolders (baseNode);
|
||||
|
||||
String childName = ((FileEntry) baseNode.getUserObject ()).name;
|
||||
DefaultMutableTreeNode smallestNode = null;
|
||||
String smallestName = childName;
|
||||
int smallestPos = -1;
|
||||
|
||||
for (int j = i + 1; j < node.getChildCount (); j++)
|
||||
{
|
||||
DefaultMutableTreeNode compareNode = (DefaultMutableTreeNode) node.getChildAt (j);
|
||||
if (compareNode.isLeaf ())
|
||||
continue;
|
||||
|
||||
String compareName = ((FileEntry) compareNode.getUserObject ()).name;
|
||||
if (smallestName.compareToIgnoreCase (compareName) > 0)
|
||||
{
|
||||
smallestNode = compareNode;
|
||||
smallestName = compareName;
|
||||
smallestPos = j;
|
||||
}
|
||||
}
|
||||
|
||||
if (smallestNode != null)
|
||||
{
|
||||
node.insert (baseNode, smallestPos);
|
||||
node.insert (smallestNode, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user