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.awt.event.InputEvent;
24  import java.awt.event.KeyEvent;
25  import java.io.File;
26  import javax.swing.AbstractAction;
27  import javax.swing.Action;
28  import javax.swing.KeyStroke;
29  import org.xnap.XNap;
30  import org.xnap.action.AbstractXNapAction;
31  import org.xnap.gui.FileProvider;
32  import org.xnap.gui.util.IconHelper;
33  
34  /***
35   * Plays the files provided by {@link FileProvider} using the
36   * {@link ActionHelper}.
37   *
38   * @todo for a large number of files like a whole directory the gui freezes
39   * noticeably.
40   */
41  public class PlayFileAction extends AbstractAction 
42  {
43      
44      
45      
46      
47      
48      private FileProvider fp;
49  
50      
51  
52      public PlayFileAction(FileProvider fp) 
53      {
54  		this.fp = fp;
55  	
56  		putValue(Action.NAME, XNap.tr("Play"));
57  		putValue(Action.SHORT_DESCRIPTION, 
58  				 XNap.tr("Play selected files."));
59  		putValue(IconHelper.XNAP_ICON, "1rightarrow.png");
60  		putValue(AbstractXNapAction.DEFAULT_KEYSTROKE,
61  				 KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK));
62  		putValue(Action.ACTION_COMMAND_KEY, "playFileAction");
63      }
64  
65      
66  
67      /***
68       * Collects the files and plays them using {@link ActionHelper}.
69       *
70       * Only the first file is actually played the following files are
71       * enqueued.
72       */
73      public void actionPerformed(ActionEvent event)
74      {
75  		final File[] files = fp.getFiles();
76  		
77  		if (files != null) {
78  			ActionHelper.enqueueFiles(files, true);
79  		}
80      }
81  }