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 }