1 //
2 // $Id: JUploadPanelImpl.java 303 2007-07-21 07:42:51 +0000 (sam., 21 juil.
3 // 2007)
4 // etienne_sf $
5 //
6 // jupload - A file upload applet.
7 // Copyright 2007 The JUpload Team
8 //
9 // Created: ?
10 // Creator: William JinHua Kwong
11 // Last modified: $Date: 2010-02-09 11:32:18 +0100 (mar., 09 févr. 2010) $
12 //
13 // This program is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free Software
15 // Foundation; either version 2 of the License, or (at your option) any later
16 // version. This program is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
19 // details. You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software Foundation, Inc.,
21 // 675 Mass Ave, Cambridge, MA 02139, USA.
22
23 package wjhk.jupload2.gui;
24
25 import java.awt.event.ActionListener;
26 import java.awt.event.MouseEvent;
27 import java.awt.event.MouseListener;
28
29 import javax.swing.JButton;
30 import javax.swing.JComponent;
31 import javax.swing.JLabel;
32 import javax.swing.JPanel;
33 import javax.swing.JProgressBar;
34 import javax.swing.JScrollPane;
35 import javax.swing.TransferHandler;
36
37 import wjhk.jupload2.gui.filepanel.FilePanel;
38 import wjhk.jupload2.upload.FileUploadManagerThread;
39
40 /**
41 * Interface for the central object of the JUpload GUI. It creates and contains
42 * all GUI items: creation of necessary elements, and calls to
43 * {@link wjhk.jupload2.policies.UploadPolicy} methods to allow easy
44 * personalization.
45 *
46 * @author etienne_sf
47 *
48 */
49 public interface JUploadPanel {
50
51 /**
52 * This methods show or hides the logWindow, depending on the following
53 * applet parameters. The following conditions must be met, to hide the log
54 * window: <DIR> <LI>showLogWindow (must be False) <LI>debugLevel (must be 0
55 * or less) </DIR>
56 */
57 public void showOrHideLogWindow();
58
59 /**
60 * Reaction to a click on the browse button.
61 */
62 public void doBrowse();
63
64 /**
65 * Reaction to a click on the remove button. This method actually removes
66 * the selected files in the file list.
67 */
68 public void doRemove();
69
70 /**
71 * Reaction to a click on the removeAll button. This method actually removes
72 * all the files in the file list.
73 */
74 public void doRemoveAll();
75
76 /**
77 * Reaction to a click on the upload button. This method can be called from
78 * outside to start the upload.
79 */
80 public void doStartUpload();
81
82 /**
83 * Reaction to a click on the stop button. This stops the running on upload.
84 * This method can be called from outside to start the upload.
85 */
86 public void doStopUpload();
87
88 /**
89 * Select or unselect the applet buttons
90 */
91 public void updateButtonState();
92
93 /** Clear the current log window content. */
94 public void clearLogWindow();
95
96 /**
97 * Copy the log window content into the clipboard. Allows easy access to the
98 * debug output.
99 *
100 */
101 public void copyLogWindow();
102
103 /**
104 * @return the actionListener, that'll manage the button interaction.
105 */
106 public ActionListener getActionListener();
107
108 /**
109 * @return the browseButton
110 */
111 public JButton getBrowseButton();
112
113 /**
114 * Returns the awt container, that contains all the objects of the GUI.
115 *
116 * @return The Container.
117 */
118 public JComponent getJComponent();
119
120 /**
121 * @return the dndListener
122 */
123 public DnDListener getDndListener();
124
125 /**
126 * @return the filePanel
127 */
128 public FilePanel getFilePanel();
129
130 /**
131 * The component that contains the log window. It is used to display the
132 * content of the log window, with the relevant scroll bars.
133 *
134 * @return the jLogWindowPane
135 */
136 public JScrollPane getJLogWindowPane();
137
138 /**
139 * The component that manages the mouse.
140 *
141 * @return the MouseListener
142 */
143 public MouseListener getMouseListener();
144
145 /**
146 * @return the preparationProgressBar
147 */
148 public JProgressBar getPreparationProgressBar();
149
150 /**
151 * @return the uploadProgressBar
152 */
153 public JProgressBar getUploadProgressBar();
154
155 /**
156 * @return the removeAllButton
157 */
158 public JButton getRemoveAllButton();
159
160 /**
161 * @return the removeButton
162 */
163 public JButton getRemoveButton();
164
165 /**
166 * @return the statusLabel
167 */
168 public JLabel getStatusLabel();
169
170 /**
171 * @return the stopButton
172 */
173 public JButton getStopButton();
174
175 /**
176 * @see JPanel#getTransferHandler()
177 *
178 * @return The TransfertHandler
179 */
180 public TransferHandler getTransferHandler();
181
182 /**
183 * @return the uploadButton
184 */
185 public JButton getUploadButton();
186
187 /**
188 * This method opens the popup menu, if the mouseEvent is relevant. In this
189 * case it returns true. Otherwise, it does nothing and returns false.
190 *
191 * @param mouseEvent The triggered mouse event.
192 * @return true if the popup menu was opened, false otherwise.
193 */
194 public boolean maybeOpenPopupMenu(MouseEvent mouseEvent);
195
196 /**
197 * Standard setter for filePanel.
198 *
199 * @param filePanel
200 */
201 public void setFilePanel(FilePanel filePanel);
202
203 /**
204 * @return the fileUploadManagerThread
205 */
206 public FileUploadManagerThread getFileUploadManagerThread();
207
208 }