gvsig-lrs / org.gvsig.lrs / trunk / org.gvsig.lrs / org.gvsig.lrs.swing / org.gvsig.lrs.swing.impl / src / main / java / org / gvsig / lrs / swing / impl / JLrsShowMeasuresParamsController.java @ 22
History | View | Annotate | Download (7.61 KB)
1 |
/*
|
---|---|
2 |
* Copyright 2015 DiSiD Technologies S.L.L. All rights reserved.
|
3 |
*
|
4 |
* Project : DiSiD org.gvsig.lrs.swing.impl
|
5 |
* SVN Id : $Id$
|
6 |
*/
|
7 |
package org.gvsig.lrs.swing.impl; |
8 |
|
9 |
import java.awt.event.ActionEvent; |
10 |
import java.awt.event.ActionListener; |
11 |
import java.awt.event.ItemEvent; |
12 |
import java.awt.event.ItemListener; |
13 |
import java.io.File; |
14 |
import java.text.ParseException; |
15 |
import java.util.Iterator; |
16 |
import java.util.Locale; |
17 |
|
18 |
import javax.swing.ComboBoxModel; |
19 |
import javax.swing.DefaultComboBoxModel; |
20 |
import javax.swing.JComponent; |
21 |
import javax.swing.JFormattedTextField; |
22 |
import javax.swing.JOptionPane; |
23 |
import javax.swing.ListCellRenderer; |
24 |
import javax.swing.text.MaskFormatter; |
25 |
|
26 |
import org.apache.commons.io.FileUtils; |
27 |
import org.apache.commons.lang3.StringUtils; |
28 |
import org.cresques.cts.IProjection; |
29 |
import org.gvsig.fmap.dal.DALLocator; |
30 |
import org.gvsig.fmap.dal.DataManager; |
31 |
import org.gvsig.fmap.dal.DataStoreParameters; |
32 |
import org.gvsig.fmap.dal.exception.DataException; |
33 |
import org.gvsig.fmap.dal.exception.ReadException; |
34 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
35 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
36 |
import org.gvsig.fmap.dal.feature.Feature; |
37 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
38 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
39 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
40 |
import org.gvsig.fmap.dal.feature.FeatureType; |
41 |
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters; |
42 |
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters; |
43 |
import org.gvsig.fmap.geom.DataTypes; |
44 |
import org.gvsig.fmap.geom.Geometry; |
45 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
46 |
import org.gvsig.fmap.geom.Geometry.TYPES; |
47 |
import org.gvsig.fmap.geom.GeometryException; |
48 |
import org.gvsig.fmap.geom.GeometryLocator; |
49 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
50 |
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection; |
51 |
import org.gvsig.fmap.mapcontext.layers.operations.LayersVisitor; |
52 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
53 |
import org.gvsig.lrs.lib.api.DistanceUnits; |
54 |
import org.gvsig.lrs.lib.api.LrsAlgorithmParams; |
55 |
import org.gvsig.lrs.lib.api.LrsAlgorithmsLocator; |
56 |
import org.gvsig.lrs.lib.api.LrsAlgorithmsManager; |
57 |
import org.gvsig.lrs.lib.api.LrsCalibrateRouteAlgorithmParams; |
58 |
import org.gvsig.lrs.lib.api.LrsMeasureCalculationMethods; |
59 |
import org.gvsig.lrs.lib.api.LrsShowMeasuresAlgorithmParams; |
60 |
import org.gvsig.lrs.lib.api.exceptions.LrsGettingParametersException; |
61 |
import org.gvsig.lrs.lib.api.exceptions.LrsNeededParameterException; |
62 |
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams; |
63 |
import org.gvsig.tools.ToolsLocator; |
64 |
import org.gvsig.tools.exception.BaseException; |
65 |
import org.gvsig.tools.i18n.I18nManager; |
66 |
import org.gvsig.tools.locator.LocatorException; |
67 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
68 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
69 |
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager; |
70 |
import org.gvsig.tools.visitor.VisitCanceledException; |
71 |
import org.slf4j.Logger; |
72 |
import org.slf4j.LoggerFactory; |
73 |
|
74 |
public class JLrsShowMeasuresParamsController extends JLrsShowMeasuresParamsView implements JLrsAlgorithmParams{ |
75 |
|
76 |
/**
|
77 |
*
|
78 |
*/
|
79 |
private static final Logger logger = LoggerFactory.getLogger(JLrsShowMeasuresParamsController.class); |
80 |
|
81 |
private boolean canceled; |
82 |
private ActionListenerSupport listeners = ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
|
83 |
|
84 |
private FLayer layer;
|
85 |
|
86 |
/**
|
87 |
* @param layers
|
88 |
* @throws LrsNeededParameterException
|
89 |
*
|
90 |
*/
|
91 |
public JLrsShowMeasuresParamsController(FLayer layer, LrsAlgorithmParams params) throws LrsNeededParameterException { |
92 |
super();
|
93 |
this.layer = layer;
|
94 |
initComponents(); |
95 |
translate(); |
96 |
setParams(params); |
97 |
} |
98 |
|
99 |
public void addActionListener(ActionListener listener) { |
100 |
listeners.addActionListener(listener); |
101 |
} |
102 |
|
103 |
public void removeActionListener(ActionListener listener) { |
104 |
listeners.removeActionListener(listener); |
105 |
} |
106 |
|
107 |
private void translate() { |
108 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
109 |
|
110 |
lblDistance.setText(i18nManager.getTranslation(lblDistance.getText())); |
111 |
|
112 |
btnAccept.setText(i18nManager.getTranslation(btnAccept.getText())); |
113 |
btnCancel.setText(i18nManager.getTranslation(btnCancel.getText())); |
114 |
|
115 |
} |
116 |
|
117 |
/**
|
118 |
*
|
119 |
*/
|
120 |
public void setLocate(Locale locale) { |
121 |
Locale l = super.getLocale(); |
122 |
if (!l.equals(locale)) {
|
123 |
translate(); |
124 |
} |
125 |
super.setLocale(locale);
|
126 |
} |
127 |
|
128 |
/**
|
129 |
* Validates one curve M-layer with selected features
|
130 |
* if it is not correct throws an exception
|
131 |
* @throws LrsNeededParameterException
|
132 |
*/
|
133 |
public static void validateLayer(FLayer layer)throws LrsNeededParameterException { |
134 |
logger.debug("Validating layer for Show Measures");
|
135 |
if (layer==null){ |
136 |
logger.error("At least a layer is needed");
|
137 |
throw new LrsNeededParameterException("at_least_one_layer_needed", null); |
138 |
} |
139 |
|
140 |
if (!JLrsUtils.hasMLayersWithSelectedFeatures(layer)){
|
141 |
logger.error("Impossible to find the layer needed");
|
142 |
throw new LrsNeededParameterException("impossible_to_find_needed_layer",null); |
143 |
} |
144 |
|
145 |
|
146 |
} |
147 |
|
148 |
/**
|
149 |
* @throws LrsNeededParameterException
|
150 |
*/
|
151 |
private void initComponents() throws LrsNeededParameterException { |
152 |
|
153 |
validateLayer(layer); |
154 |
|
155 |
txtDistance.setText(new Double(0).toString()); |
156 |
|
157 |
this.btnAccept.addActionListener(new ActionListener() { |
158 |
|
159 |
public void actionPerformed(ActionEvent e) { |
160 |
canceled = false;
|
161 |
doClose(); |
162 |
listeners.fireActionEvent(new ActionEvent(JLrsShowMeasuresParamsController.this, 0, "accept")); |
163 |
|
164 |
} |
165 |
}); |
166 |
|
167 |
this.btnCancel.addActionListener(new ActionListener() { |
168 |
|
169 |
public void actionPerformed(ActionEvent e) { |
170 |
canceled = true;
|
171 |
doClose(); |
172 |
listeners.fireActionEvent(new ActionEvent(JLrsShowMeasuresParamsController.this, 0, "cancel")); |
173 |
} |
174 |
}); |
175 |
|
176 |
setVisibleAceptCancel(false);
|
177 |
canceled = false;
|
178 |
} |
179 |
|
180 |
|
181 |
|
182 |
private void doClose() { |
183 |
this.setVisible(false); |
184 |
} |
185 |
|
186 |
public boolean isCanceled() { |
187 |
return this.canceled; |
188 |
} |
189 |
|
190 |
public void setVisibleAceptCancel(boolean visible) { |
191 |
this.btnAccept.setVisible(visible);
|
192 |
this.btnCancel.setVisible(visible);
|
193 |
} |
194 |
|
195 |
public boolean getVisibleAceptCancel() { |
196 |
return this.btnAccept.isVisible(); |
197 |
} |
198 |
|
199 |
public JComponent asJComponent() { |
200 |
return this; |
201 |
} |
202 |
|
203 |
public LrsAlgorithmParams getParams() throws LrsGettingParametersException, LrsNeededParameterException { |
204 |
LrsAlgorithmsManager manager = LrsAlgorithmsLocator.getLrsAlgorithmsManager(); |
205 |
LrsShowMeasuresAlgorithmParams params = manager.createLrsShowMeasuresAlgorithmParams(); |
206 |
// Recorrer todo del interfaz y rellenar los parametros
|
207 |
|
208 |
try {
|
209 |
Double distance = Double.valueOf(this.txtDistance.getText()); |
210 |
params.setDistance((Double)distance);
|
211 |
} catch (Exception e) { |
212 |
params.setDistance(1);
|
213 |
} |
214 |
|
215 |
return params;
|
216 |
} |
217 |
|
218 |
public void setParams(LrsAlgorithmParams params) { |
219 |
if (params == null) { |
220 |
clear(); |
221 |
return;
|
222 |
} |
223 |
// Rellena los campos con los valores de params
|
224 |
LrsShowMeasuresAlgorithmParams parameters = (LrsShowMeasuresAlgorithmParams) params; |
225 |
|
226 |
this.txtDistance.setText(Double.toString(parameters.getDistance())); |
227 |
|
228 |
} |
229 |
|
230 |
public void clear() { |
231 |
|
232 |
this.txtDistance.setText(Double.toString(1.0)); |
233 |
|
234 |
} |
235 |
|
236 |
|
237 |
|
238 |
} |