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 }