Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / legend / gui / GeneralLayerPropertiesPage.java @ 42756

History | View | Annotate | Download (10.9 KB)

1
package org.gvsig.app.project.documents.view.legend.gui;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.text.NumberFormat;
6
import java.text.ParseException;
7
import javax.swing.JComponent;
8
import org.apache.commons.lang3.StringUtils;
9
import org.cresques.cts.ICoordTrans;
10
import org.cresques.cts.IProjection;
11
import org.gvsig.app.project.documents.view.ViewDocument;
12
import org.gvsig.fmap.dal.DataStore;
13
import org.gvsig.fmap.dal.DataStoreParameters;
14
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
15
import org.gvsig.fmap.geom.primitive.Envelope;
16
import org.gvsig.fmap.geom.type.GeometryType;
17
import org.gvsig.fmap.mapcontext.layers.FLayer;
18
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
19
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
20
import org.gvsig.propertypage.PropertiesPage;
21
import org.gvsig.propertypage.PropertiesPageFactory;
22
import org.gvsig.tools.ToolsLocator;
23
import org.gvsig.tools.i18n.I18nManager;
24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
26

    
27
public class GeneralLayerPropertiesPage extends GeneralLayerPropertiesPageView implements PropertiesPage {
28

    
29
    private static final Logger logger = LoggerFactory.getLogger(GeneralLayerPropertiesPage.class);
30
    private FLayer layer = null;
31

    
32
    public static class GeneralLayerPropertiesPageFactory implements PropertiesPageFactory {
33

    
34
        @Override
35
        public String getGroupID() {
36
            return ViewDocument.LAYER_PROPERTIES_PAGE_GROUP;
37
        }
38

    
39
        @Override
40
        public boolean isVisible(Object obj) {
41
            return obj instanceof FLayer;
42
        }
43

    
44
        @Override
45
        public PropertiesPage create(Object obj) {
46
            return new GeneralLayerPropertiesPage((FLayer) obj);
47
        }
48

    
49
    }
50

    
51
    @SuppressWarnings("OverridableMethodCallInConstructor")
52
    public GeneralLayerPropertiesPage(FLayer layer) {
53
        this.initComponents();
54
        this.setLayer(layer);
55
    }
56

    
57
    private void initComponents() {
58
        this.rdoShowAlways.addActionListener(new ActionListener() {
59
            @Override
60
            public void actionPerformed(ActionEvent ae) {
61
                txtIsGreaterThan.setEnabled(false);
62
                txtIsLessThan.setEnabled(false);
63
            }
64
        });
65
        this.rdoShowConditionedToTheScale.addActionListener(new ActionListener() {
66
            @Override
67
            public void actionPerformed(ActionEvent ae) {
68
                txtIsGreaterThan.setEnabled(true);
69
                txtIsLessThan.setEnabled(true);
70
            }
71
        });
72
        this.translate();
73
    }
74

    
75
    private void translate() {
76
        I18nManager i18nManager = ToolsLocator.getI18nManager();
77
        this.lblName.setText(i18nManager.getTranslation("Nombre") + ":");
78
        this.lblRangeOfScales.setText(i18nManager.getTranslation("rango_de_escalas"));
79
        this.lblIsGreaterThan.setText(i18nManager.getTranslation("este_por_encima_de"));
80
        this.lblIsLessThan.setText(i18nManager.getTranslation("este_por_debajo_de_"));
81
        this.lblFullScale.setText(i18nManager.getTranslation("escala_maxima"));
82
        this.lblMinumunScale.setText(i18nManager.getTranslation("escala_minima"));
83
        this.lblProperties.setText(i18nManager.getTranslation("propiedades"));
84
        this.rdoShowAlways.setText(i18nManager.getTranslation("Mostrar_siempre"));
85
        this.rdoShowConditionedToTheScale.setText(i18nManager.getTranslation("No_mostrar_la_capa_cuando_la_escala") + ":");
86

    
87
        this.lblSourceType.setText(i18nManager.getTranslation("Source_type"));
88
        this.lblSource.setText(i18nManager.getTranslation("origen"));
89
        this.lblDataSource.setText(i18nManager.getTranslation("Data_source"));
90
    }
91

    
92
    @Override
93
    public String getTitle() {
94
        I18nManager i18nManager = ToolsLocator.getI18nManager();
95
        return i18nManager.getTranslation("General");
96
    }
97

    
98
    @Override
99
    public int getPriority() {
100
        return 1000;
101
    }
102

    
103
    @Override
104
    public boolean whenAccept() {
105
        this.whenApply();
106
        return true;
107
    }
108

    
109
    @Override
110
    public boolean whenApply() {
111
        NumberFormat nf = NumberFormat.getInstance();
112

    
113
        if (this.rdoShowConditionedToTheScale.isSelected()) {
114
            try {
115
                String s = this.txtIsGreaterThan.getText();
116
                if (StringUtils.isEmpty(s)) {
117
                    layer.setMinScale(-1);
118
                } else {
119
                    layer.setMinScale((nf.parse(s)).doubleValue());
120
                }
121
            } catch (ParseException ex) {
122
                this.txtIsGreaterThan.setText("");
123
            }
124
            try {
125
                String s = this.txtIsLessThan.getText();
126
                if (StringUtils.isEmpty(s)) {
127
                    layer.setMaxScale(-1);
128
                } else {
129
                    layer.setMaxScale((nf.parse(s)).doubleValue());
130
                }
131
            } catch (ParseException ex) {
132
                this.txtIsLessThan.setText("");
133
            }
134
        } else {
135
            layer.setMinScale(-1);
136
            layer.setMaxScale(-1);
137
        }
138
        if (!this.txtName.getText().equals(layer.getName())) {
139
            layer.setName(this.txtName.getText());
140
        }
141
        return true;
142
    }
143

    
144
    @Override
145
    public boolean whenCancel() {
146
        // Do nothing
147
        return true;
148
    }
149

    
150
    @Override
151
    public JComponent asJComponent() {
152
        return this;
153
    }
154

    
155
    public void setLayer(FLayer layer) {
156
        NumberFormat nf = NumberFormat.getInstance();
157

    
158
        this.layer = layer;
159

    
160
        this.txtName.setText(this.layer.getName());
161
        this.txtProperties.setText(this.getLayerInfo());
162

    
163
        if (layer.getMinScale() != -1) {
164
            this.txtIsGreaterThan.setText(nf.format(layer.getMinScale()));
165
        }
166
        if (layer.getMaxScale() != -1) {
167
            this.txtIsLessThan.setText(nf.format(layer.getMaxScale()));
168
        }
169
        if (layer.getMinScale() == -1 && layer.getMaxScale() == -1) {
170
            this.rdoShowConditionedToTheScale.setSelected(false);
171
        } else {
172
            this.rdoShowConditionedToTheScale.setSelected(true);
173
        }
174
        if (layer instanceof SingleLayer) {
175
            DataStore store = ((SingleLayer) layer).getDataStore();
176
            this.txtSourceType.setText(store.getProviderName());
177
            DataStoreParameters parameters = store.getParameters();
178
            if (parameters instanceof FilesystemStoreParameters) {
179
                this.txtSource.setText(
180
                        ((FilesystemStoreParameters) parameters).getFile().getAbsolutePath()
181
                );
182
            } else {
183
                this.txtSource.setText(store.getFullName());
184
            }
185
        } else {
186
            this.txtSourceType.setText("");
187
            this.txtSource.setText("");
188
        }
189
    }
190

    
191
    private String getLayerInfo() {
192
        String info;
193
        StringBuilder buff = new StringBuilder();
194
        try {
195
            I18nManager i18nManager = ToolsLocator.getI18nManager();
196
            info = layer.getInfoString();
197
            if (info == null) {
198
                Envelope fullExtentViewPort = layer.getFullEnvelope();
199
                IProjection mapProjection = layer.getMapContext().getProjection();
200
                buff.append(i18nManager.getTranslation("Extent"));
201
                buff.append(" ");
202
                buff.append(mapProjection.getAbrev());
203
                buff.append(" (")
204
                        .append(i18nManager.getTranslation("view_projection"))
205
                        .append("):\n\t");
206
                buff.append(i18nManager.getTranslation("Superior"))
207
                        .append(":\t")
208
                        .append(fullExtentViewPort.getMaximum(1))
209
                        .append("\n\t");
210
                buff.append(i18nManager.getTranslation("Inferior"))
211
                        .append(":\t")
212
                        .append(fullExtentViewPort.getMinimum(1))
213
                        .append("\n\t");
214
                buff.append(i18nManager.getTranslation("Izquierda"))
215
                        .append(":\t")
216
                        .append(fullExtentViewPort.getMinimum(0))
217
                        .append("\n\t");
218
                buff.append(i18nManager.getTranslation("Derecha"))
219
                        .append(":\t")
220
                        .append(fullExtentViewPort.getMaximum(0))
221
                        .append("\n");
222

    
223
                if (layer.getProjection() != null
224
                        && !layer.getProjection().getAbrev().equals(
225
                                mapProjection.getAbrev())) {
226
                    IProjection nativeLayerProj = layer.getProjection();
227
                    ICoordTrans ct = mapProjection.getCT(nativeLayerProj);
228
                    Envelope nativeLayerExtent = fullExtentViewPort.convert(ct);
229
                    buff.append(i18nManager.getTranslation("Extent"))
230
                            .append(" ");
231
                    buff.append(nativeLayerProj.getAbrev());
232
                    buff.append(" (")
233
                            .append(i18nManager.getTranslation("layer_native_projection"))
234
                            .append("):\n\t");
235
                    buff.append(i18nManager.getTranslation("Superior"))
236
                            .append(":\t")
237
                            .append(nativeLayerExtent.getMaximum(1))
238
                            .append("\n\t");
239
                    buff.append(i18nManager.getTranslation("Inferior"))
240
                            .append(":\t")
241
                            .append(nativeLayerExtent.getMinimum(1))
242
                            .append("\n\t");
243
                    buff.append(i18nManager.getTranslation("Izquierda"))
244
                            .append(":\t")
245
                            .append(nativeLayerExtent.getMinimum(0))
246
                            .append("\n\t");
247
                    buff.append(i18nManager.getTranslation("Derecha"))
248
                            .append(":\t")
249
                            .append(nativeLayerExtent.getMaximum(0))
250
                            .append("\n");
251
                }
252

    
253
                if (layer instanceof FLyrVect) {
254
                    try {
255
                        GeometryType geomType = ((FLyrVect) layer).getTypeVectorLayer();
256
                        buff.append("\n")
257
                                .append(i18nManager.getTranslation("type"))
258
                                .append(": ")
259
                                .append(geomType.getFullName())
260
                                .append("\n");
261
                    } catch (Exception e) {
262
                        logger.warn("Can't get gemetry type for layer '" + layer.getName() + "'.", e);
263
                        buff.append("\n")
264
                                .append(i18nManager.getTranslation("type"))
265
                                .append(": ")
266
                                .append("unknow")
267
                                .append("\n");
268
                    }
269

    
270
                }
271
                info = buff.toString();
272
            }
273
        } catch (Exception e) {
274
            logger.warn("Can't get layer information.", e);
275
            info = buff.toString();
276
        }
277
        return info;
278
    }
279

    
280
}