Revision 364

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polarmatrix/src/main/java/org/gvsig/vectorediting/lib/prov/polarmatrix/PolarMatrixEditingProvider.java
200 200
            ISymbol auxiliaryLineSymbolEditing =
201 201
                editingProviderManager
202 202
                    .getSymbol("auxiliary-line-symbol-editing");
203
            ISymbol lineSymbolEditing =
204
                editingProviderManager.getSymbol("line-symbol-editing");
205
            ISymbol polygonSymbolEditing =
206
                editingProviderManager.getSymbol("polygon-symbol-editing");
207 203

  
208 204
            try {
209 205

  
......
261 257

  
262 258
                    for (int i = 0; i < matrix.length; i++) {
263 259

  
264
                        ISymbol symbol = null;
265
                        if (matrix[i] instanceof Curve
266
                            || matrix[i] instanceof MultiCurve) {
267
                            symbol = lineSymbolEditing;
268
                        } else if (matrix[i] instanceof Surface
269
                            || matrix[i] instanceof MultiSurface) {
270
                            symbol = polygonSymbolEditing;
271
                        } else if (matrix[i] instanceof Point
272
                            || matrix[i] instanceof MultiPoint) {
273
                            symbol = auxiliaryPointSymbolEditing;
274
                        }
260
                        ISymbol symbol = getSymbol(matrix[i]);
275 261

  
276 262
                        if (matrix[i] instanceof Aggregate) {
277 263
                            int primitivesNumber =
......
282 268
                                    symbol, "");
283 269
                            }
284 270
                        } else {
285
                            drawingStatus.addStatus(matrix[i],symbol,"");
271
                            drawingStatus.addStatus(matrix[i], symbol, "");
286 272
                        }
287 273
                    }
288 274
                }
......
295 281
        return drawingStatus;
296 282
    }
297 283

  
284
    private ISymbol getSymbol(Geometry geometry) {
285

  
286
        EditingProviderManager editingProviderManager =
287
            EditingProviderLocator.getProviderManager();
288
        ISymbol auxiliaryPointSymbolEditing =
289
            editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
290
        ISymbol lineSymbolEditing =
291
            editingProviderManager.getSymbol("line-symbol-editing");
292
        ISymbol polygonSymbolEditing =
293
            editingProviderManager.getSymbol("polygon-symbol-editing");
294

  
295
        if (geometry instanceof Curve || geometry instanceof MultiCurve) {
296
            return lineSymbolEditing;
297
        } else if (geometry instanceof Surface
298
            || geometry instanceof MultiSurface) {
299
            return polygonSymbolEditing;
300
        } else if (geometry instanceof Point || geometry instanceof MultiPoint) {
301
            return auxiliaryPointSymbolEditing;
302
        }
303
        return null;
304
    }
