View Javadoc
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 }