Statistics
| Revision:

gvsig-3d / 2.1 / trunk / org.gvsig.view3d / org.gvsig.view3d.swing / org.gvsig.view3d.swing.impl / src / main / java / org / gvsig / view3d / swing / impl / properties / layer / DefaultLayerProperties3DPanel.java @ 486

History | View | Annotate | Download (8.01 KB)

1
package org.gvsig.view3d.swing.impl.properties.layer;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.Iterator;
6

    
7
import javax.swing.JComboBox;
8

    
9
import org.gvsig.fmap.dal.exception.DataException;
10
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11
import org.gvsig.fmap.dal.feature.FeatureStore;
12
import org.gvsig.fmap.dal.feature.FeatureType;
13
import org.gvsig.fmap.mapcontext.layers.FLayer;
14
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
15
import org.gvsig.tools.ToolsLocator;
16
import org.gvsig.tools.i18n.I18nManager;
17
import org.gvsig.view3d.lib.api.View3DLocator;
18
import org.gvsig.view3d.lib.api.View3DManager;
19
import org.gvsig.view3d.lib.api.properties.LayerProperties3D;
20
import org.gvsig.view3d.lib.api.properties.VectorialLayerProperties3D;
21
import org.slf4j.Logger;
22
import org.slf4j.LoggerFactory;
23

    
24
public class DefaultLayerProperties3DPanel extends
25
    AbstractLayerProperties3DPanel {
26

    
27
    private static final Logger LOG = LoggerFactory
28
        .getLogger(DefaultLayerProperties3DPanel.class);
29

    
30
    private static final long serialVersionUID = -9087506154366633837L;
31

    
32
    private FLayer layer = null;
33
    private LayerProperties3D layerProperties;
34

    
35
    public DefaultLayerProperties3DPanel(FLayer theLayer) {
36
        super();
37
        this.layer = theLayer;
38

    
39
        View3DManager manager = View3DLocator.getManager();
40
        this.layerProperties = manager.getLayerProperties(theLayer);
41

    
42
        getLoadModesComboBox().addActionListener(new ActionListener() {
43

    
44
            public void actionPerformed(ActionEvent e) {
45
                @SuppressWarnings("rawtypes")
46
                JComboBox combo = (JComboBox) e.getSource();
47
                String selectedItem = (String) combo.getSelectedItem();
48
                update(selectedItem);
49
            }
50
        });
51

    
52
        fillPanel();
53
    }
54

    
55
    private void fillPanel() {
56
        fillLoadModes();
57
        fillDetailLevels();
58
        fillLevelZeroResolution();
59
        fillTileSize();
60
        fillElevationFields();
61
        fillElevationUnits();
62
        fillNoDataValue();
63
    }
64

    
65
    private void fillNoDataValue() {
66
        getNoDataField().setText(
67
            String.valueOf(layerProperties.getNoDataValue()));
68

    
69
    }
70

    
71
    private void fillElevationUnits() {
72
        I18nManager i18nManager = ToolsLocator.getI18nManager();
73
        String elevationUnits = layerProperties.getElevationUnits();
74

    
75
        if (i18nManager.getTranslation("meters").equalsIgnoreCase(
76
            elevationUnits)) {
77
            getUnitsComboBox().setSelectedItem(
78
                i18nManager.getTranslation("meters"));
79
        } else if (i18nManager.getTranslation("Pies").equalsIgnoreCase(
80
            elevationUnits)) {
81
            getUnitsComboBox().setSelectedItem(
82
                i18nManager.getTranslation("Pies"));
83
        }
84

    
85
    }
86

    
87
    private void fillTileSize() {
88
        int width = layerProperties.getTileWidth();
89
        int height = layerProperties.getTileHeight();
90

    
91
        getWidthField().setText(String.valueOf(width));
92
        getHeightField().setText(String.valueOf(height));
93
    }
94

    
95
    private void fillLevelZeroResolution() {
96
        getLezelZeroSlider().setValue(
97
            (int) layerProperties.getLevelZeroResolutionMultiplier());
98
    }
99

    
100
    private void fillDetailLevels() {
101
        int minLevel = layerProperties.getMinLevel();
102
        int maxLevel = layerProperties.getMaxLevel();
103

    
104
        getMaxTextField().setText(String.valueOf(maxLevel));
105
        getMinTextField().setText(String.valueOf(minLevel));
106
    }
107

    
108
    @SuppressWarnings("rawtypes")
109
    private void fillElevationFields() {
110

    
111
        if (this.layer == null) {
112
            return;
113
        }
114

    
115
        if (getFieldComboBox().getItemCount() > 0) {
116
            getFieldComboBox().removeAllItems();
117
        }
118

    
119
        if (this.layer instanceof FLyrVect) {
120
            FLyrVect vectorialLayer = (FLyrVect) layer;
121
            FeatureStore featureStore = vectorialLayer.getFeatureStore();
122
            try {
123
                FeatureType featureType = featureStore.getDefaultFeatureType();
124
                Iterator it = featureType.iterator();
125
                while (it.hasNext()) {
126
                    FeatureAttributeDescriptor attribute =
127
                        (FeatureAttributeDescriptor) it.next();
128
                    getFieldComboBox().addItem(attribute.getName());
129
                }
130

    
131
            } catch (DataException e) {
132
                LOG.error("Can't get defautl feature type of {}",
133
                    layer.getName(), e);
134
                getFieldComboBox().setVisible(false);
135
                return;
136
            }
137

    
138
            if (layerProperties instanceof VectorialLayerProperties3D) {
139
                VectorialLayerProperties3D vectorialProperties =
140
                    (VectorialLayerProperties3D) layerProperties;
141
                String elevationField = vectorialProperties.getElevationField();
142
                getFieldComboBox().setSelectedItem(elevationField);
143
            }
144
        } else {
145
            getFieldLabel().setVisible(false);
146
            getFieldComboBox().setVisible(false);
147
        }
148
    }
149

    
150
    private void fillLoadModes() {
151

    
152
        if (this.layer == null) {
153
            return;
154
        }
155

    
156
        I18nManager i18nManager = ToolsLocator.getI18nManager();
157
        JComboBox<String> loadModesComboBox = getLoadModesComboBox();
158

    
159
        if (loadModesComboBox.getItemCount() > 0) {
160
            loadModesComboBox.removeAllItems();
161
        }
162

    
163
        if (this.layer instanceof FLyrVect
164
            && layerProperties instanceof VectorialLayerProperties3D) {
165
            loadModesComboBox.addItem(i18nManager
166
                .getTranslation("rasterized_vectorial"));
167
        } else {
168
            loadModesComboBox.addItem(i18nManager
169
                .getTranslation("raster_image"));
170
        }
171
        loadModesComboBox.addItem(i18nManager.getTranslation("elevation"));
172

    
173
        if (layerProperties.getElevation()) {
174
            loadModesComboBox.setSelectedItem(i18nManager
175
                .getTranslation("elevation"));
176
        } else {
177

    
178
            if (layerProperties instanceof VectorialLayerProperties3D) {
179
                loadModesComboBox.setSelectedItem(i18nManager
180
                    .getTranslation("rasterized_vectorial"));
181
            } else {
182
                loadModesComboBox.setSelectedItem(i18nManager
183
                    .getTranslation("raster_image"));
184
            }
185
        }
186
    }
187

    
188
    public FLayer getLayer() {
189
        return layer;
190
    }
191

    
192
    private void update(String loadMode) {
193

    
194
        I18nManager i18nManager = ToolsLocator.getI18nManager();
195
        if (loadMode.equalsIgnoreCase(i18nManager
196
            .getTranslation("rasterized_vectorial"))
197
            || loadMode.equalsIgnoreCase(i18nManager
198
                .getTranslation("raster_image"))) {
199
            enableComponents(getElevationPanel(), false);
200
        } else if (loadMode.equalsIgnoreCase(i18nManager
201
            .getTranslation("elevation"))) {
202
            enableComponents(getElevationPanel(), true);
203
        }
204
    }
205

    
206
    public void setLayer(FLayer theLayer) {
207
        this.layer = theLayer;
208

    
209
        fillPanel();
210
    }
211

    
212
    public String getElevationField() {
213
        return (String) getFieldComboBox().getSelectedItem();
214
    }
215

    
216
    public String getElevationUnits() {
217
        return (String) getUnitsComboBox().getSelectedItem();
218
    }
219

    
220
    public int getMaxLevel() {
221
        String value = getMaxTextField().getText();
222
        return Integer.valueOf(value);
223
    }
224

    
225
    public int getMinLevel() {
226
        String value = getMinTextField().getText();
227
        return Integer.valueOf(value);
228
    }
229

    
230
    public double getNoDataValue() {
231
        String value = getNoDataField().getText();
232
        return Double.valueOf(value);
233
    }
234

    
235
    public int getResolutionMultiplier() {
236
        return getLezelZeroSlider().getValue();
237
    }
238

    
239
    public int getTileHeight() {
240
        String value = getHeightField().getText();
241
        return Integer.valueOf(value);
242
    }
243

    
244
    public int getTileWidth() {
245
        String value = getWidthField().getText();
246
        return Integer.valueOf(value);
247
    }
248

    
249
    public String getLoadMode() {
250
        return (String) getLoadModesComboBox().getSelectedItem();
251
    }
252
}