Statistics
| Revision:

root / trunk / extensions / extSymbology / src / org / gvsig / symbology / gui / layerproperties / LabelScaleRange.java @ 20768

History | View | Annotate | Download (6.68 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
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package org.gvsig.symbology.gui.layerproperties;
42

    
43
import java.awt.BorderLayout;
44
import java.awt.Component;
45
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
47
import java.util.TreeSet;
48

    
49
import javax.swing.ButtonGroup;
50
import javax.swing.JLabel;
51
import javax.swing.JPanel;
52
import javax.swing.JRadioButton;
53

    
54
import org.gvsig.gui.beans.AcceptCancelPanel;
55
import org.gvsig.gui.beans.controls.comboscale.ComboScale;
56
import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
57
import org.gvsig.gui.beans.swing.JBlank;
58

    
59
import com.iver.andami.PluginServices;
60
import com.iver.andami.ui.mdiManager.IWindow;
61
import com.iver.andami.ui.mdiManager.WindowInfo;
62
/**
63
 * 
64
 * LabelScaleRange.java
65
 *
66
 * 
67
 * @author jaume dominguez faus - jaume.dominguez@iver.es Apr 4, 2008
68
 *
69
 */
70
public class LabelScaleRange extends JPanel implements IWindow, ActionListener {
71

    
72
        private static final long serialVersionUID = -450284029750650479L;
73
        private static final long[] defaultScales = new long[] {
74
                1000,
75
                2000,
76
                5000,
77
                10000,
78
                50000,
79
                100000,
80
                200000,
81
                500000,
82
        };
83
        private long minScale, maxScale;
84
        private ComboScale cmbMinScale;
85
        private ComboScale cmbMaxScale;
86
        private JRadioButton rdBtnUseSameRangeThanLayer;
87
        private JRadioButton rdBtnDontShowLabelWhenZoomed;
88
        
89
        public LabelScaleRange(long minScale, long maxScale) {
90
                super();
91
                setLayout(new BorderLayout());
92
                this.minScale = minScale;
93
                this.maxScale = maxScale;
94
                
95
                getCmbMaxScale().setScale(maxScale);
96
                getCmbMinScale().setScale(minScale);
97
                GridBagLayoutPanel p = new GridBagLayoutPanel();
98
                p.addComponent(new JLabel(PluginServices.getText(this, "specify_the_range_of_scales_at_which_labels_will_be_shown")));
99
                p.addComponent(new JBlank(10, 10));
100
                p.addComponent(getRdUseSameRangeThanLayer());
101
                p.addComponent(new JBlank(10, 10));
102
                p.addComponent(getRdDontShowLabelsWhenZoomed());
103
                p.addComponent(new JBlank(10, 10));
104
                ButtonGroup group = new ButtonGroup();
105
                group.add(getRdUseSameRangeThanLayer());
106
                group.add(getRdDontShowLabelsWhenZoomed());
107
                getRdUseSameRangeThanLayer().addActionListener(this);
108
                getRdDontShowLabelsWhenZoomed().addActionListener(this);
109
                getRdUseSameRangeThanLayer().setSelected(minScale == -1 && maxScale == -1);
110
                getRdDontShowLabelsWhenZoomed().setSelected(!getRdUseSameRangeThanLayer().isSelected());
111
                
112
                JPanel aux;
113
                JLabel l;
114
                l  = new JLabel("    "+PluginServices.getText(this, "out_beyond"), JLabel.RIGHT);
115
                aux = new JPanel();
116
                aux.add(getCmbMinScale());
117
                aux.add(new JLabel("("+PluginServices.getText(this, "min_scale")+")"));
118
                p.addComponent(l, aux);
119
                
120
                l = new JLabel("    "+PluginServices.getText(this, "in_beyond"), JLabel.RIGHT);
121
                aux = new JPanel();
122
                aux.add(getCmbMaxScale());
123
                aux.add(new JLabel("("+PluginServices.getText(this, "max_scale")+")"));
124
                p.addComponent(l, aux);
125

    
126
                add(new JBlank(10, 10), BorderLayout.WEST);
127
                add(new JBlank(10, 10), BorderLayout.EAST);
128
                add(p, BorderLayout.CENTER);
129
                add(new AcceptCancelPanel(this, this), BorderLayout.SOUTH);
130
        }
131
        
132
        
133
        private JRadioButton getRdDontShowLabelsWhenZoomed() {
134
                if (rdBtnDontShowLabelWhenZoomed == null) {
135
                        rdBtnDontShowLabelWhenZoomed = new JRadioButton(
136
                                        PluginServices.getText(this, "dont_show_labels_when_zoomed"));
137
                }
138
                return rdBtnDontShowLabelWhenZoomed;
139
        }
140

    
141
        private JRadioButton getRdUseSameRangeThanLayer() {
142
                if (rdBtnUseSameRangeThanLayer == null) {
143
                        rdBtnUseSameRangeThanLayer = new JRadioButton(
144
                                        PluginServices.getText(this, "use_the_same_scale_range_as_the_feature_layer"));
145
                }
146
                return rdBtnUseSameRangeThanLayer;
147
        }
148

    
149
        public long getMinScale() {
150
                return minScale;
151
        }
152
        
153
        private ComboScale getCmbMinScale() {
154
                if (cmbMinScale == null) {
155
                        cmbMinScale = new ComboScale();
156
                        TreeSet<Long> ts = new TreeSet<Long>();
157
                        if (minScale!=-1) ts.add(minScale);
158
                        for (int i = 0; i < defaultScales.length; i++) {
159
                                ts.add(defaultScales[i]);
160
                        }
161
                        long[] items = new long[ts.size()];
162
                        for (int i = 0; i < items.length; i++) {
163
                                items[i] = ts.first();
164
                                ts.remove(ts.first());
165
                        }
166
                        cmbMinScale.setItems(items);
167
                        
168
                }
169

    
170
                return cmbMinScale;
171
        }
172

    
173
        private ComboScale getCmbMaxScale() {
174
                if (cmbMaxScale == null) {
175
                        cmbMaxScale = new ComboScale();
176
                        TreeSet<Long> ts = new TreeSet<Long>();
177
                        if (maxScale != -1)        ts.add(maxScale);
178
                        for (int i = 0; i < defaultScales.length; i++) {
179
                                ts.add(defaultScales[i]);
180
                        }
181
                        long[] items = new long[ts.size()];
182
                        for (int i = 0; i < items.length; i++) {
183
                                items[i] = ts.first();
184
                                ts.remove(ts.first());
185
                        }
186
                        cmbMaxScale.setItems(items);
187
                }
188

    
189
                return cmbMaxScale;
190
        }
191

    
192

    
193
        public long getMaxScale() {
194
                return maxScale;
195
        }
196
        
197
        public WindowInfo getWindowInfo() {
198
                WindowInfo wi = new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE);
199
                wi.setTitle(PluginServices.getText(this, "scale_range_window_title"));
200
                wi.setWidth(400);
201
                wi.setHeight(180);
202
                return wi;
203
        }
204
        
205
        public void actionPerformed(ActionEvent e) {
206
                Component c = (Component) e.getSource();
207
                if (getRdDontShowLabelsWhenZoomed().equals(c) ||
208
                        getRdUseSameRangeThanLayer().equals(c)) {
209
                        getCmbMaxScale().setEnabled(getRdDontShowLabelsWhenZoomed().isSelected());
210
                        getCmbMinScale().setEnabled(getRdDontShowLabelsWhenZoomed().isSelected());
211
                        
212
                }
213
                
214
                if ("OK".equals(e.getActionCommand())) {
215
                        minScale = (getRdUseSameRangeThanLayer().isSelected()) ?
216
                                 -1 : getCmbMinScale().getScale();
217
                        maxScale = (getRdUseSameRangeThanLayer().isSelected()) ?
218
                                 -1 : getCmbMaxScale().getScale();
219
                        PluginServices.getMDIManager().closeWindow(this);
220
                }
221
                
222
                if ("CANCEL".equals(e.getActionCommand())) {
223
                        PluginServices.getMDIManager().closeWindow(this);
224
                }
225
        }
226
}