Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libUIComponent / src / org / gvsig / gui / beans / slidertext / listeners / SliderTextListener.java @ 10885

History | View | Annotate | Download (6.11 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

    
44
        private SliderTextContainer                sliderTextContainer = null;
45
        private boolean                                        disconnectEvent = false;
46
        public ArrayList                                         changeListenerList = new ArrayList();
47
        public ArrayList                                         mouseListenerList = new ArrayList();
48
        public ArrayList                                         keyListenerList = new ArrayList();
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
                        if(!sliderTextContainer.getDecimal())
67
                                sliderTextContainer.getTextField().setText(sliderTextContainer.getSlider().getValue()+"");
68
                        else
69
                                sliderTextContainer.getTextField().setText(sliderTextContainer.getSlider().getValue()+".0");
70
                }
71
                disconnectEvent = false;
72
                
73
                //Ejecutamos los listener registrados
74
                for(int i = 0; i < changeListenerList.size(); i++)
75
                        ((ChangeListener)changeListenerList.get(i)).stateChanged(e);
76
        }
77

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

    
87
        /**
88
         * Ejecuta el m?todo keyReleased de los listener registrados.
89
         */
90
        public void keyReleased(KeyEvent e) {
91
                //Asignamos la nueva posici?n de la barra cuando se modifica el texto
92
                if(e.getKeyCode() == 10)
93
                        checkDecimalTextAndUpdateSlider();
94
                
95
                //Ejecutamos los listener registrados
96
                for(int i = 0; i < keyListenerList.size(); i++)
97
                        ((KeyListener)keyListenerList.get(i)).keyReleased(e);
98
        }
99

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

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

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

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

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

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

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

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

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