dmolony-DiskBrowser/src/com/bytezone/diskbrowser/gui/RootDirectoryAction.java

91 lines
3.3 KiB
Java
Raw Permalink Normal View History

2020-02-08 22:20:08 +00:00
package com.bytezone.diskbrowser.gui;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.prefs.Preferences;
import javax.swing.Action;
import javax.swing.JFileChooser;
import javax.swing.KeyStroke;
2020-06-26 04:39:05 +00:00
import com.bytezone.diskbrowser.utilities.DefaultAction;
2020-02-08 22:20:08 +00:00
// -----------------------------------------------------------------------------------//
class RootDirectoryAction extends DefaultAction implements QuitListener
// -----------------------------------------------------------------------------------//
{
private static final String prefsRootDirectory = "Root directory";
2021-06-06 06:27:30 +00:00
2020-02-08 22:20:08 +00:00
private File rootFolder;
// ---------------------------------------------------------------------------------//
RootDirectoryAction ()
// ---------------------------------------------------------------------------------//
{
super ("Set HOME folder...", "Defines root folder where the disk images are kept",
"/com/bytezone/diskbrowser/icons/");
2021-06-06 06:27:30 +00:00
2020-02-08 22:20:08 +00:00
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt H"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_H);
setIcon (Action.SMALL_ICON, "folder_explore_16.png");
setIcon (Action.LARGE_ICON_KEY, "folder_explore_32.png");
}
// ---------------------------------------------------------------------------------//
@Override
public void actionPerformed (ActionEvent e)
// ---------------------------------------------------------------------------------//
{
2020-06-26 04:39:05 +00:00
JFileChooser chooser = new JFileChooser (System.getProperty ("user.home"));
2020-02-08 22:20:08 +00:00
chooser.setDialogTitle ("Select FOLDER containing disk images");
chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY);
if (rootFolder != null)
chooser.setSelectedFile (rootFolder);
int result = chooser.showDialog (null, "Accept");
if (result == JFileChooser.APPROVE_OPTION)
{
File rootDirectoryFile = chooser.getSelectedFile ();
if (!rootDirectoryFile.isDirectory ())
rootDirectoryFile = rootDirectoryFile.getParentFile ();
if (rootDirectoryFile != null)
notifyListeners (rootDirectoryFile);
}
}
// ---------------------------------------------------------------------------------//
@Override
public void quit (Preferences prefs)
// ---------------------------------------------------------------------------------//
{
prefs.put (prefsRootDirectory,
rootFolder == null ? "" : rootFolder.getAbsolutePath ());
}
// ---------------------------------------------------------------------------------//
@Override
public void restore (Preferences prefs)
// ---------------------------------------------------------------------------------//
{
2021-06-06 06:27:30 +00:00
File rootDirectoryFile = new File (prefs.get (prefsRootDirectory, ""));
2020-02-08 22:20:08 +00:00
if (!rootDirectoryFile.exists () || !rootDirectoryFile.isDirectory ())
{
System.out.println ("No root directory");
return;
}
notifyListeners (rootDirectoryFile);
}
// ---------------------------------------------------------------------------------//
private void notifyListeners (File newRootFolder)
// ---------------------------------------------------------------------------------//
{
File oldRootFolder = rootFolder;
rootFolder = newRootFolder;
2021-06-06 06:27:30 +00:00
firePropertyChange ("RootDirectory", oldRootFolder, newRootFolder);
2020-02-08 22:20:08 +00:00
}
2015-06-01 09:35:51 +00:00
}