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
|
|
|
import java.io.File;
|
2016-12-10 07:36:44 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-12-07 10:56:25 +00:00
|
|
|
import javax.swing.Action;
|
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-11 05:18:04 +00:00
|
|
|
import com.bytezone.diskbrowser.duplicates.DuplicateHandler;
|
2016-12-07 10:56:25 +00:00
|
|
|
import com.bytezone.diskbrowser.duplicates.DuplicateWindow;
|
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-10 07:36:44 +00:00
|
|
|
private File rootFolder;
|
|
|
|
private DuplicateWindow window;
|
|
|
|
private final List<DiskTableSelectionListener> listeners =
|
|
|
|
new ArrayList<DiskTableSelectionListener> ();
|
2015-06-01 09:35:51 +00:00
|
|
|
|
|
|
|
public DuplicateAction ()
|
|
|
|
{
|
|
|
|
super ("Check for duplicates...", "Check for duplicate disks",
|
2016-12-07 10:42:01 +00:00
|
|
|
"/com/bytezone/diskbrowser/icons/");
|
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 ();
|
|
|
|
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke (KeyEvent.VK_D, mask));
|
2016-12-08 01:19:18 +00:00
|
|
|
setEnabled (false);
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
|
2016-12-07 10:42:01 +00:00
|
|
|
@Override
|
2016-12-08 01:19:18 +00:00
|
|
|
public void rootDirectoryChanged (File rootFolder)
|
2015-06-01 09:35:51 +00:00
|
|
|
{
|
2016-12-08 01:19:18 +00:00
|
|
|
this.rootFolder = rootFolder;
|
|
|
|
setEnabled (rootFolder != null);
|
|
|
|
window = null;
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void actionPerformed (ActionEvent arg0)
|
|
|
|
{
|
2016-12-08 01:19:18 +00:00
|
|
|
if (window == null)
|
2016-12-09 11:31:03 +00:00
|
|
|
{
|
2016-12-10 07:36:44 +00:00
|
|
|
window = new DuplicateWindow (rootFolder, listeners);
|
2016-12-11 21:32:18 +00:00
|
|
|
new DuplicateHandler (rootFolder, window).execute ();
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
2016-12-08 01:19:18 +00:00
|
|
|
else
|
2015-06-01 09:35:51 +00:00
|
|
|
window.setVisible (true);
|
|
|
|
}
|
2016-12-10 07:36:44 +00:00
|
|
|
|
|
|
|
public void addTableSelectionListener (DiskTableSelectionListener listener)
|
|
|
|
{
|
|
|
|
if (!listeners.contains (listener))
|
|
|
|
listeners.add (listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
public interface DiskTableSelectionListener
|
|
|
|
{
|
|
|
|
public void diskSelected (DiskDetails diskDetails);
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|