Statistics
| Revision:

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

History | View | Annotate | Download (7.42 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 10948 nacho
/**
37
 * <code>ProgressPanel</code>. Muestra una ventana de di?logo para representar
38
 * una barra de progreso con su ventana de registro.
39
 *
40
 * @version 20/03/2007
41
 * @author Borja Sanchez Zamorano (borja.sanchez@iver.es)
42
 */
43
public class ProgressPanel extends JFrame {
44
        private static final long serialVersionUID = -6930857769971064429L;
45
        private JPanel jPanel = null;
46
        private JLabel jLabel = null;
47
        private JLabel jLabel1 = null;
48
        private JPanel jPanel1 = null;
49
        private JPanel njp = null;
50 11042 bsanchez
        private DefaultButtonsPanel defaultButtonsPanel = null;
51 10948 nacho
        private JProgressBar jProgressBar = null;
52
        private JScrollPane jScrollPane = null;
53
        private JTextPane jTextPane = null;
54
        private LogControl text = new LogControl();
55 11068 bsanchez
56
        private boolean showPause = true;
57 10948 nacho
58
        /**
59
         * Constructor
60
         */
61
        public ProgressPanel() {
62
                initialize();
63
        }
64
65 11068 bsanchez
        public ProgressPanel(boolean showPause) {
66
                this.showPause = showPause;
67
                initialize();
68
        }
69
70 10948 nacho
        /**
71
         * This method initializes this
72
         *
73
         */
74
        private void initialize() {
75
                njp = new JPanel();
76
                njp.setLayout(new java.awt.BorderLayout(5, 5));
77
                njp.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
78
                this.setContentPane(njp);
79
                this.setResizable(false);
80
                njp.add(getJPanel(), java.awt.BorderLayout.NORTH);
81
                njp.add(getJPanel1(), java.awt.BorderLayout.CENTER);
82
                njp.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH);
83
                showLog(false);
84
                setPercent(0);
85
                Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
86
                this.setLocation(
87
                                (int) (d.getWidth() - this.getWidth()) >> 1,
88
                                (int) (d.getHeight() - this.getHeight()) >> 1);
89
                this.show();
90
        }
91
92
        /**
93
         * This method initializes jPanel
94
         *
95
         * @return javax.swing.JPanel
96
         */
97
        private JPanel getJPanel() {
98
                if (jPanel == null) {
99
                        jLabel1 = new JLabel();
100
                        jLabel = new JLabel();
101
                        jLabel.setText("Espere...");
102
                        jPanel = new JPanel();
103
                        jPanel.setLayout(new java.awt.BorderLayout(5, 5));
104
                        jPanel.add(jLabel, java.awt.BorderLayout.WEST);
105
                        jPanel.add(jLabel1, java.awt.BorderLayout.EAST);
106
                }
107
                return jPanel;
108
        }
109
110
        /**
111
         * This method initializes jPanel1
112
         *
113
         * @return javax.swing.JPanel
114
         */
115
        private JPanel getJPanel1() {
116
                if (jPanel1 == null) {
117
                        jPanel1 = new JPanel();
118
                        jPanel1.setLayout(new java.awt.BorderLayout(5, 5));
119
                        jPanel1.add(getJProgressBar(), java.awt.BorderLayout.NORTH);
120
                        jPanel1.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
121
                }
122
                return jPanel1;
123
        }
124
125 11042 bsanchez
        public void addButtonPressedListener(ButtonsPanelListener listener) {
126
          getDefaultButtonsPanel().addButtonPressedListener(listener);
127
        }
128
129
        public void removeButtonPressedListener(ButtonsPanelListener listener) {
130
                getDefaultButtonsPanel().removeButtonPressedListener(listener);
131
        }
132
133 10948 nacho
        public void showLog(boolean visible) {
134 10962 bsanchez
135 11042 bsanchez
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_SEEDETAILS).setVisible(!visible);
136
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_HIDEDETAILS).setVisible(visible);
137 10948 nacho
                jScrollPane.setVisible(visible);
138
139 10962 bsanchez
                int width = (this.getWidth()<400?400:this.getWidth());
140 10948 nacho
                int height = (visible?300:120);
141
142 10962 bsanchez
                this.setIgnoreRepaint(true);
143 10948 nacho
                this.setSize(width, height);
144 10962 bsanchez
                this.setResizable(visible);
