root / trunk / libraries / libUIComponent / src / org / gvsig / gui / beans / progresspanel / ProgressPanel.java @ 17543
History | View | Annotate | Download (7.93 KB)
1 | 10948 | nacho | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
|
||
4 | *
|
||
5 | * This program is free software; you can redistribute it and/or
|
||
6 | * modify it under the terms of the GNU General Public License
|
||
7 | * as published by the Free Software Foundation; either version 2
|
||
8 | * of the License, or (at your option) any later version.
|
||
9 | *
|
||
10 | * This program is distributed in the hope that it will be useful,
|
||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
13 | * GNU General Public License for more details.
|
||
14 | *
|
||
15 | * You should have received a copy of the GNU General Public License
|
||
16 | * along with this program; if not, write to the Free Software
|
||
17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
18 | */
|
||
19 | package org.gvsig.gui.beans.progresspanel; |
||
20 | |||
21 | import java.awt.Dimension; |
||
22 | import java.awt.FlowLayout; |
||
23 | import java.awt.Toolkit; |
||
24 | |||
25 | import javax.swing.JFrame; |
||
26 | import javax.swing.JLabel; |
||
27 | import javax.swing.JPanel; |
||
28 | import javax.swing.JProgressBar; |
||
29 | import javax.swing.JScrollPane; |
||
30 | import javax.swing.JTextPane; |
||
31 | |||
32 | import org.gvsig.gui.beans.buttonspanel.ButtonsPanel; |
||
33 | 11042 | bsanchez | import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent; |
34 | import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener; |
||
35 | import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel; |
||
36 | 11198 | bsanchez | import org.gvsig.gui.beans.messages.Messages; |
37 | 10948 | nacho | /**
|
38 | * <code>ProgressPanel</code>. Muestra una ventana de di?logo para representar
|
||
39 | * una barra de progreso con su ventana de registro.
|
||
40 | *
|
||
41 | * @version 20/03/2007
|
||
42 | 12368 | bsanchez | * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
|
43 | 10948 | nacho | */
|
44 | public class ProgressPanel extends JFrame { |
||
45 | private static final long serialVersionUID = -6930857769971064429L; |
||
46 | private JPanel jPanel = null; |
||
47 | private JLabel jLabel = null; |
||
48 | private JLabel jLabel1 = null; |
||
49 | private JPanel jPanel1 = null; |
||
50 | private JPanel njp = null; |
||
51 | 11042 | bsanchez | private DefaultButtonsPanel defaultButtonsPanel = null; |
52 | 10948 | nacho | private JProgressBar jProgressBar = null; |
53 | private JScrollPane jScrollPane = null; |
||
54 | private JTextPane jTextPane = null; |
||
55 | private LogControl text = new LogControl(); |
||
56 | 11198 | bsanchez | private long startTime = System.currentTimeMillis(); |
57 | 12107 | bsanchez | |
58 | 11068 | bsanchez | private boolean showPause = true; |
59 | 10948 | nacho | |
60 | /**
|
||
61 | * Constructor
|
||
62 | */
|
||
63 | public ProgressPanel() {
|
||
64 | initialize(); |
||
65 | } |
||
66 | |||
67 | 11068 | bsanchez | public ProgressPanel(boolean showPause) { |
68 | this.showPause = showPause;
|
||
69 | initialize(); |
||
70 | } |
||
71 | |||
72 | 10948 | nacho | /**
|
73 | * This method initializes this
|
||
74 | 12368 | bsanchez | *
|
75 | 10948 | nacho | */
|
76 | private void initialize() { |
||
77 | njp = new JPanel(); |
||
78 | njp.setLayout(new java.awt.BorderLayout(5, 5)); |
||
79 | 11114 | bsanchez | njp.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 15, 5, 15)); |
80 | 10948 | nacho | this.setContentPane(njp);
|
81 | this.setResizable(false); |
||
82 | njp.add(getJPanel(), java.awt.BorderLayout.NORTH); |
||
83 | njp.add(getJPanel1(), java.awt.BorderLayout.CENTER); |
||
84 | njp.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH); |
||
85 | showLog(false);
|
||
86 | setPercent(0);
|
||
87 | Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); |
||
88 | this.setLocation(
|
||
89 | (int) (d.getWidth() - this.getWidth()) >> 1, |
||
90 | (int) (d.getHeight() - this.getHeight()) >> 1); |
||
91 | 12107 | bsanchez | this.setVisible(true); |
92 | 10948 | nacho | } |
93 | |||
94 | /**
|
||
95 | 12368 | bsanchez | * This method initializes jPanel
|
96 | *
|
||
97 | * @return javax.swing.JPanel
|
||
98 | 10948 | nacho | */
|
99 | private JPanel getJPanel() { |
||
100 | if (jPanel == null) { |
||
101 | jLabel1 = new JLabel(); |
||
102 | jLabel = new JLabel(); |
||
103 | 12438 | bsanchez | jLabel.setText(Messages.getText("espere") + "..."); |
104 | 10948 | nacho | jPanel = new JPanel(); |
105 | jPanel.setLayout(new java.awt.BorderLayout(5, 5)); |
||
106 | jPanel.add(jLabel, java.awt.BorderLayout.WEST); |
||
107 | jPanel.add(jLabel1, java.awt.BorderLayout.EAST); |
||
108 | } |
||
109 | return jPanel;
|
||
110 | } |
||
111 | |||
112 | /**
|
||
113 | 12368 | bsanchez | * This method initializes jPanel1
|
114 | *
|
||
115 | * @return javax.swing.JPanel
|
||
116 | 10948 | nacho | */
|
117 | private JPanel getJPanel1() { |
||
118 | if (jPanel1 == null) { |
||
119 | jPanel1 = new JPanel(); |
||
120 | jPanel1.setLayout(new java.awt.BorderLayout(5, 5)); |
||
121 | jPanel1.add(getJProgressBar(), java.awt.BorderLayout.NORTH); |
||
122 | jPanel1.add(getJScrollPane(), java.awt.BorderLayout.CENTER); |
||
123 | } |
||
124 | return jPanel1;
|
||
125 | } |
||
126 | |||
127 | 11042 | bsanchez | public void addButtonPressedListener(ButtonsPanelListener listener) { |
128 | 12107 | bsanchez | getDefaultButtonsPanel().addButtonPressedListener(listener); |
129 | 11042 | bsanchez | } |
130 | |||
131 | public void removeButtonPressedListener(ButtonsPanelListener listener) { |
||
132 | getDefaultButtonsPanel().removeButtonPressedListener(listener); |
||
133 | } |
||
134 | |||
135 | 10948 | nacho | public void showLog(boolean visible) { |
136 | 11042 | bsanchez | getButtonsPanel().getButton(ButtonsPanel.BUTTON_SEEDETAILS).setVisible(!visible); |
137 | getButtonsPanel().getButton(ButtonsPanel.BUTTON_HIDEDETAILS).setVisible(visible); |
||
138 | 10948 | nacho | jScrollPane.setVisible(visible); |
139 | |||
140 | 11114 | bsanchez | this.setIgnoreRepaint(true); |
141 | 10948 | nacho | |
142 | 11114 | bsanchez | if (visible)
|
143 | this.setSize(this.getWidth(), 300); |
||
144 | else
|
||
145 | this.pack();
|
||
146 | |||
147 | 10962 | bsanchez | this.setIgnoreRepaint(false); |
148 | 11114 | bsanchez | if (this.isVisible()) |
149 | 12107 | bsanchez | this.setVisible(true); |
150 | 10948 | nacho | } |
151 | 10962 | bsanchez | |
152 | public void showPause(boolean visible) { |
||
153 | 11068 | bsanchez | if (showPause) {
|
154 | getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(!visible); |
||
155 | getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(visible); |
||
156 | } else {
|
||
157 | getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(false);
|
||
158 | getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(false);
|
||
159 | } |
||
160 | 10962 | bsanchez | } |
161 | 12107 | bsanchez | |
162 | 11042 | bsanchez | public ButtonsPanel getButtonsPanel() {
|
163 | return getDefaultButtonsPanel().getButtonsPanel();
|
||
164 | } |
||
165 | 10948 | nacho | /**
|
166 | 12368 | bsanchez | * This method initializes DefaultButtonsPanel
|
167 | *
|
||
168 | * @return DefaultButtonsPanel
|
||
169 | 10948 | nacho | */
|
170 | 11042 | bsanchez | public DefaultButtonsPanel getDefaultButtonsPanel() {
|
171 | if (defaultButtonsPanel == null) { |
||
172 | defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_NONE);
|
||
173 | getButtonsPanel().addSeeDetails(); |
||
174 | getButtonsPanel().addHideDetails(); |
||
175 | getButtonsPanel().addPause(); |
||
176 | getButtonsPanel().addRestart(); |
||
177 | 10962 | bsanchez | showPause(true);
|
178 | 11042 | bsanchez | getButtonsPanel().addCancel(); |
179 | getButtonsPanel().setLayout(new java.awt.FlowLayout(FlowLayout.CENTER)); |
||
180 | getButtonsPanel().addButtonPressedListener(new ButtonsPanelListener() {
|
||
181 | public void actionButtonPressed(ButtonsPanelEvent e) { |
||
182 | switch (e.getButton()) {
|
||
183 | case ButtonsPanel.BUTTON_SEEDETAILS:
|
||
184 | showLog(true);
|
||
185 | break;
|
||
186 | case ButtonsPanel.BUTTON_HIDEDETAILS:
|
||
187 | showLog(false);
|
||
188 | break;
|
||
189 | case ButtonsPanel.BUTTON_PAUSE:
|
||
190 | showPause(false);
|
||
191 | break;
|
||
192 | case ButtonsPanel.BUTTON_RESTART:
|
||
193 | showPause(true);
|
||
194 | break;
|
||
195 | 10948 | nacho | } |
196 | } |
||
197 | }); |
||
198 | } |
||
199 | 11042 | bsanchez | return defaultButtonsPanel;
|
200 | 10948 | nacho | } |
201 | |||
202 | /**
|
||
203 | 12368 | bsanchez | * This method initializes jProgressBar
|
204 | *
|
||
205 | * @return javax.swing.JProgressBar
|
||
206 | 10948 | nacho | */
|
207 | private JProgressBar getJProgressBar() { |
||
208 | if (jProgressBar == null) { |
||
209 | jProgressBar = new JProgressBar(); |
||
210 | jProgressBar.setValue(50);
|
||
211 | 11114 | bsanchez | jProgressBar.setPreferredSize(new Dimension(450, 18)); |
212 | 10948 | nacho | } |
213 | return jProgressBar;
|
||
214 | } |
||
215 | |||
216 | /**
|
||
217 | 12368 | bsanchez | * This method initializes jScrollPane
|
218 | *
|
||
219 | * @return javax.swing.JScrollPane
|
||
220 | 10948 | nacho | */
|
221 | private JScrollPane getJScrollPane() { |
||
222 | if (jScrollPane == null) { |
||
223 | jScrollPane = new JScrollPane(); |
||
224 | jScrollPane.setViewportView(getJTextPane()); |
||
225 | jScrollPane.setVisible(false);
|
||
226 | } |
||
227 | return jScrollPane;
|
||
228 | } |
||
229 | |||
230 | /**
|
||
231 | 12368 | bsanchez | * This method initializes jTextPane
|
232 | *
|
||
233 | * @return javax.swing.JTextPane
|
||
234 | 10948 | nacho | */
|
235 | private JTextPane getJTextPane() { |
||
236 | if (jTextPane == null) { |
||
237 | jTextPane = new JTextPane(); |
||
238 | jTextPane.setEditable(false);
|
||
239 | } |
||
240 | return jTextPane;
|
||
241 | } |
||
242 | 12107 | bsanchez | |
243 | 10948 | nacho | private void updateLog() { |
244 | jTextPane.setText(text.getText()); |
||
245 | 10962 | bsanchez | jTextPane.setCaretPosition(jTextPane.getText().length()); |
246 | 10948 | nacho | } |
247 | |||
248 | public void addLineLog(String line) { |
||
249 | text.addLine(line); |
||
250 | updateLog(); |
||
251 | } |
||
252 | |||
253 | public void replaceLastLineLog(String line) { |
||
254 | text.replaceLastLine(line); |
||
255 | updateLog(); |
||
256 | } |
||
257 | |||
258 | public void setLog(String value) { |
||
259 | 11198 | bsanchez | long time = (System.currentTimeMillis() - startTime) / 1000; |
260 | text.setText(value + "\n" + Messages.getText("tiempo_transcurrido") + ": " + time + "s"); |
||
261 | 10948 | nacho | updateLog(); |
262 | } |
||
263 | |||
264 | public int getPercent() { |
||
265 | return jProgressBar.getValue();
|
||
266 | } |
||
267 | |||
268 | public void setPercent(int value) { |
||
269 | 11179 | bsanchez | if ((value == 0) && (!jProgressBar.isIndeterminate())) { |
270 | jProgressBar.setIndeterminate(true);
|
||
271 | jLabel1.setVisible(false);
|
||
272 | } |
||
273 | if ((value != 0) && (jProgressBar.isIndeterminate())) { |
||
274 | jProgressBar.setIndeterminate(false);
|
||
275 | jLabel1.setVisible(true);
|
||
276 | } |
||
277 | 10948 | nacho | jProgressBar.setValue(value); |
278 | jLabel1.setText(value + "%");
|
||
279 | } |
||
280 | 12107 | bsanchez | |
281 | 10948 | nacho | public void setLabel(String value) { |
282 | jLabel.setText(value); |
||
283 | } |
||
284 | } |