2015-06-01 09:35:51 +00:00
|
|
|
package com.bytezone.diskbrowser.gui;
|
|
|
|
|
2016-12-09 11:31:03 +00:00
|
|
|
import java.awt.Toolkit;
|
2015-06-01 09:35:51 +00:00
|
|
|
import java.awt.event.ActionEvent;
|
2016-12-09 11:31:03 +00:00
|
|
|
import java.awt.event.KeyEvent;
|
2019-10-24 03:13:01 +00:00
|
|
|
import java.io.File;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-12-07 10:56:25 +00:00
|
|
|
import javax.swing.Action;
|
2016-12-12 07:43:19 +00:00
|
|
|
import javax.swing.JOptionPane;
|
2016-12-09 11:31:03 +00:00
|
|
|
import javax.swing.KeyStroke;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
|
|
|
import com.bytezone.common.DefaultAction;
|
2016-12-10 07:36:44 +00:00
|
|
|
import com.bytezone.diskbrowser.duplicates.DiskDetails;
|
2016-12-12 23:46:09 +00:00
|
|
|
import com.bytezone.diskbrowser.duplicates.RootFolderData;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// -----------------------------------------------------------------------------------//
|
2016-12-08 01:19:18 +00:00
|
|
|
public class DuplicateAction extends DefaultAction implements RootDirectoryChangeListener
|
2020-02-08 22:20:08 +00:00
|
|
|
// -----------------------------------------------------------------------------------//
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
2016-12-12 23:46:09 +00:00
|
|
|
RootFolderData rootFolderData;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-12 23:46:09 +00:00
|
|
|
public DuplicateAction (RootFolderData rootFolderData)
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
2016-12-12 07:43:19 +00:00
|
|
|
super ("List disks...", "Display a sortable list of disks",
|
2016-12-07 10:42:01 +00:00
|
|
|
"/com/bytezone/diskbrowser/icons/");
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-12-12 23:46:09 +00:00
|
|
|
this.rootFolderData = rootFolderData;
|
|
|
|
|
2015-06-01 09:35:51 +00:00
|
|
|
setIcon (Action.SMALL_ICON, "save_delete_16.png");
|
|
|
|
setIcon (Action.LARGE_ICON_KEY, "save_delete_32.png");
|
2019-10-24 03:13:01 +00:00
|
|
|
int mask = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMaskEx ();
|
2016-12-12 07:43:19 +00:00
|
|
|
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke (KeyEvent.VK_L, mask));
|
2016-12-13 10:03:15 +00:00
|
|
|
setEnabled (rootFolderData.getRootFolder () != null);
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-07 10:42:01 +00:00
|
|
|
@Override
|
2019-10-26 00:53:28 +00:00
|
|
|
public void rootDirectoryChanged (File oldRootFolder, File newRootFolder)
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
2019-10-26 00:53:28 +00:00
|
|
|
assert rootFolderData.getRootFolder () == newRootFolder;
|
2016-12-13 22:26:47 +00:00
|
|
|
setEnabled (rootFolderData.getRootFolder () != null);
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2015-06-01 09:35:51 +00:00
|
|
|
@Override
|
|
|
|
public void actionPerformed (ActionEvent arg0)
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
2016-12-15 00:01:42 +00:00
|
|
|
if (rootFolderData.disksWindow == null)
|
2016-12-09 11:31:03 +00:00
|
|
|
{
|
2016-12-12 07:43:19 +00:00
|
|
|
Object[] options = { "Generate checksums", "Disk names only", "Cancel" };
|
2016-12-12 08:31:58 +00:00
|
|
|
int option = JOptionPane.showOptionDialog (null,
|
2016-12-12 07:43:19 +00:00
|
|
|
"This command will list all of the disks in the root folder (including\n"
|
|
|
|
+ "nested folders). If you wish to generate a checksum for each disk, it\n"
|
2016-12-12 08:31:58 +00:00
|
|
|
+ "may slow the process down considerably.\n\n"
|
2016-12-12 07:43:19 +00:00
|
|
|
+ "Do you wish to generate checksums?",
|
|
|
|
"Generate Disk Listing", JOptionPane.YES_NO_CANCEL_OPTION,
|
2016-12-12 08:31:58 +00:00
|
|
|
JOptionPane.QUESTION_MESSAGE, null, options, options[1]); // just disk names
|
|
|
|
if (option < 2)
|
2016-12-15 00:01:42 +00:00
|
|
|
rootFolderData.count (option == 0);
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
2016-12-08 01:19:18 +00:00
|
|
|
else
|
2016-12-15 00:01:42 +00:00
|
|
|
rootFolderData.disksWindow.setVisible (true);
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
2016-12-10 07:36:44 +00:00
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-10 07:36:44 +00:00
|
|
|
public void addTableSelectionListener (DiskTableSelectionListener listener)
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-10 07:36:44 +00:00
|
|
|
{
|
2016-12-12 23:46:09 +00:00
|
|
|
if (!rootFolderData.listeners.contains (listener))
|
|
|
|
rootFolderData.listeners.add (listener);
|
2016-12-10 07:36:44 +00:00
|
|
|
}
|
|
|
|
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-10 07:36:44 +00:00
|
|
|
public interface DiskTableSelectionListener
|
2020-02-08 22:20:08 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2016-12-10 07:36:44 +00:00
|
|
|
{
|
|
|
|
public void diskSelected (DiskDetails diskDetails);
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|