Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extGeocoding / src / org / gvsig / geocoding / gui / settings / SettingsPanel.java @ 27465

History | View | Annotate | Download (6.16 KB)

1
/*
2
 * To change this template, choose Tools | Templates
3
 * and open the template in the editor.
4
 */
5

    
6
/*
7
 * SettingsPanel.java
8
 *
9
 * Created on 16-mar-2009, 12:41:50
10
 */
11

    
12
package org.gvsig.geocoding.gui.settings;
13

    
14
import java.awt.event.FocusEvent;
15
import java.awt.event.FocusListener;
16
import java.awt.event.KeyEvent;
17
import java.awt.event.KeyListener;
18

    
19
import javax.swing.JLabel;
20
import javax.swing.JPanel;
21
import javax.swing.JSlider;
22
import javax.swing.JTextField;
23

    
24
import org.gvsig.geocoding.extension.GeocoController;
25

    
26
import com.iver.andami.PluginServices;
27

    
28
/**
29
 * 
30
 * @author vsanjaime
31
 */
32
public class SettingsPanel extends JPanel implements FocusListener {
33
        
34
        private static final int MAXRESULTS = 10;
35

    
36
        private static final long serialVersionUID = 1L;
37

    
38
        private GeocoController control = null;
39

    
40
        private JLabel jLabMaxResults;
41
        private JLabel jLabScore;
42
        private JLabel jLabScorePercent;
43
        private JPanel jPanMaxResults;
44
        private JPanel jPanScore;
45
        private JSlider jSliderScore;
46
        private JTextField jTextMaxResults;
47

    
48
        /**
49
         * Constructor
50
         */
51
        public SettingsPanel(GeocoController control) {
52
                initComponents();
53
                this.control = control;
54

    
55
                setMesages();
56
        }
57

    
58
        /**
59
         * Initialize components
60
         */
61
        private void initComponents() {
62
                java.awt.GridBagConstraints gridBagConstraints;
63

    
64
                jPanMaxResults = new javax.swing.JPanel();
65
                jLabMaxResults = new javax.swing.JLabel();
66
                jTextMaxResults = new javax.swing.JTextField();
67
                jPanScore = new javax.swing.JPanel();
68
                jLabScore = new javax.swing.JLabel();
69
                jSliderScore = new javax.swing.JSlider();
70
                jLabScorePercent = new javax.swing.JLabel();
71

    
72
                setLayout(new java.awt.GridBagLayout());
73

    
74
                jPanMaxResults.setLayout(new java.awt.GridBagLayout());
75

    
76
                jLabMaxResults.setText("max");
77
                gridBagConstraints = new java.awt.GridBagConstraints();
78
                gridBagConstraints.gridx = 0;
79
                gridBagConstraints.gridy = 0;
80
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
81
                jPanMaxResults.add(jLabMaxResults, gridBagConstraints);
82

    
83
                jTextMaxResults.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
84
                jTextMaxResults.setMinimumSize(new java.awt.Dimension(30, 20));
85
                jTextMaxResults.setPreferredSize(new java.awt.Dimension(60, 20));
86
                jTextMaxResults.addFocusListener(this);
87
                gridBagConstraints = new java.awt.GridBagConstraints();
88
                gridBagConstraints.gridx = 1;
89
                gridBagConstraints.gridy = 0;
90
                jPanMaxResults.add(jTextMaxResults, gridBagConstraints);
91

    
92
                gridBagConstraints = new java.awt.GridBagConstraints();
93
                gridBagConstraints.gridx = 0;
94
                gridBagConstraints.gridy = 0;
95
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
96
                gridBagConstraints.weightx = 1.0;
97
                gridBagConstraints.insets = new java.awt.Insets(2, 10, 2, 10);
98
                add(jPanMaxResults, gridBagConstraints);
99

    
100
                jPanScore.setLayout(new java.awt.GridBagLayout());
101

    
102
                jLabScore.setText("score");
103
                gridBagConstraints = new java.awt.GridBagConstraints();
104
                gridBagConstraints.gridx = 0;
105
                gridBagConstraints.gridy = 0;
106
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
107
                jPanScore.add(jLabScore, gridBagConstraints);
108

    
109
                jSliderScore.setMajorTickSpacing(10);
110
                jSliderScore.setMinorTickSpacing(10);
111
                jSliderScore.setPaintTicks(false);
112
                jSliderScore.setSnapToTicks(true);
113
                jSliderScore.setValue(80);
114
                jSliderScore.setPreferredSize(new java.awt.Dimension(120, 25));
115
                jSliderScore.addChangeListener(new javax.swing.event.ChangeListener() {
116
                        public void stateChanged(javax.swing.event.ChangeEvent evt) {
117
                                evChangeScore(evt);
118
                        }
119
                });
120
                jPanScore.add(jSliderScore, new java.awt.GridBagConstraints());
121

    
122
                jLabScorePercent.setText("80");
123
                gridBagConstraints = new java.awt.GridBagConstraints();
124
                gridBagConstraints.gridx = 2;
125
                gridBagConstraints.gridy = 0;
126
                jPanScore.add(jLabScorePercent, gridBagConstraints);
127

    
128
                gridBagConstraints = new java.awt.GridBagConstraints();
129
                gridBagConstraints.gridx = 1;
130
                gridBagConstraints.gridy = 0;
131
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
132
                gridBagConstraints.weightx = 1.0;
133
                add(jPanScore, gridBagConstraints);
134
        }
135

    
136

    
137
        /**
138
         * change score value event
139
         * 
140
         * @param evt
141
         */
142
        private void evChangeScore(javax.swing.event.ChangeEvent evt) {
143
                double score = (double) jSliderScore.getValue();
144
                jLabScorePercent.setText(Integer.toString((int)score));
145
                if(control.getPattern() != null){
146
                        control.getPattern().getSettings().setScore(score);
147
                }                
148
        }
149

    
150
        /**
151
         * get internationalizated strings
152
         */
153
        private void setMesages() {
154
                PluginServices ps = PluginServices.getPluginServices(this);
155

    
156
                this.jLabMaxResults.setText(ps.getText("maxresults"));
157
                this.jLabScore.setText(ps.getText("score"));
158
                jTextMaxResults.setToolTipText(ps.getText("maxresultstip"));
159
                jSliderScore.setToolTipText(ps.getText("scoretip"));
160
        }
161

    
162
        /**
163
         * Set maximum results in the panel
164
         * 
165
         * @param result
166
         */
167
        public void setMaxResults(int result) {
168
                jTextMaxResults.setText(Integer.toString(result));
169
        }
170

    
171
        /**
172
         * Set threshold score
173
         * 
174
         * @param result
175
         */
176
        public void setScore(double score) {
177
                jSliderScore.setValue((int) score);
178
                jLabScorePercent.setText(Integer.toString((int)score));
179
        }
180

    
181

    
182

    
183
        /**
184
         * swich on and off components
185
         * 
186
         * @param active
187
         */
188
        public void activateComponents(boolean active) {
189
                jLabMaxResults.setEnabled(active);
190
                jLabScore.setEnabled(active);
191
                jLabScorePercent.setEnabled(active);
192
                jSliderScore.setEnabled(active);
193
                jTextMaxResults.setEnabled(active);
194
        }
195

    
196
        /**
197
         * get new pattern maximum results
198
         * @return
199
         */
200
        public int getMaxResults() {                
201
                return Integer.parseInt(jTextMaxResults.getText());
202
        }
203

    
204
        /**
205
         * get new pattern minimum score
206
         * @return
207
         */
208
        public double getScore() {                
209
                return (double)jSliderScore.getValue();
210
        }
211

    
212
        /**
213
         * focus gained event
214
         * @param event
215
         */
216
        public void focusGained(FocusEvent e) {
217
                // nothing to do
218
                
219
        }
220

    
221
        /**
222
         * focus lost event
223
         * @param event
224
         */
225
        public void focusLost(FocusEvent e) {
226
                String max = jTextMaxResults.getText().trim();
227
                int maxresults;
228
                try {
229
                        maxresults = Integer.parseInt(max);
230
                        if (maxresults < 1) {
231
                                maxresults = 1;
232
                                jTextMaxResults.setText(Integer.toString(maxresults));
233
                                control.getPattern().getSettings().setResultsNumber(maxresults);
234
                        }
235
                } catch (Exception ex) {                        
236
                        jTextMaxResults.setText(Integer.toString(MAXRESULTS));
237
                        jTextMaxResults.requestFocus();
238
                }
239
                
240
        }
241

    
242
}