Statistics
| Revision:

root / trunk / libraries / libUIComponent / src / org / gvsig / gui / beans / progresspanel / ProgressPanel.java @ 12623

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
}