Revision 760 2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.swing/org.gvsig.view3d.vector.swing.impl/src/main/java/org/gvsig/view3d/vector/swing/impl/JVectorExtrusionLoaderParametersController.java

View differences:

JVectorExtrusionLoaderParametersController.java
1 1
package org.gvsig.view3d.vector.swing.impl;
2 2

  
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.Arrays;
6
import java.util.List;
7

  
3 8
import javax.swing.JComponent;
4 9

  
10
import org.apache.commons.lang3.StringUtils;
11
import org.slf4j.Logger;
12
import org.slf4j.LoggerFactory;
13

  
14
import org.gvsig.fmap.dal.exception.DataException;
15
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
16
import org.gvsig.fmap.dal.feature.FeatureStore;
17
import org.gvsig.fmap.dal.feature.FeatureType;
18
import org.gvsig.fmap.mapcontext.layers.FLayer;
19
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
20
import org.gvsig.tools.ToolsLocator;
21
import org.gvsig.tools.dataTypes.CoercionException;
22
import org.gvsig.tools.dataTypes.DataTypes;
23
import org.gvsig.tools.dataTypes.DataTypesManager;
24
import org.gvsig.tools.dataTypes.DataTypesManager.Coercion;
25
import org.gvsig.tools.i18n.I18nManager;
5 26
import org.gvsig.view3d.lib.api.loader.LoaderParameters;
6 27
import org.gvsig.view3d.swing.api.exception.InvalidLoaderParametersException;
28
import org.gvsig.view3d.vector.lib.api.VectorElevationMode;
29
import org.gvsig.view3d.vector.lib.api.VectorExtrusionLoaderParameters;
7 30
import org.gvsig.view3d.vector.swing.api.JVectorExtrusionLoaderParameters;
8 31

  
9
public class JVectorExtrusionLoaderParametersController extends JVectorExtrusionLoaderParametersView implements JVectorExtrusionLoaderParameters {
32
public class JVectorExtrusionLoaderParametersController extends JVectorExtrusionLoaderParametersView
33
    implements JVectorExtrusionLoaderParameters {
10 34

  
11 35
    private static final long serialVersionUID = 26999444514713602L;
12 36

  
37
    private static final Logger LOG = LoggerFactory.getLogger(JVectorExtrusionLoaderParametersController.class);
38

  
39
    private JColorChooserButton colorChooserButton;
40

  
41
    private VectorExtrusionLoaderParameters parameters;
42

  
43
    public JVectorExtrusionLoaderParametersController(VectorExtrusionLoaderParameters parameters) {
44
        super();
45

  
46
        this.parameters = parameters;
47
        translate();
48
        initComponents();
49
    }
50

  
51
    private void translate() {
52
        I18nManager i18nManager = ToolsLocator.getI18nManager();
53
        this.elevationModeText.setText(i18nManager.getTranslation(this.elevationModeText.getText()));
54
        this.defaultColorText.setText(i18nManager.getTranslation(this.defaultColorText.getText()));
55
        this.constantHeightText.setText(i18nManager.getTranslation(this.constantHeightText.getText()));
56
        this.heightFieldText.setText(i18nManager.getTranslation(this.heightFieldText.getText()));
57
        this.verticalExaggerationText.setText(i18nManager.getTranslation(this.verticalExaggerationText.getText()));
58
    }
59

  
60
    @SuppressWarnings("unchecked")
61
    private void initComponents() {
62

  
63
        List<VectorElevationMode> elevationModes = Arrays.asList(VectorElevationMode.values());
64

  
65
        // Elevation mode
66
        this.elevationMode.setRenderer(new ElevationModeComboBoxRenderer());
67
        for (VectorElevationMode mode : elevationModes) {
68
            this.elevationMode.addItem(mode);
69
        }
70
        if(parameters.getVectorElevationMode() != null) {
71
            this.elevationMode.setSelectedItem(parameters.getVectorElevationMode());
72
        }
73

  
74
        // Default Color
75
        this.colorChooserButton = new JColorChooserButton(parameters.getDefaultColor());
76
        this.defaultColorPanel.add(colorChooserButton);
77

  
78
        DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager();
79
        Coercion stringCoercion = dataTypesManager.getCoercion(DataTypes.STRING);
80
        // Constant height
81
        try {
82
            this.constantHeight.setText((String) stringCoercion.coerce(parameters.getConstantHeight()));
83
        } catch (CoercionException e) {
84
            LOG.error(String.format("Can not parse constant height value %d to string", parameters.getConstantHeight()),
85
                e);
86
            this.constantHeight.setText("");
87
        }
88

  
89
        // Vertical exaggeration
90
        try {
91
            String verticalExaggeration = (String) stringCoercion.coerce(parameters.getVerticalExaggeration());
92
            if(StringUtils.isBlank(verticalExaggeration)) {
93
                this.verticalExaggeration.setText("1.0");
94
            } else {
95
                this.verticalExaggeration.setText(verticalExaggeration);
96
            }
97
        } catch (CoercionException e) {
98
            LOG.error(String.format("Can not parse vertical exaggeration value %d to string",
99
                parameters.getVerticalExaggeration()), e);
100
            this.verticalExaggeration.setText("");
101
        }
102

  
103
        // Height field
104
        heightField.addItem("");
105
        
106
        FLayer layer = this.parameters.getLayer();
107
        if (layer instanceof FLyrVect) {
108

  
109
            FLyrVect vectorLayer = (FLyrVect) layer;
110
            FeatureStore featureStore = vectorLayer.getFeatureStore();
111
            FeatureType featureType = null;
112
            try {
113
                featureType = featureStore.getDefaultFeatureType();
114
            } catch (DataException e) {
115
                LOG.error(String.format("Can not get feature type of %1s", vectorLayer.getName()), e);
116
                return;
117
            }
118
            FeatureAttributeDescriptor[] attributeDescriptors = featureType.getAttributeDescriptors();
119
            for (FeatureAttributeDescriptor attDesc : attributeDescriptors) {
120
                heightField.addItem(attDesc.getName());
121
            }
122
        }
123
        
124
        // Initialize change listeners
125
        this.heightField.addActionListener(new ActionListener() {
126
            
127
            @Override
128
            public void actionPerformed(ActionEvent e) {
129
                String selectedValue = (String) heightField.getSelectedItem();
130
                if(StringUtils.isBlank(selectedValue)) {
131
                    constantHeightText.setEnabled(true);
132
                    constantHeight.setEnabled(true);
133
                } else {
134
                    constantHeightText.setEnabled(false);
135
                    constantHeight.setEnabled(false);
136
                }
137
            }
138
        });
139
    }
140

  
13 141
    @Override
14 142
    public LoaderParameters getLoaderParameters() throws InvalidLoaderParametersException {
15
        // TODO Auto-generated method stub
16
        return null;
143
        
144
        DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager();
145
        Coercion doubleCoercion = dataTypesManager.getCoercion(DataTypes.DOUBLE);
146

  
147
        this.parameters.setVectorElevationMode((VectorElevationMode) this.elevationMode.getSelectedItem());
148
        this.parameters.setDefaultColor(this.colorChooserButton.getSelectedColor());
149
        
150
        if(StringUtils.isNotBlank((String) this.heightField.getSelectedItem())) {
151
            this.parameters.setHeightField((String) this.heightField.getSelectedItem());
152
        } else {
153
            try {
154
                this.parameters.setConstantHeight((double) doubleCoercion.coerce(this.constantHeight.getText()));
155
            } catch (CoercionException e) {
156
                LOG.error(String.format("Can not parse constant height value %s to double", this.constantHeight.getText()),
157
                    e);
158
                throw new InvalidLoaderParametersException("Invalid constant height value", "constant_height_has_to_be_a_number",
159
                    e);
160
            }
161
        }
162
        
163
        try {
164
            this.parameters.setVerticalExaggeration((double) doubleCoercion.coerce(this.verticalExaggeration.getText()));
165
        } catch (CoercionException e) {
166
            LOG.error(String.format("Can not parse vertical exaggeration value %s to double",
167
                this.verticalExaggeration.getText()), e);
168
            throw new InvalidLoaderParametersException("Invalid vertical exaggeration value",
169
                "vertical_exaggeration_has_to_be_a_number", e);
170
        }
171

  
172
        return this.parameters;
17 173
    }
18 174

  
19 175
    @Override

Also available in: Unified diff