305

  
298 306
    private ISimpleTextSymbol getTextSymbol() {
299 307
        SymbologyManager symbologyManager =
300 308
            SymbologyLocator.getSymbologyManager();
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.rectangularmatrix/src/main/java/org/gvsig/vectorediting/lib/prov/rectangularmatrix/RectangularMatrixEditingProvider.java
36 36
import org.gvsig.fmap.dal.feature.FeatureSelection;
37 37
import org.gvsig.fmap.dal.feature.FeatureStore;
38 38
import org.gvsig.fmap.geom.Geometry;
39
import org.gvsig.fmap.geom.GeometryLocator;
40
import org.gvsig.fmap.geom.GeometryManager;
41
import org.gvsig.fmap.geom.aggregate.Aggregate;
42
import org.gvsig.fmap.geom.aggregate.MultiCurve;
43
import org.gvsig.fmap.geom.aggregate.MultiPoint;
44
import org.gvsig.fmap.geom.aggregate.MultiSurface;
45
import org.gvsig.fmap.geom.primitive.Curve;
39 46
import org.gvsig.fmap.geom.primitive.Point;
47
import org.gvsig.fmap.geom.primitive.Surface;
48
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
49
import org.gvsig.symbology.SymbologyLocator;
50
import org.gvsig.symbology.SymbologyManager;
51
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.ISimpleTextSymbol;
52
import org.gvsig.tools.ToolsLocator;
40 53
import org.gvsig.tools.dispose.DisposableIterator;
41 54
import org.gvsig.tools.dynobject.DynObject;
42 55
import org.gvsig.tools.exception.BaseException;
56
import org.gvsig.tools.i18n.I18nManager;
43 57
import org.gvsig.tools.service.spi.ProviderServices;
44 58
import org.gvsig.tools.visitor.VisitCanceledException;
45 59
import org.gvsig.tools.visitor.Visitor;
......
55 69
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
56 70
import org.gvsig.vectorediting.lib.spi.EditingProvider;
57 71
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
72
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
73
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
58 74
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
59 75

  
60 76
/**
......
101 117
                EditingServiceParameter.TYPE.SELECTION);
102 118

  
103 119
        this.basePoint =
104
            new DefaultEditingServiceParameter("indicate_new_point", "indicate_new_point",
105
                EditingServiceParameter.TYPE.POSITION);
120
            new DefaultEditingServiceParameter("indicate_new_point",
121
                "indicate_new_point", EditingServiceParameter.TYPE.POSITION);
106 122

  
107 123
        this.columns =
108
            new DefaultEditingServiceParameter("columns_number", "columns_number",
109
                EditingServiceParameter.TYPE.VALUE);
124
            new DefaultEditingServiceParameter("columns_number",
125
                "columns_number", EditingServiceParameter.TYPE.VALUE);
110 126

  
111 127
        this.rows =
112 128
            new DefaultEditingServiceParameter("rows_number", "rows_number",
......
114 130

  
115 131
        this.columnSpacing =
116 132
            new DefaultEditingServiceParameter("space_between_columns",
117
                "spacing_between_columns", EditingServiceParameter.TYPE.VALUE,
133
                "space_between_columns", EditingServiceParameter.TYPE.VALUE,
118 134
                EditingServiceParameter.TYPE.POSITION);
119 135

  
120 136
        this.rowSpacing =
121 137
            new DefaultEditingServiceParameter("space_between_rows",
122
                "spacing_between_rows", EditingServiceParameter.TYPE.VALUE,
138
                "space_between_rows", EditingServiceParameter.TYPE.VALUE,
123 139
                EditingServiceParameter.TYPE.POSITION);
124 140
    }
125 141

  
......
145 161

  
146 162
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
147 163

  
164
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
165
        I18nManager i18nManager = ToolsLocator.getI18nManager();
166

  
148 167
        FeatureSelection featureSelection =
149 168
            (FeatureSelection) values.get(selection);
150 169
        Integer columnsValue = (Integer) values.get(columns);
......
156 175
        if (featureSelection != null && columnsValue != null
157 176
            && rowsValue != null && basePointValue != null) {
158 177

  
178
            int subtype = basePointValue.getGeometryType().getSubType();
179

  
159 180
            if (spacingColumnsValue == null) {
160 181
                spacingColumnsValue =
161 182
                    mousePosition.getX() - basePointValue.getX();
......
165 186
                spacingRowsValue = mousePosition.getY() - basePointValue.getY();
166 187
            }
167 188

  
189
            // Creation of symbology
190
            EditingProviderManager editingProviderManager =
191
                EditingProviderLocator.getProviderManager();
192
            ISymbol auxiliaryPointSymbolEditing =
193
                editingProviderManager
194
                    .getSymbol("auxiliary-point-symbol-editing");
195

  
196
            // Create base point indicator
197
            drawingStatus.addStatus(basePointValue,
198
                auxiliaryPointSymbolEditing, "");
199

  
200
            // Create distance text indicator
201
            try {
202
                double textDistance =
203
                    basePointValue.distance(mousePosition) / 6;
204
                String columnsText =
205
                    i18nManager.getTranslation("space_between_columns")
206
                        .concat(" ")
207
                        .concat(String.valueOf(spacingColumnsValue));
208
                Geometry pointText =
209
                    geometryManager.createPoint(
210
                        mousePosition.getX() + textDistance
211
                            * Math.cos(Math.PI / 4),
212
                        mousePosition.getY() + textDistance
213
                            * Math.sin(Math.PI / 4), subtype);
214

  
215
                drawingStatus
216
                    .addStatus(pointText, getTextSymbol(), columnsText);
217

  
218
                String rowsText =
219
                    i18nManager.getTranslation("space_between_rows")
220
                        .concat(" ").concat(String.valueOf(spacingRowsValue));
221
                pointText =
222
                    geometryManager.createPoint(
223
                        mousePosition.getX() + textDistance
224
                            * Math.cos(Math.PI / 4),
225
                        mousePosition.getY() + textDistance
226
                            * Math.sin(3 * Math.PI / 2), subtype);
227

  
228
                drawingStatus.addStatus(pointText, getTextSymbol(), rowsText);
229

  
230
            } catch (BaseException e) {
231
                throw new DrawServiceException(e);
232
            }
233

  
168 234
            DisposableIterator it = null;
169 235
            try {
170 236
                it = featureSelection.fastIterator();
......
178 244

  
179 245
                    for (int i = 0; i < matrix.length; i++) {
180 246
                        for (int j = 0; j < matrix[i].length; j++) {
181
                            drawingStatus.addGeometry(matrix[i][j]);
247

  
248
                            ISymbol symbol = getSymbol(matrix[i][j]);
249

  
250
                            if (matrix[i][j] instanceof Aggregate) {
251
                                int primitivesNumber =
252
                                    ((Aggregate) matrix[i][j])
253
                                        .getPrimitivesNumber();
254
                                for (int k = 0; k < primitivesNumber; k++) {
255
                                    drawingStatus.addStatus(
256
                                        ((Aggregate) matrix[i][j])
257
                                            .getPrimitiveAt(k), symbol, "");
258
                                }
259
                            } else {
260
                                drawingStatus.addStatus(matrix[i][j], symbol,
261
                                    "");
262
                            }
182 263
                        }
183 264
                    }
184 265
                }
......
191 272
        return drawingStatus;
192 273
    }
193 274

  
275
    private ISymbol getSymbol(Geometry geometry) {
276

  
277
        EditingProviderManager editingProviderManager =
278
            EditingProviderLocator.getProviderManager();
279
        ISymbol auxiliaryPointSymbolEditing =
280
            editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
281
        ISymbol lineSymbolEditing =
282
            editingProviderManager.getSymbol("line-symbol-editing");
283
        ISymbol polygonSymbolEditing =
284
            editingProviderManager.getSymbol("polygon-symbol-editing");
285

  
286
        if (geometry instanceof Curve || geometry instanceof MultiCurve) {
287
            return lineSymbolEditing;
288
        } else if (geometry instanceof Surface
289
            || geometry instanceof MultiSurface) {
290
            return polygonSymbolEditing;
291
        } else if (geometry instanceof Point || geometry instanceof MultiPoint) {
292
            return auxiliaryPointSymbolEditing;
293
        }
294
        return null;
295
    }
296

  
297
    private ISimpleTextSymbol getTextSymbol() {
298
        SymbologyManager symbologyManager =
299
            SymbologyLocator.getSymbologyManager();
300
        ISimpleTextSymbol textSymbol =
301
            symbologyManager.createSimpleTextSymbol();
302
        textSymbol.setFontSize(10);
303
        return textSymbol;
304
    }
305

  
194 306
    private Geometry[][] createRectangularMatrix(Geometry geometry,
195 307
        int columnsValue, int rowsValue, Point basePointValue,
196 308
        double spacingColumns, double spacingRows) throws BaseException {
......
345 457
    public void start() throws StartServiceException, InvalidEntryException {
346 458
        values = new HashMap<EditingServiceParameter, Object>();
347 459
        FeatureSelection selected = null;
348
        if (featureStore != null && selection == null) {
460
        if (featureStore != null && values.get(selection) == null) {
349 461
            try {
350 462
                selected = featureStore.getFeatureSelection();
351 463
            } catch (DataException e) {
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/i18n/text.properties
106 106
key_b_splines = 3
107 107
columns_number = N\u00famero de columnas
108 108
rows_number = N\u00famero de filas
109
spacing_between_columns = Espacio entre columnas
110
spacing_between_rows = Espacio entre filas
109
space_between_columns = Espacio entre columnas
110
space_between_rows = Espacio entre filas
111 111
key_yes= S
112 112
key_no = N
113 113
yes = Si
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
106 106
key_b_splines = 3
107 107
columns_number = Number of columns
108 108
rows_number = Number of rows
109
spacing_between_columns = Space between columns
110
spacing_between_rows = Space between rows
109
space_between_columns = Space between columns
110
space_between_rows = Space between rows
111 111
key_yes= Y
112 112
key_no = N
113 113
yes = Yes

Also available in: Unified diff