View Javadoc
1   //
2   // $Id: FilePanel.java 1721 2015-03-29 17:48:44Z etienne_sf $
3   //
4   // jupload - A file upload applet.
5   // Copyright 2007 The JUpload Team
6   //
7   // Created: ?
8   // Creator: William JinHua Kwong
9   // Last modified: $Date: 2015-03-29 19:48:44 +0200 (dim., 29 mars 2015) $
10  //
11  // This program is free software; you can redistribute it and/or modify it under
12  // the terms of the GNU General Public License as published by the Free Software
13  // Foundation; either version 2 of the License, or (at your option) any later
14  // version. This program is distributed in the hope that it will be useful, but
15  // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17  // details. You should have received a copy of the GNU General Public License
18  // along with this program; if not, write to the Free Software Foundation, Inc.,
19  // 675 Mass Ave, Cambridge, MA 02139, USA.
20  package wjhk.jupload2.gui.filepanel;
21  
22  import java.awt.Color;
23  import java.awt.Component;
24  import java.awt.Font;
25  import java.awt.Point;
26  import java.io.File;
27  import java.util.List;
28  
29  import javax.swing.ActionMap;
30  import javax.swing.JComponent;
31  import javax.swing.TransferHandler;
32  
33  import wjhk.jupload2.filedata.DefaultFileData;
34  import wjhk.jupload2.filedata.FileData;
35  import wjhk.jupload2.gui.JUploadPanel;
36  import wjhk.jupload2.upload.UploadFilePacket;
37  
38  /**
39   * Defines the interface used in the applet, when dealing with the file panel.
40   */
41  public interface FilePanel {
42  
43      /** This enumeration lists the available display modes, for the file list. */
44      static public enum FileListViewMode {
45          /** The flat view is the 'historical' one. It displays a table containing all files to upload */
46          FLAT,
47          /**
48           * The map to File System mode, is when the hierarchy is a part of the local file system. The root of the
49           * hierarchy (visible root) is the common root to to all files and folder. It is actually a <B>hierarchical view
50           * of the FLAT view</B>, using the same data structure. Only the display changes.<BR/>
51           * For instance, if /tmp/f1/f2/file.txt and /tmp/f1/f11/file.txt have been added, /tmp/f1 is the common root. So
52           * this mode displays: f2 and f11 as the first visible hierarchy level. f2 contains file.txt, and f11 also
53           * contains a file.txt file.
54           * 
55           * @see DefaultFileData#getRoot(java.util.List)
56           */
57          TREE_VIEW,
58          /**
59           * In independent tree view mode, each added file/folder is added to the root. This root is the root that will
60           * be sent to the server, during the upload.<BR/>
61           * For instance, if /tmp/f1/f2/file.txt and /tmp/f1/f11/file.txt have been both added, then, two file.txt
62           * (coming from different folders, so they are actually different files with the same name) are attached to the
63           * hierarchical view.<BR/>
64           * If if /tmp/f1 is added, then: f1 is attached to the root. And the hierarchy will contain: f1, f2 as a
65           * subfolder of f1, file.txt as a file in f2.
66           */
67          INDEPENDENT_TREE_VIEW
68      };
69  
70      /**
71       * Set the view mode, for the file list.
72       * 
73       * @return The current view mode.
74       * @see #fileListViewMode
75       */
76      public FileListViewMode getFileListMode();
77  
78      /**
79       * Set the view mode, for the file list.
80       * 
81       * @param fileListViewMode The view mode to set.
82       * @see #fileListViewMode
83       */
84      public void setFileListViewMode(FileListViewMode fileListViewMode);
85  
86      /**
87       * Add multiple files to this panel.
88       * 
89       * @param f An array of files to add.
90       */
91      public void addFiles(File[] f);
92  
93      /**
94       * Retrieve all currently stored files.
95       * 
96       * @return an array of files, currently managed by this instance.
97       */
98      public List<FileData> getFiles();
99  
100     /**
101      * Retrieve the number of file entries in the JTable.
102      * 
103      * @return the current number of files, held by this instance.
104      */
105     public int getFilesLength();
106 
107     /**
108      * Removes all currently selected file entries.
109      */
110     public void removeSelected();
111 
112     /**
113      * Removes all file entries.
114      */
115     public void removeAll();
116 
117     /**
118      * Remove an array of files, typically an {@link UploadFilePacket}.
119      * 
120      * @param fileData The files to remove.
121      */
122     public void remove(FileData[] files);
123 
124     /**
125      * Remove a specified file entry.
126      * 
127      * @param fileData The file to be removed.
128      */
129     public void remove(FileData fileData);
130 
131     /**
132      * Clears the current selection of the JTable.
133      */
134     public void clearSelection();
135 
136     /**
137      * Requests focus for the JTable.
138      */
139     public void focusTable();
140 
141     /**
142      * Ask for the file contained below the specific point on the screen.
143      * 
144      * @param point The point
145      * @return The return instance of File.
146      */
147     public FileData getFileDataAt(Point point);
148 
149     /**
150      * Return the component on which drop event can occur. Used by {@link JUploadPanel}, when initializing the
151      * DropTarget.
152      * 
153      * @return The drop component target
154      */
155     public Component getDropComponent();
156 
157     /**
158      * Transfer handler, to manage copy/paste operations.
159      * 
160      * @param newHandler
161      * @see JComponent#setTransferHandler(TransferHandler)
162      */
163     public void setTransferHandler(TransferHandler newHandler);
164 
165     /**
166      * Allows to get standard action map, like paste action.
167      * 
168      * @return Get the current actionMap
169      * @see JComponent#getActionMap()
170      */
171     public ActionMap getActionMap();
172 
173     /**
174      * Set color of files list grid border.
175      * 
176      * @param color awt Color
177      */
178     public void setGridBorderColor(Color color);
179 
180     /**
181      * Set back color of table header
182      * 
183      * @param color awt Color
184      */
185     public void setTableHeaderBackColor(Color color);
186 
187     /**
188      * Set text color of table header
189      * 
190      * @param color awt Color
191      */
192     public void setTableHeaderTextColor(Color color);
193 
194     /**
195      * Set table header text font
196      * 
197      * @param color awt Color
198      */
199     public void setTableHeaderFont(Font font);
200 
201     /**
202      * Removes all files, which have the uploadFlag set to false.
203      * 
204      * @see FileData#getUploadFlag()
205      */
206     public void removeFileNotToUpload();
207 
208     /** Removes empty folders in the TreeView hierarchy. This methods also calls the {@link #reload()} method */
209     public void cleanHierarchy();
210 
211     /** Force the reloading of the file structure, and the refreshing of the display */
212     public void reload();
213 }