Statistics
| Revision:

root / trunk / libraries / libUIComponent / src / org / gvsig / gui / beans / slidertext / listeners / SliderTextListener.java @ 12121

History | View | Annotate | Download (6.07 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 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.slidertext.listeners;
20

    
21
import java.awt.event.ActionEvent;
22
import java.awt.event.ActionListener;
23
import java.awt.event.FocusEvent;
24
import java.awt.event.FocusListener;
25
import java.awt.event.KeyEvent;
26
import java.awt.event.KeyListener;
27
import java.awt.event.MouseEvent;
28
import java.awt.event.MouseListener;
29
import java.util.ArrayList;
30

    
31
import javax.swing.event.ChangeEvent;
32
import javax.swing.event.ChangeListener;
33

    
34
import org.gvsig.gui.beans.slidertext.SliderTextContainer;
35

    
36
/**
37
 * Manejador de eventos del componente SliderText
38
 * 
39
 *@author Nacho Brodin (nachobrodin@gmail.com)
40
 *
41
 */
42
public class SliderTextListener implements ChangeListener, ActionListener, KeyListener, FocusListener, MouseListener{
43
        public ArrayList changeListenerList = new ArrayList();
44
        public ArrayList mouseListenerList = new ArrayList();
45
        public ArrayList keyListenerList = new ArrayList();
46

    
47
        private SliderTextContainer sliderTextContainer = null;
48
        private boolean             disconnectEvent     = false;
49

    
50
        public SliderTextListener(SliderTextContainer panel){
51
                this.sliderTextContainer = panel;
52
        }
53

    
54
        public void actionPerformed(ActionEvent e) {
55

    
56
        }
57

    
58
        /**
59
         * Control del evento de cambio en la posici?n del slider. 
60
         * Este cambio actualiza el valor de la caja de texto y ejecuta el m?todo stateChanged de los listener
61
         * registrados.
62
         */
63
        public void stateChanged(ChangeEvent e) {
64
                //Modificamos la caja de texto con el valor de la posici?n del slider
65
                if(!disconnectEvent) {
66
                        double value = (sliderTextContainer.getSlider().getValue() * sliderTextContainer.getInterval()) + sliderTextContainer.getMin();
67
                        if(!sliderTextContainer.getDecimal())
68
                                sliderTextContainer.getTextField().setText(((int) value) + "");
69
                        else
70
                                sliderTextContainer.getTextField().setText(((int) (value * 10))/10.0 + "");
71
                }
72
                disconnectEvent = false;
73

    
74
                //Ejecutamos los listener registrados
75
                for(int i = 0; i < changeListenerList.size(); i++)
76
                        ((ChangeListener)changeListenerList.get(i)).stateChanged(e);
77
        }
78

    
79
        /**
80
         * Ejecuta el m?todo keyPressed de los listener registrados.
81
         */
82
        public void keyPressed(KeyEvent e) {
83
                //Ejecutamos los listener registrados
84
                for(int i = 0; i < keyListenerList.size(); i++)
85
                        ((KeyListener)keyListenerList.get(i)).keyPressed(e);
86
        }
87

    
88
        /**
89
         * Ejecuta el m?todo keyReleased de los listener registrados.
90
         */
91
        public void keyReleased(KeyEvent e) {
92
                //Asignamos la nueva posici?n de la barra cuando se modifica el texto
93
                if(e.getKeyCode() == 10)
94
                        checkDecimalTextAndUpdateSlider();
95

    
96
                //Ejecutamos los listener registrados
97
                for(int i = 0; i < keyListenerList.size(); i++)
98
                        ((KeyListener)keyListenerList.get(i)).keyReleased(e);
99
        }
100

    
101
        /**
102
         * Ejecuta el m?todo keyTyped de los listener registrados.
103
         */
104
        public void keyTyped(KeyEvent e) {
105
                //Ejecutamos los listener registrados
106
                for(int i = 0; i < keyListenerList.size(); i++)
107
                        ((KeyListener)keyListenerList.get(i)).keyTyped(e);
108
        }
109

    
110
        public void focusGained(FocusEvent e) {
111
                // TODO Auto-generated method stub
112

    
113
        }
114

    
115
        public void focusLost(FocusEvent e) {
116
                checkDecimalTextAndUpdateSlider();
117
        }
118

    
119
        /**
120
                 * Controla que si el formato introducido en el textfield
121
                 * es numerico. Si lo es se actualiza la posici?n del slider
122
                 */
123
                private void checkDecimalTextAndUpdateSlider() {
124
                                String text = sliderTextContainer.getTextField().getText();
125
                                double value = 0;
126
                                disconnectEvent = true;
127

    
128
                                try {
129
                                        if (!text.equals("")){
130
                                                                value = (Double.parseDouble(text) * 100) / (double)(sliderTextContainer.getMax() - sliderTextContainer.getMin());
131
                                                                value = Double.valueOf(text).doubleValue();
132
                                                                if(value < sliderTextContainer.getMin())
133
                                                                        value = sliderTextContainer.getMin();
134
                                                                if(value > sliderTextContainer.getMax())
135
                                                                        value = sliderTextContainer.getMax();
136
                                        }
137
                                        sliderTextContainer.setValue(value);
138
                                } catch (NumberFormatException exc) {
139
                                                System.err.println("Formato no numerico");
140
                                                sliderTextContainer.setValue(0.0);
141
                                }
142
                }
143

    
144
                /**
145
         * Ejecuta el m?todo mouseClicked de los listener registrados.
146
         */
147
        public void mouseClicked(MouseEvent e) {
148
                //Ejecutamos los listener registrados
149
                for(int i = 0; i < mouseListenerList.size(); i++)
150
                        ((MouseListener)mouseListenerList.get(i)).mouseClicked(e);
151
        }
152

    
153
        /**
154
         * Ejecuta el m?todo mouseEntered de los listener registrados.
155
         */
156
        public void mouseEntered(MouseEvent e) {
157
                //Ejecutamos los listener registrados
158
                for(int i = 0; i < mouseListenerList.size(); i++)
159
                        ((MouseListener)mouseListenerList.get(i)).mouseEntered(e);
160
        }
161

    
162
        /**
163
         * Ejecuta el m?todo mouseExited de los listener registrados.
164
         */
165
        public void mouseExited(MouseEvent e) {
166
                //Ejecutamos los listener registrados
167
                for(int i = 0; i < mouseListenerList.size(); i++)
168
                        ((MouseListener)mouseListenerList.get(i)).mouseExited(e);
169
        }
170

    
171
        /**
172
         * Ejecuta el m?todo mousePressed de los listener registrados.
173
         */
174
        public void mousePressed(MouseEvent e) {
175
                //Ejecutamos los listener registrados
176
                for(int i = 0; i < mouseListenerList.size(); i++)
177
                        ((MouseListener)mouseListenerList.get(i)).mousePressed(e);
178
        }
179

    
180
        /**
181
         * Ejecuta el m?todo mouseReleased de los listener registrados.
182
         */
183
        public void mouseReleased(MouseEvent e) {
184
                //Ejecutamos los listener registrados
185
                for(int i = 0; i < mouseListenerList.size(); i++)
186
                        ((MouseListener)mouseListenerList.get(i)).mouseReleased(e);
187
        }
188

    
189

    
190
}