mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-06-13 06:29:31 +00:00
fix restore root folder
This commit is contained in:
parent
d7d99da8f8
commit
c567c8bb1c
|
@ -307,9 +307,9 @@ public class RootFolderData implements RootDirectoryChangeListener
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rootDirectoryChanged (File rootFolder)
|
public void rootDirectoryChanged (File oldRootFolder, File newRootFolder)
|
||||||
{
|
{
|
||||||
this.rootFolder = rootFolder;
|
rootFolder = newRootFolder;
|
||||||
rootFolderNameLength = rootFolder.getAbsolutePath ().length ();
|
rootFolderNameLength = rootFolder.getAbsolutePath ().length ();
|
||||||
disksWindow = null; // force a recount
|
disksWindow = null; // force a recount
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ class CatalogPanel extends JTabbedPane
|
||||||
private final RedoHandler redoHandler;
|
private final RedoHandler redoHandler;
|
||||||
private CloseTabAction closeTabAction;
|
private CloseTabAction closeTabAction;
|
||||||
private File rootFolder;
|
private File rootFolder;
|
||||||
|
private boolean restored = false;
|
||||||
|
|
||||||
public CatalogPanel (RedoHandler redoHandler)
|
public CatalogPanel (RedoHandler redoHandler)
|
||||||
{
|
{
|
||||||
|
@ -60,86 +61,19 @@ class CatalogPanel extends JTabbedPane
|
||||||
setPreferredSize (new Dimension (360, 802)); // width, height
|
setPreferredSize (new Dimension (360, 802)); // width, height
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createTabs (Preferences prefs)
|
|
||||||
{
|
|
||||||
String lastDiskUsed = prefs.get (prefsLastDiskUsed, "");
|
|
||||||
int lastDosUsed = prefs.getInt (prefsLastDosUsed, -1);
|
|
||||||
String lastFileUsed = prefs.get (prefsLastFileUsed, "");
|
|
||||||
String lastSectorsUsed = prefs.get (prefsLastSectorsUsed, "");
|
|
||||||
|
|
||||||
if (false)
|
|
||||||
{
|
|
||||||
System.out.println ("Last disk : " + lastDiskUsed);
|
|
||||||
System.out.println ("Last dos : " + lastDosUsed);
|
|
||||||
System.out.println ("Last file : " + lastFileUsed);
|
|
||||||
System.out.println ("Last sectors : " + lastSectorsUsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
DiskSelectedEvent diskEvent = null;
|
|
||||||
if (!lastDiskUsed.isEmpty ())
|
|
||||||
{
|
|
||||||
diskEvent = DiskSelectedEvent.create (this, lastDiskUsed);
|
|
||||||
if (diskEvent != null)
|
|
||||||
{
|
|
||||||
FormattedDisk fd = diskEvent.getFormattedDisk ();
|
|
||||||
if (lastDosUsed >= 0 && fd instanceof DualDosDisk)
|
|
||||||
((DualDosDisk) fd).setCurrentDiskNo (lastDosUsed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
System.out.println ("no disk selected");
|
|
||||||
|
|
||||||
insertFileSystemTab (diskEvent);
|
|
||||||
|
|
||||||
if (diskEvent != null)
|
|
||||||
{
|
|
||||||
AppleDiskTab tab = null;
|
|
||||||
FormattedDisk fd = diskEvent.getFormattedDisk ();
|
|
||||||
|
|
||||||
if (!lastFileUsed.isEmpty ())
|
|
||||||
{
|
|
||||||
AppleFileSource afs = fd.getFile (lastFileUsed);
|
|
||||||
if (afs != null)
|
|
||||||
{
|
|
||||||
FileSelectedEvent fileEvent = FileSelectedEvent.create (this, afs);
|
|
||||||
tab = new AppleDiskTab (fd, selector, redoHandler, font, fileEvent);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tab = new AppleDiskTab (fd, selector, redoHandler, font, lastFileUsed);
|
|
||||||
}
|
|
||||||
else if (!lastSectorsUsed.isEmpty ())
|
|
||||||
{
|
|
||||||
SectorSelectedEvent sectorEvent =
|
|
||||||
SectorSelectedEvent.create (this, fd, lastSectorsUsed);
|
|
||||||
tab = new AppleDiskTab (fd, selector, redoHandler, font, sectorEvent);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tab = new AppleDiskTab (fd, selector, redoHandler, font);
|
|
||||||
|
|
||||||
if (tab != null)
|
|
||||||
{
|
|
||||||
diskTabs.add (tab);
|
|
||||||
add (tab, "D" + diskTabs.size ());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
System.out.println ("No disk tab created");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rootDirectoryChanged (File rootFolder)
|
public void rootDirectoryChanged (File oldRootFolder, File newRootFolder)
|
||||||
{
|
{
|
||||||
this.rootFolder = rootFolder;
|
rootFolder = newRootFolder;
|
||||||
if (fileTab == null) // still restoring last session
|
if (!restored)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// is the user replacing an existing root folder?
|
// is the user replacing an existing root folder?
|
||||||
if (fileTab != null)
|
if (fileTab != null)
|
||||||
{
|
|
||||||
removeTabAt (0);
|
removeTabAt (0);
|
||||||
insertFileSystemTab (null);
|
|
||||||
setSelectedIndex (0);
|
insertFileSystemTab (null);
|
||||||
}
|
setSelectedIndex (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertFileSystemTab (DiskSelectedEvent diskEvent)
|
private void insertFileSystemTab (DiskSelectedEvent diskEvent)
|
||||||
|
@ -286,8 +220,71 @@ class CatalogPanel extends JTabbedPane
|
||||||
@Override
|
@Override
|
||||||
public void restore (Preferences prefs)
|
public void restore (Preferences prefs)
|
||||||
{
|
{
|
||||||
createTabs (prefs);
|
String lastDiskUsed = prefs.get (prefsLastDiskUsed, "");
|
||||||
|
int lastDosUsed = prefs.getInt (prefsLastDosUsed, -1);
|
||||||
|
String lastFileUsed = prefs.get (prefsLastFileUsed, "");
|
||||||
|
String lastSectorsUsed = prefs.get (prefsLastSectorsUsed, "");
|
||||||
|
|
||||||
|
if (false)
|
||||||
|
{
|
||||||
|
System.out.println ("Last disk : " + lastDiskUsed);
|
||||||
|
System.out.println ("Last dos : " + lastDosUsed);
|
||||||
|
System.out.println ("Last file : " + lastFileUsed);
|
||||||
|
System.out.println ("Last sectors : " + lastSectorsUsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
DiskSelectedEvent diskEvent = null;
|
||||||
|
if (!lastDiskUsed.isEmpty ())
|
||||||
|
{
|
||||||
|
diskEvent = DiskSelectedEvent.create (this, lastDiskUsed);
|
||||||
|
if (diskEvent != null)
|
||||||
|
{
|
||||||
|
FormattedDisk fd = diskEvent.getFormattedDisk ();
|
||||||
|
if (lastDosUsed >= 0 && fd instanceof DualDosDisk)
|
||||||
|
((DualDosDisk) fd).setCurrentDiskNo (lastDosUsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
System.out.println ("no disk selected");
|
||||||
|
|
||||||
|
if (rootFolder != null)
|
||||||
|
insertFileSystemTab (diskEvent);
|
||||||
|
|
||||||
|
if (diskEvent != null)
|
||||||
|
{
|
||||||
|
AppleDiskTab tab = null;
|
||||||
|
FormattedDisk fd = diskEvent.getFormattedDisk ();
|
||||||
|
|
||||||
|
if (!lastFileUsed.isEmpty ())
|
||||||
|
{
|
||||||
|
AppleFileSource afs = fd.getFile (lastFileUsed);
|
||||||
|
if (afs != null)
|
||||||
|
{
|
||||||
|
FileSelectedEvent fileEvent = FileSelectedEvent.create (this, afs);
|
||||||
|
tab = new AppleDiskTab (fd, selector, redoHandler, font, fileEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tab = new AppleDiskTab (fd, selector, redoHandler, font, lastFileUsed);
|
||||||
|
}
|
||||||
|
else if (!lastSectorsUsed.isEmpty ())
|
||||||
|
{
|
||||||
|
SectorSelectedEvent sectorEvent =
|
||||||
|
SectorSelectedEvent.create (this, fd, lastSectorsUsed);
|
||||||
|
tab = new AppleDiskTab (fd, selector, redoHandler, font, sectorEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tab = new AppleDiskTab (fd, selector, redoHandler, font);
|
||||||
|
|
||||||
|
if (tab != null)
|
||||||
|
{
|
||||||
|
diskTabs.add (tab);
|
||||||
|
add (tab, "D" + diskTabs.size ());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
System.out.println ("No disk tab created");
|
||||||
|
}
|
||||||
addChangeListener (new TabChangeListener ());
|
addChangeListener (new TabChangeListener ());
|
||||||
|
restored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pass through to DiskSelector
|
// Pass through to DiskSelector
|
||||||
|
|
|
@ -32,9 +32,9 @@ public class DuplicateAction extends DefaultAction implements RootDirectoryChang
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rootDirectoryChanged (File rootFolder)
|
public void rootDirectoryChanged (File oldRootFolder, File newRootFolder)
|
||||||
{
|
{
|
||||||
assert rootFolderData.getRootFolder () == rootFolder;
|
assert rootFolderData.getRootFolder () == newRootFolder;
|
||||||
setEnabled (rootFolderData.getRootFolder () != null);
|
setEnabled (rootFolderData.getRootFolder () != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ class FileSystemTab extends AbstractTab
|
||||||
{
|
{
|
||||||
File rootFolder;
|
File rootFolder;
|
||||||
|
|
||||||
public FileSystemTab (File folder, DiskAndFileSelector selector, RedoHandler redoHandler,
|
public FileSystemTab (File folder, DiskAndFileSelector selector,
|
||||||
Font font, DiskSelectedEvent diskEvent)
|
RedoHandler redoHandler, Font font, DiskSelectedEvent diskEvent)
|
||||||
{
|
{
|
||||||
super (redoHandler, selector, font);
|
super (redoHandler, selector, font);
|
||||||
this.rootFolder = folder;
|
this.rootFolder = folder;
|
||||||
|
|
|
@ -70,6 +70,7 @@ public class RootDirectoryAction extends DefaultAction implements QuitListener
|
||||||
String rootDirectory = prefs.get (prefsRootDirectory, "");
|
String rootDirectory = prefs.get (prefsRootDirectory, "");
|
||||||
|
|
||||||
File rootDirectoryFile = new File (rootDirectory);
|
File rootDirectoryFile = new File (rootDirectory);
|
||||||
|
|
||||||
if (!rootDirectoryFile.exists () || !rootDirectoryFile.isDirectory ())
|
if (!rootDirectoryFile.exists () || !rootDirectoryFile.isDirectory ())
|
||||||
{
|
{
|
||||||
System.out.println ("No root directory");
|
System.out.println ("No root directory");
|
||||||
|
@ -78,10 +79,11 @@ public class RootDirectoryAction extends DefaultAction implements QuitListener
|
||||||
notifyListeners (rootDirectoryFile);
|
notifyListeners (rootDirectoryFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifyListeners (File rootDirectoryFile)
|
private void notifyListeners (File newRootFolder)
|
||||||
{
|
{
|
||||||
rootFolder = rootDirectoryFile;
|
File oldRootFolder = rootFolder;
|
||||||
|
rootFolder = newRootFolder;
|
||||||
for (RootDirectoryChangeListener listener : listeners)
|
for (RootDirectoryChangeListener listener : listeners)
|
||||||
listener.rootDirectoryChanged (rootFolder);
|
listener.rootDirectoryChanged (oldRootFolder, newRootFolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,5 +4,5 @@ import java.io.File;
|
||||||
|
|
||||||
public interface RootDirectoryChangeListener
|
public interface RootDirectoryChangeListener
|
||||||
{
|
{
|
||||||
public void rootDirectoryChanged (File rootFolder);
|
public void rootDirectoryChanged (File oldRootFolder, File newRootFolder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ public class WizardryScenarioDisk extends PascalDisk
|
||||||
@Override
|
@Override
|
||||||
public AppleFileSource getFile (String fileName)
|
public AppleFileSource getFile (String fileName)
|
||||||
{
|
{
|
||||||
System.out.println ("Wizardry disk looking for : " + fileName);
|
// System.out.println ("Wizardry disk looking for : " + fileName);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user