Statistics
| Revision:

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

History | View | Annotate | Download (7.1 KB)

1
/* 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
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
34
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
35
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
36
/**
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
        private DefaultButtonsPanel defaultButtonsPanel = null;
51
        private JProgressBar jProgressBar = null;
52
        private JScrollPane jScrollPane = null;
53
        private JTextPane jTextPane = null;
54
        private LogControl text = new LogControl();
55

    
56
        /**
57
         * Constructor
58
         */
59
        public ProgressPanel() {
60
                initialize();
61
        }
62

    
63
        /**
64
         * This method initializes this
65
         * 
66
         */
67
        private void initialize() {
68
                njp = new JPanel();
69
                njp.setLayout(new java.awt.BorderLayout(5, 5));
70
                njp.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
71
                this.setContentPane(njp);
72
                this.setResizable(false);
73
                njp.add(getJPanel(), java.awt.BorderLayout.NORTH);
74
                njp.add(getJPanel1(), java.awt.BorderLayout.CENTER);
75
                njp.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH);
76
                showLog(false);
77
                setPercent(0);
78
                Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
79
                this.setLocation(
80
                                (int) (d.getWidth() - this.getWidth()) >> 1,
81
                                (int) (d.getHeight() - this.getHeight()) >> 1);
82
                this.show();
83
        }
84

    
85
        /**
86
         * This method initializes jPanel        
87
         *         
88
         * @return javax.swing.JPanel        
89
         */
90
        private JPanel getJPanel() {
91
                if (jPanel == null) {
92
                        jLabel1 = new JLabel();
93
                        jLabel = new JLabel();
94
                        jLabel.setText("Espere...");
95
                        jPanel = new JPanel();
96
                        jPanel.setLayout(new java.awt.BorderLayout(5, 5));
97
                        jPanel.add(jLabel, java.awt.BorderLayout.WEST);
98
                        jPanel.add(jLabel1, java.awt.BorderLayout.EAST);
99
                }
100
                return jPanel;
101
        }
102

    
103
        /**
104
         * This method initializes jPanel1        
105
         *         
106
         * @return javax.swing.JPanel        
107
         */
108
        private JPanel getJPanel1() {
109
                if (jPanel1 == null) {
110
                        jPanel1 = new JPanel();
111
                        jPanel1.setLayout(new java.awt.BorderLayout(5, 5));
112
                        jPanel1.add(getJProgressBar(), java.awt.BorderLayout.NORTH);
113
                        jPanel1.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
114
                }
115
                return jPanel1;
116
        }
117

    
118
        public void addButtonPressedListener(ButtonsPanelListener listener) {
119
          getDefaultButtonsPanel().addButtonPressedListener(listener);
120
        }
121

    
122
        public void removeButtonPressedListener(ButtonsPanelListener listener) {
123
                getDefaultButtonsPanel().removeButtonPressedListener(listener);
124
        }
125

    
126
        public void showLog(boolean visible) {
127
                
128
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_SEEDETAILS).setVisible(!visible);
129
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_HIDEDETAILS).setVisible(visible);
130
                jScrollPane.setVisible(visible);
131

    
132
                int width = (this.getWidth()<400?400:this.getWidth());
133
                int height = (visible?300:120);
134

    
135
                this.setIgnoreRepaint(true);
136
                this.setSize(width, height);
137
                this.setResizable(visible);
138
                this.setIgnoreRepaint(false);
139
                this.show();
140
        }
141

    
142
        public void showPause(boolean visible) {
143
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(!visible);
144
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(visible);
145
        }
146
        
147
        public ButtonsPanel getButtonsPanel() {
148
                return getDefaultButtonsPanel().getButtonsPanel();
149
        }
150
        /**
151
         * This method initializes DefaultButtonsPanel        
152
         *         
153
         * @return DefaultButtonsPanel        
154
         */
155
        public DefaultButtonsPanel getDefaultButtonsPanel() {
156
                if (defaultButtonsPanel == null) {
157
                        defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_NONE);
158
                        getButtonsPanel().addSeeDetails();
159
                        getButtonsPanel().addHideDetails();
160
                        getButtonsPanel().addPause();
161
                        getButtonsPanel().addRestart();
162
                        showPause(true);
163
                        getButtonsPanel().addCancel();
164
                        getButtonsPanel().setLayout(new java.awt.FlowLayout(FlowLayout.CENTER));
165
                        getButtonsPanel().addButtonPressedListener(new ButtonsPanelListener() {
166
                                public void actionButtonPressed(ButtonsPanelEvent e) {
167
                                        switch (e.getButton()) {
168
                                                case ButtonsPanel.BUTTON_SEEDETAILS:
169
                                                        showLog(true);
170
                                                        break;
171
                                                case ButtonsPanel.BUTTON_HIDEDETAILS:
172
                                                        showLog(false);
173
                                                        break;
174
                                                case ButtonsPanel.BUTTON_PAUSE:
175
                                                        showPause(false);
176
                                                        break;
177
                                                case ButtonsPanel.BUTTON_RESTART:
178
                                                        showPause(true);
179
                                                        break;
180
                                        }
181
                                }
182
                        });
183
                }
184
                return defaultButtonsPanel;
185
        }
186

    
187
        /**
188
         * This method initializes jProgressBar        
189
         *         
190
         * @return javax.swing.JProgressBar        
191
         */
192
        private JProgressBar getJProgressBar() {
193
                if (jProgressBar == null) {
194
                        jProgressBar = new JProgressBar();
195
                        jProgressBar.setValue(50);
196
                }
197
                return jProgressBar;
198
        }
199

    
200
        /**
201
         * This method initializes jScrollPane        
202
         *         
203
         * @return javax.swing.JScrollPane        
204
         */
205
        private JScrollPane getJScrollPane() {
206
                if (jScrollPane == null) {
207
                        jScrollPane = new JScrollPane();
208
                        jScrollPane.setViewportView(getJTextPane());
209
                        jScrollPane.setVisible(false);
210
                }
211
                return jScrollPane;
212
        }
213

    
214
        /**
215
         * This method initializes jTextPane        
216
         *         
217
         * @return javax.swing.JTextPane        
218
         */
219
        private JTextPane getJTextPane() {
220
                if (jTextPane == null) {
221
                        jTextPane = new JTextPane();
222
                        jTextPane.setEditable(false);
223
                }
224
                return jTextPane;
225
        }
226
        
227
        private void updateLog() {
228
                jTextPane.setText(text.getText());
229
                jTextPane.setCaretPosition(jTextPane.getText().length());
230
        }
231

    
232
        public void addLineLog(String line) {
233
                text.addLine(line);
234
                updateLog();
235
        }
236

    
237
        public void replaceLastLineLog(String line) {
238
                text.replaceLastLine(line);
239
                updateLog();
240
        }
241

    
242
        public void setLog(String value) {
243
                text.setText(value);
244
                updateLog();
245
        }
246

    
247
        public int getPercent() {
248
                return jProgressBar.getValue();
249
        }
250

    
251
        public void setPercent(int value) {
252
                jProgressBar.setValue(value);
253
                jLabel1.setText(value + "%");
254
        }
255
        
256
        public void setLabel(String value) {
257
                jLabel.setText(value);
258
        }
259
}