1 | // |
---|
2 | // $Id: PictureDialog.java 298 2007-07-12 10:17:32 +0000 (jeu., 12 juil. 2007) |
---|
3 | // etienne_sf $ |
---|
4 | // |
---|
5 | // jupload - A file upload applet. |
---|
6 | // Copyright 2007 The JUpload Team |
---|
7 | // |
---|
8 | // Created: 2006-07-10 |
---|
9 | // Creator: etienne_sf |
---|
10 | // Last modified: $Date: 2010-01-08 20:21:44 -0200 (Sex, 08 Jan 2010) $ |
---|
11 | // |
---|
12 | // This program is free software; you can redistribute it and/or modify it under |
---|
13 | // the terms of the GNU General Public License as published by the Free Software |
---|
14 | // Foundation; either version 2 of the License, or (at your option) any later |
---|
15 | // version. This program is distributed in the hope that it will be useful, but |
---|
16 | // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
---|
17 | // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
---|
18 | // details. You should have received a copy of the GNU General Public License |
---|
19 | // along with this program; if not, write to the Free Software Foundation, Inc., |
---|
20 | // 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
21 | |
---|
22 | package wjhk.jupload2.gui.image; |
---|
23 | |
---|
24 | import java.awt.BorderLayout; |
---|
25 | import java.awt.Cursor; |
---|
26 | import java.awt.Dimension; |
---|
27 | import java.awt.Frame; |
---|
28 | import java.awt.Toolkit; |
---|
29 | import java.awt.event.ActionEvent; |
---|
30 | import java.awt.event.ActionListener; |
---|
31 | import java.awt.event.ComponentEvent; |
---|
32 | import java.awt.event.ComponentListener; |
---|
33 | |
---|
34 | import javax.swing.JButton; |
---|
35 | import javax.swing.JDialog; |
---|
36 | |
---|
37 | import wjhk.jupload2.filedata.PictureFileData; |
---|
38 | import wjhk.jupload2.policies.UploadPolicy; |
---|
39 | |
---|
40 | /** |
---|
41 | * A maximized modal dialog box, that display the selected picture. |
---|
42 | * |
---|
43 | * @author etienne_sf |
---|
44 | */ |
---|
45 | public class PictureDialog extends JDialog implements ActionListener, |
---|
46 | ComponentListener { |
---|
47 | |
---|
48 | /** A generated serialVersionUID, to avoid warning during compilation */ |
---|
49 | private static final long serialVersionUID = 7802205907550854333L; |
---|
50 | |
---|
51 | JButton buttonClose; |
---|
52 | |
---|
53 | PictureFileData pictureFileData = null; |
---|
54 | |
---|
55 | PicturePanel picturePanel = null; |
---|
56 | |
---|
57 | UploadPolicy uploadPolicy = null; |
---|
58 | |
---|
59 | /** |
---|
60 | * Creates a new instance. |
---|
61 | * |
---|
62 | * @param owner The parent frame. |
---|
63 | * @param pictureFileData The picture to manage. |
---|
64 | * @param uploadPolicy The upload policy which applies. |
---|
65 | */ |
---|
66 | public PictureDialog(Frame owner, PictureFileData pictureFileData, |
---|
67 | UploadPolicy uploadPolicy) { |
---|
68 | super(owner, pictureFileData.getFileName(), true); |
---|
69 | |
---|
70 | this.uploadPolicy = uploadPolicy; |
---|
71 | this.pictureFileData = pictureFileData; |
---|
72 | |
---|
73 | // This will be a long operation. The cursor will set back to normal in |
---|
74 | // componentShown, see below |
---|
75 | setCursor(new Cursor(Cursor.WAIT_CURSOR)); |
---|
76 | |
---|
77 | // Creation of the image area |
---|
78 | this.picturePanel = new DialogPicturePanel(this, uploadPolicy, |
---|
79 | pictureFileData); |
---|
80 | |
---|
81 | // Creation of the buttonClose button. |
---|
82 | this.buttonClose = new JButton(uploadPolicy |
---|
83 | .getLocalizedString("buttonClose")); |
---|
84 | this.buttonClose.setMaximumSize(new Dimension(100, 100)); |
---|
85 | this.buttonClose.addActionListener(this); |
---|
86 | |
---|
87 | getContentPane().add(this.buttonClose, BorderLayout.SOUTH); |
---|
88 | getContentPane().add(this.picturePanel); |
---|
89 | |
---|
90 | pack(); |
---|
91 | // Correction given by |
---|
92 | // setSize(getMaximumSize()); generate very high number under MAC OSX -> |
---|
93 | // Applet Crash |
---|
94 | Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
---|
95 | setBounds(0, 0, screenSize.width, screenSize.height); |
---|
96 | |
---|
97 | // The dialog is modal: the next line will return when the DialogPicture |
---|
98 | // is hidden (to be closed, in our case) |
---|
99 | // But we want to know when it will becom visible, to clear the wait |
---|
100 | // cursor. |
---|
101 | addComponentListener(this); |
---|
102 | setVisible(true); |
---|
103 | |
---|
104 | // MEMORY LEAK CORRECTION : |
---|
105 | |
---|
106 | // Let's free some memory. |
---|
107 | // This is necessary, as the finalize method is not called (if anyone |
---|
108 | // has an explanation...). |
---|
109 | // So, I have to manually free the memory consummed to display the |
---|
110 | // image, here. |
---|
111 | this.picturePanel.setPictureFile(null, null, null); |
---|
112 | } |
---|
113 | |
---|
114 | /** |
---|
115 | * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) |
---|
116 | */ |
---|
117 | public void actionPerformed(ActionEvent event) { |
---|
118 | if (event.getActionCommand() == this.buttonClose.getActionCommand()) { |
---|
119 | this.uploadPolicy.displayDebug( |
---|
120 | "[PictureDialog] Before this.dispose()", 10); |
---|
121 | this.dispose(); |
---|
122 | } |
---|
123 | } |
---|
124 | |
---|
125 | /** {@inheritDoc} */ |
---|
126 | public void componentHidden(ComponentEvent arg0) { |
---|
127 | // No action |
---|
128 | } |
---|
129 | |
---|
130 | /** {@inheritDoc} */ |
---|
131 | public void componentMoved(ComponentEvent arg0) { |
---|
132 | // No action |
---|
133 | } |
---|
134 | |
---|
135 | /** {@inheritDoc} */ |
---|
136 | public void componentResized(ComponentEvent arg0) { |
---|
137 | // No action |
---|
138 | } |
---|
139 | |
---|
140 | /** {@inheritDoc} */ |
---|
141 | public void componentShown(ComponentEvent arg0) { |
---|
142 | // We set the cursor back to normal |
---|
143 | setCursor(new Cursor(Cursor.HAND_CURSOR)); |
---|
144 | } |
---|
145 | |
---|
146 | } |
---|