2015-06-01 09:35:51 +00:00
|
|
|
package com.bytezone.diskbrowser.gui;
|
|
|
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.KeyEvent;
|
|
|
|
import java.io.File;
|
2016-12-07 10:42:01 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
|
|
|
import javax.swing.Action;
|
|
|
|
import javax.swing.JFileChooser;
|
|
|
|
import javax.swing.KeyStroke;
|
|
|
|
|
|
|
|
import com.bytezone.common.DefaultAction;
|
|
|
|
import com.bytezone.common.Platform;
|
|
|
|
|
|
|
|
class RootDirectoryAction extends DefaultAction
|
|
|
|
{
|
2016-12-07 10:42:01 +00:00
|
|
|
private File rootDirectory;
|
|
|
|
private final List<RootDirectoryListener> listeners =
|
|
|
|
new ArrayList<RootDirectoryAction.RootDirectoryListener> ();
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-12-07 10:42:01 +00:00
|
|
|
public RootDirectoryAction (File rootDirectory)
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
|
|
|
super ("Set HOME folder...", "Defines root folder where the disk images are kept",
|
2016-12-07 10:42:01 +00:00
|
|
|
"/com/bytezone/diskbrowser/icons/");
|
2015-06-01 09:35:51 +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");
|
2016-12-07 10:42:01 +00:00
|
|
|
|
|
|
|
this.rootDirectory = rootDirectory;
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void actionPerformed (ActionEvent e)
|
|
|
|
{
|
|
|
|
JFileChooser chooser = new JFileChooser (Platform.userHome);
|
|
|
|
chooser.setDialogTitle ("Select FOLDER containing disk images");
|
|
|
|
chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY);
|
|
|
|
if (rootDirectory != null)
|
|
|
|
chooser.setSelectedFile (rootDirectory);
|
2016-12-07 10:42:01 +00:00
|
|
|
|
2015-06-01 09:35:51 +00:00
|
|
|
int result = chooser.showDialog (null, "Accept");
|
|
|
|
if (result == JFileChooser.APPROVE_OPTION)
|
|
|
|
{
|
|
|
|
File file = chooser.getSelectedFile ();
|
|
|
|
if (!file.isDirectory ())
|
|
|
|
file = file.getParentFile ();
|
|
|
|
if (file != null)
|
|
|
|
{
|
|
|
|
rootDirectory = file;
|
2016-12-07 10:42:01 +00:00
|
|
|
for (RootDirectoryListener listener : listeners)
|
|
|
|
listener.rootDirectoryChanged (file);
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-12-07 10:42:01 +00:00
|
|
|
|
|
|
|
public void addListener (RootDirectoryListener listener)
|
|
|
|
{
|
|
|
|
if (!listeners.contains (listener))
|
|
|
|
listeners.add (listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
interface RootDirectoryListener
|
|
|
|
{
|
|
|
|
public void rootDirectoryChanged (File newRootDirectory);
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|