145
                this.setIgnoreRepaint(false);
146 10948 nacho
                this.show();
147
        }
148 10962 bsanchez
149
        public void showPause(boolean visible) {
150 11068 bsanchez
                if (showPause) {
151
                        getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(!visible);
152
                        getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(visible);
153
                } else {
154
                        getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(false);
155
                        getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(false);
156
                }
157 10962 bsanchez
        }
158 10948 nacho
159 11042 bsanchez
        public ButtonsPanel getButtonsPanel() {
160
                return getDefaultButtonsPanel().getButtonsPanel();
161
        }
162 10948 nacho
        /**
163 11042 bsanchez
         * This method initializes DefaultButtonsPanel
164 10948 nacho
         *
165 11042 bsanchez
         * @return DefaultButtonsPanel
166 10948 nacho
         */
167 11042 bsanchez
        public DefaultButtonsPanel getDefaultButtonsPanel() {
168
                if (defaultButtonsPanel == null) {
169
                        defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_NONE);
170
                        getButtonsPanel().addSeeDetails();
171
                        getButtonsPanel().addHideDetails();
172
                        getButtonsPanel().addPause();
173
                        getButtonsPanel().addRestart();
174 10962 bsanchez
                        showPause(true);
175 11042 bsanchez
                        getButtonsPanel().addCancel();
176
                        getButtonsPanel().setLayout(new java.awt.FlowLayout(FlowLayout.CENTER));
177
                        getButtonsPanel().addButtonPressedListener(new ButtonsPanelListener() {
178
                                public void actionButtonPressed(ButtonsPanelEvent e) {
179
                                        switch (e.getButton()) {
180
                                                case ButtonsPanel.BUTTON_SEEDETAILS:
181
                                                        showLog(true);
182
                                                        break;
183
                                                case ButtonsPanel.BUTTON_HIDEDETAILS:
184
                                                        showLog(false);
185
                                                        break;
186
                                                case ButtonsPanel.BUTTON_PAUSE:
187
                                                        showPause(false);
188
                                                        break;
189
                                                case ButtonsPanel.BUTTON_RESTART:
190
                                                        showPause(true);
191
                                                        break;
192 10948 nacho
                                        }
193
                                }
194
                        });
195
                }
196 11042 bsanchez
                return defaultButtonsPanel;
197 10948 nacho
        }
198
199
        /**
200
         * This method initializes jProgressBar
201
         *
202
         * @return javax.swing.JProgressBar
203
         */
204
        private JProgressBar getJProgressBar() {
205
                if (jProgressBar == null) {
206
                        jProgressBar = new JProgressBar();
207
                        jProgressBar.setValue(50);
208
                }
209
                return jProgressBar;
210
        }
211
212
        /**
213
         * This method initializes jScrollPane
214
         *
215
         * @return javax.swing.JScrollPane
216
         */
217
        private JScrollPane getJScrollPane() {
218
                if (jScrollPane == null) {
219
                        jScrollPane = new JScrollPane();
220
                        jScrollPane.setViewportView(getJTextPane());
221
                        jScrollPane.setVisible(false);
222
                }
223
                return jScrollPane;
224
        }
225
226
        /**
227
         * This method initializes jTextPane
228
         *
229
         * @return javax.swing.JTextPane
230
         */
231
        private JTextPane getJTextPane() {
232
                if (jTextPane == null) {
233
                        jTextPane = new JTextPane();
234
                        jTextPane.setEditable(false);
235
                }
236
                return jTextPane;
237
        }
238
239
        private void updateLog() {
240
                jTextPane.setText(text.getText());
241 10962 bsanchez
                jTextPane.setCaretPosition(jTextPane.getText().length());
242 10948 nacho
        }
243
244
        public void addLineLog(String line) {
245
                text.addLine(line);
246
                updateLog();
247
        }
248
249
        public void replaceLastLineLog(String line) {
250
                text.replaceLastLine(line);
251
                updateLog();
252
        }
253
254
        public void setLog(String value) {
255
                text.setText(value);
256
                updateLog();
257
        }
258
259
        public int getPercent() {
260
                return jProgressBar.getValue();
261
        }
262
263
        public void setPercent(int value) {
264
                jProgressBar.setValue(value);
265
                jLabel1.setText(value + "%");
266
        }
267
268
        public void setLabel(String value) {
269
                jLabel.setText(value);
270
        }
271
}