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

70 lines
2.2 KiB
Java
Raw Normal View History

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;
2016-12-13 22:26:47 +00:00
import com.bytezone.diskbrowser.duplicates.RootFolderData;
2015-06-01 09:35:51 +00:00
class RootDirectoryAction extends DefaultAction
{
2016-12-13 22:26:47 +00:00
private final RootFolderData rootFolderData;
2016-12-08 01:19:18 +00:00
private final List<RootDirectoryChangeListener> listeners =
new ArrayList<RootDirectoryAction.RootDirectoryChangeListener> ();
2015-06-01 09:35:51 +00:00
2016-12-13 22:26:47 +00:00
public RootDirectoryAction (RootFolderData rootFolderData)
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
2016-12-13 22:26:47 +00:00
this.rootFolderData = rootFolderData;
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);
2016-12-13 22:26:47 +00:00
if (rootFolderData.getRootFolder () != null)
chooser.setSelectedFile (rootFolderData.getRootFolder ());
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)
{
2016-12-13 22:26:47 +00:00
rootFolderData.setRootFolder (file);
2016-12-08 01:19:18 +00:00
for (RootDirectoryChangeListener listener : listeners)
2016-12-13 22:26:47 +00:00
listener.rootDirectoryChanged (rootFolderData);
2015-06-01 09:35:51 +00:00
}
}
}
2016-12-07 10:42:01 +00:00
2016-12-08 01:19:18 +00:00
public void addListener (RootDirectoryChangeListener listener)
2016-12-07 10:42:01 +00:00
{
if (!listeners.contains (listener))
listeners.add (listener);
}
2016-12-08 01:19:18 +00:00
interface RootDirectoryChangeListener
2016-12-07 10:42:01 +00:00
{
2016-12-13 22:26:47 +00:00
public void rootDirectoryChanged (RootFolderData rootFolderData);
2016-12-07 10:42:01 +00:00
}
2015-06-01 09:35:51 +00:00
}