1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.gui.action;
21
22 import java.awt.event.ActionEvent;
23 import java.io.File;
24
25 import javax.swing.AbstractAction;
26 import javax.swing.Action;
27
28 import org.xnap.XNap;
29 import org.xnap.gui.Dialogs;
30 import org.xnap.gui.DirectoryProvider;
31 import org.xnap.gui.util.IconHelper;
32
33 /***
34 * Provides a clipboard like paste action for objects that implement the
35 * <code>DirectoryProvider</code> interface.
36 *
37 * @see FileActionManager
38 */
39 public class PasteFileAction extends AbstractAction {
40
41
42
43
44
45 private DirectoryProvider dp;
46
47
48
49 public PasteFileAction(DirectoryProvider dp)
50 {
51 this.dp = dp;
52
53 putValue(Action.NAME, XNap.tr("Paste"));
54 putValue(Action.SHORT_DESCRIPTION, XNap.tr("Paste selected files."));
55 putValue(IconHelper.XNAP_ICON, "editpaste.png");
56
57 FileActionManager.addPasteListener(this);
58 }
59
60
61
62 public void actionPerformed(ActionEvent event)
63 {
64 File target = dp.getDirectory();
65 File[] files = FileActionManager.getFiles();
66
67 if (target != null && files != null) {
68 boolean success = false;
69 if (FileActionManager.getAction()
70 == FileActionManager.ACTION_COPY) {
71 success = Dialogs.copy(files, target);
72 }
73 else if (FileActionManager.getAction()
74 == FileActionManager.ACTION_MOVE) {
75 success = Dialogs.move(files, target);
76 }
77
78 if (success) {
79 FileActionManager.unsetFiles();
80 }
81 dp.hasChanged(target);
82 }
83
84 }
85
86 }