source: 3thparty/jupload/src/main/java/wjhk/jupload2/JUploadApplet.java @ 3951

Revision 3951, 6.6 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1709 - Adicao de codigo fonte java do componente jupload

Line 
1//
2// $Id: JUploadApplet.java 1376 2010-07-28 21:47:39Z 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: 2010-07-28 18:47:39 -0300 (Qua, 28 Jul 2010) $
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
21package wjhk.jupload2;
22
23import java.lang.reflect.InvocationTargetException;
24
25import javax.swing.JApplet;
26import javax.swing.JOptionPane;
27import javax.swing.SwingUtilities;
28
29import wjhk.jupload2.context.JUploadContext;
30import wjhk.jupload2.context.JUploadContextApplet;
31import wjhk.jupload2.context.JavascriptHandler;
32import wjhk.jupload2.exception.JUploadException;
33import wjhk.jupload2.policies.UploadPolicy;
34
35/**
36 * The applet. It contains quite only the call to creation of the
37 * {@link JUploadContextApplet}, which contains the technical context. This
38 * context is responsible for loading the relevant {@link UploadPolicy}. <BR>
39 * <BR>
40 * The behavior of the applet can easily be adapted, by : <DIR> <LI>Using an
41 * existing {@link wjhk.jupload2.policies.UploadPolicy}, and specifying
42 * parameters. <LI>Creating a new upload policy, based on the
43 * {@link wjhk.jupload2.policies.DefaultUploadPolicy}, or created from scratch.
44 * <BR>
45 * For all details on this point, please read the <a
46 * href="../../../howto-customization.html">howto-customization.html</a> page.
47 *
48 * @author William JinHua Kwong (largely updated by etienne_sf)
49 * @version $Revision: 1376 $
50 */
51public class JUploadApplet extends JApplet {
52
53        /** A generated serialVersionUID, to avoid warning during compilation */
54        private static final long serialVersionUID = -3207851532114846776L;
55
56        /**
57         * The current execution context.
58         */
59        transient JUploadContext juploadContext = null;
60
61        /**
62         * Called each time the applet is shown on the web page.
63         */
64        @Override
65        public void init() {
66                class JUploadAppletInitializer implements Runnable {
67                        JUploadApplet applet;
68
69                        JUploadAppletInitializer(JUploadApplet applet) {
70                                this.applet = applet;
71                        }
72
73                        public void run() {
74                                juploadContext = new JUploadContextApplet(applet);
75                        }
76                }
77
78                try {
79                        SwingUtilities.invokeAndWait(new JUploadAppletInitializer(this));
80                } catch (InterruptedException e) {
81                        // Hum, if we get here, there may be no logging system built ..
82                        // Let's output something in the Java consoles
83                        e.printStackTrace();
84                } catch (InvocationTargetException e) {
85                        // Hum, if we get here, there may be no logging system built ..
86                        // Let's output something in the Java consoles
87                        e.printStackTrace();
88                }
89
90                if (this.juploadContext == null) {
91                        JOptionPane
92                                        .showMessageDialog(
93                                                        null,
94                                                        "An error occured during applet initialization. Please check the java console output",
95                                                        "Alert", JOptionPane.ERROR_MESSAGE);
96                } else {
97                        // Let's refresh the display, and have the caret well placed.
98                        try {
99                                this.juploadContext.getUploadPolicy().displayInfo(
100                                                "JUploadApplet is now initialized.");
101                        } catch (JUploadException e) {
102                                // Can't use standard JUpload log mode...
103                                System.out.println("JUploadApplet is now initialized.");
104                        }
105                }
106        }
107
108        /**
109         * Called each time the applet is shown on the web page.
110         */
111        @Override
112        public void start() {
113                if (this.juploadContext == null) {
114                        String msg = "An error occured during applet initialization. Please check the java console output (juploadContext is null in applet.start())";
115                        JOptionPane.showMessageDialog(null, msg, "Alert",
116                                        JOptionPane.ERROR_MESSAGE);
117                        throw new java.lang.IllegalStateException(msg);
118                } else {
119                        try {
120                                this.juploadContext.getUploadPolicy().start();
121                                this.juploadContext.getUploadPolicy().displayInfo(
122                                                "JUploadApplet is now started.");
123                        } catch (JUploadException e) {
124                                // Can't use standard JUpload log mode...
125                                System.out.println("JUploadApplet is now started.");
126                        }
127                        this.validate();
128                }
129        }
130
131        /**
132         * @see java.applet.Applet#stop()
133         */
134        @Override
135        public void stop() {
136                try {
137                        this.juploadContext.getUploadPolicy().displayInfo(
138                                        "JUploadApplet is now stopped.");
139                } catch (JUploadException e) {
140                        // Can't use standard JUpload log mode...
141                        System.out.println("JUploadApplet is now stopped.");
142                }
143        }
144
145        /**
146         * @see java.applet.Applet#destroy()
147         */
148        @Override
149        public void destroy() {
150                class JUploadAppletDestroyer implements Runnable {
151                        JUploadApplet applet;
152
153                        JUploadAppletDestroyer(JUploadApplet applet) {
154                                this.applet = applet;
155                        }
156
157                        public void run() {
158                                applet.juploadContext.runUnload();
159                                applet.getContentPane().removeAll();
160                        }
161                }
162                try {
163                        this.juploadContext.getUploadPolicy().displayInfo(
164                                        "JUploadApplet is being destroyed.");
165                } catch (JUploadException e1) {
166                        // Can't use standard JUpload log mode...
167                        System.out.println("JUploadApplet is now destroyed.");
168                }
169
170                // Execute a job on the event-dispatching thread:
171                // destroying this applet's GUI.
172                try {
173                        SwingUtilities.invokeAndWait(new JUploadAppletDestroyer(this));
174                } catch (Exception e) {
175                }
176        }
177
178        /**
179         * This allow runtime modifications of properties, from javascript.
180         * Currently, this can only be used after full initialization. This method
181         * only calls the UploadPolicy.setProperty method. <BR>
182         * Ex: document.jupload.setProperty(prop, value);
183         *
184         * @param prop
185         *            The property name that must be set.
186         * @param value
187         *            The value of this property.
188         * @see JUploadContext#setProperty(String, String)
189         */
190        public void setProperty(String prop, String value) {
191                this.juploadContext.setProperty(prop, value);
192        }
193
194        /**
195         * Javascript can call this method to start the upload.
196         *
197         * @return Returns the upload result. See the constants defined in the
198         *         {@link JavascriptHandler} javadoc.
199         */
200        public String startUpload() {
201                return this.juploadContext.startUpload();
202        }
203
204        /**
205         * @see java.applet.Applet#getParameterInfo()
206         */
207        public String[][] getParameterInfo() {
208                // FIXME Implement Applet.getParameterInfo()
209                return null;
210        }
211
212        /**
213         * @see java.applet.Applet#getAppletInfo()
214         */
215        public String getAppletInfo() {
216                return "JUpload applet, available at http://jupload.sourceforge.net";
217        }
218
219}
Note: See TracBrowser for help on using the repository browser.