Statistics
| Revision:

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
}