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

77 lines
2.8 KiB
Java
Raw Normal View History

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;
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 08:31:58 +00:00
import com.bytezone.diskbrowser.duplicates.DuplicateSwingWorker;
2016-12-13 22:26:47 +00:00
import com.bytezone.diskbrowser.duplicates.DisksWindow;
2016-12-12 23:46:09 +00:00
import com.bytezone.diskbrowser.duplicates.RootFolderData;
2016-12-08 01:19:18 +00:00
import com.bytezone.diskbrowser.gui.RootDirectoryAction.RootDirectoryChangeListener;
2015-06-01 09:35:51 +00:00
2016-12-08 01:19:18 +00:00
public class DuplicateAction extends DefaultAction implements RootDirectoryChangeListener
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
2016-12-12 23:46:09 +00:00
public DuplicateAction (RootFolderData rootFolderData)
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");
2016-12-09 11:31:03 +00:00
int mask = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask ();
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
}
2016-12-07 10:42:01 +00:00
@Override
2016-12-13 22:26:47 +00:00
public void rootDirectoryChanged (RootFolderData rootFolderData)
2015-06-01 09:35:51 +00:00
{
2016-12-13 22:26:47 +00:00
assert rootFolderData == this.rootFolderData;
setEnabled (rootFolderData.getRootFolder () != null);
2015-06-01 09:35:51 +00:00
}
@Override
public void actionPerformed (ActionEvent arg0)
{
2016-12-13 22:26:47 +00:00
if (rootFolderData.windowDisks == 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-12 07:43:19 +00:00
{
2016-12-12 23:46:09 +00:00
rootFolderData.doChecksums = option == 0;
2016-12-13 22:26:47 +00:00
rootFolderData.windowDisks = new DisksWindow (rootFolderData);
2016-12-12 23:46:09 +00:00
new DuplicateSwingWorker (rootFolderData).execute ();
2016-12-12 07:43:19 +00:00
}
2016-12-09 11:31:03 +00:00
}
2016-12-08 01:19:18 +00:00
else
2016-12-13 22:26:47 +00:00
rootFolderData.windowDisks.setVisible (true);
2015-06-01 09:35:51 +00:00
}
2016-12-10 07:36:44 +00:00
public void addTableSelectionListener (DiskTableSelectionListener listener)
{
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
}
public interface DiskTableSelectionListener
{
public void diskSelected (DiskDetails diskDetails);
}
2015-06-01 09:35:51 +00:00
}