1 //
2 // $Id: JUploadPanelImpl.java 205 2007-05-28 20:24:01 +0000 (lun., 28 mai 2007)
3 // felfert $
4 //
5 // jupload - A file upload applet.
6 // Copyright 2007 The JUpload Team
7 //
8 // Created: ?
9 // Creator: etienne_sf
10 // Last modified: $Date: 2007-05-28 20:24:01 +0000 (lun., 28 mai 2007) $
11 //
12 // This program is free software; you can redistribute it and/or modify it under
13 // the terms of the GNU General Public License as published by the Free Software
14 // Foundation; either version 2 of the License, or (at your option) any later
15 // version. This program is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18 // details. You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software Foundation, Inc.,
20 // 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 package wjhk.jupload2.gui;
23
24 import javax.swing.JFileChooser;
25
26 import wjhk.jupload2.policies.UploadPolicy;
27
28 /**
29 * This class allows easy personalization of the java file chooser. It asks the
30 * current upload policy for all current configuration parameters. It is created
31 * by the {@link JUploadPanel} instances.
32 */
33 @SuppressWarnings("serial")
34 public class JUploadFileChooser extends JFileChooser {
35
36 // /////////////////////////////////////////////////////////////////////////////////////////////////////
37 // /////////////////////////////// Attributes
38 // /////////////////////////////////////////////////////////////////////////////////////////////////////
39
40 /** The current upload policy */
41 private UploadPolicy uploadPolicy = null;
42
43 private JUploadFileFilter fileFilter = null;
44
45 /** This file view add picture management capabilities to the file chooser */
46 private JUploadFileView fileView = null;
47
48 // /////////////////////////////////////////////////////////////////////////////////////////////////////
49 // /////////////////////////////// Methods
50 // /////////////////////////////////////////////////////////////////////////////////////////////////////
51
52 /**
53 * The 'standard' constructor for our file chooser
54 *
55 * @param uploadPolicyParam
56 */
57 public JUploadFileChooser(UploadPolicy uploadPolicyParam) {
58 super(uploadPolicyParam.getCurrentBrowsingDirectory());
59
60 uploadPolicyParam.displayDebug(
61 "Starting JUploadFileChooser constructor", 80);
62 this.uploadPolicy = uploadPolicyParam;
63
64 this.fileFilter = new JUploadFileFilter(this.uploadPolicy);
65 this.fileView = new JUploadFileView(this.uploadPolicy, this);
66
67 // TODO This breaks usability. probably use a persistent value of a
68 // cookie later.
69 // this.fileChooser.setCurrentDirectory(new File(System
70 // .getProperty("user.dir")));
71 setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
72 setMultiSelectionEnabled(true);
73
74 // Hidden file should not be visible.
75 setFileHidingEnabled(true);
76
77 // The file view must be set, whether or not a file filter exists
78 // for this upload policy.
79 setFileView(this.fileView);
80 if (this.uploadPolicy.fileFilterGetDescription() != null) {
81 setFileFilter(this.fileFilter);
82 // If a file filter has been given to the applet, only these file
83 // should be allowed.
84 setAcceptAllFileFilterUsed(false);
85 }
86 }
87
88 /**
89 * Shutdown any running task. Currently, only the JUploadFileView may have
90 * running tasks, when calculating icon for picture files.
91 */
92 public void shutdownNow() {
93 this.fileView.shutdownNow();
94 }
95
96 /**
97 * This method is called when the file chooser is closed. We just shutdown
98 * any running job.
99 */
100 @Override
101 public void approveSelection() {
102 shutdownNow();
103 super.approveSelection();
104 }
105
106 }