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
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