Revision 11613 branches/v10/extensions/extAnnotations/src/com/iver/cit/gvsig/project/documents/view/legend/gui/FThemeManagerWindow2.java

View differences:

FThemeManagerWindow2.java
107 107
 * @author jmorell (jose.morell@gmail.com)
108 108
 * @version 24-ene-2005
109 109
 */
110
public final class FThemeManagerWindow2 extends AbstractPanel implements IWindow {
110
public final class FThemeManagerWindow2 extends AbstractPanel implements
111
		IWindow {
111 112
	private MapContext mapContext;
113

  
112 114
	private FLayer layer;
113
    private Legend renderer; // Le asignaremos la leyenda del primer tema activo.
115

  
116
	private Legend renderer; // Le asignaremos la leyenda del primer tema
117
								// activo.
118

  
114 119
	private FPanelScaleManager fPanelScaleManager;
115
    private FPanelLegendManager fPanelLegendManager;
116
    private PanelLegendAnnotation panelLegendAnnotation;
117
    private LinkPanel linkPanel;
118
    private JTabbedPane organizador = new JTabbedPane();  //  @jve:decl-index=0:
119
    private ComandosListener m_actionListener = new ComandosListener(this);
120
	//private ProjectView view;
120

  
121
	private FPanelLegendManager fPanelLegendManager;
122

  
123
	private PanelLegendAnnotation panelLegendAnnotation;
124

  
125
	private LinkPanel linkPanel;
126

  
127
	private JTabbedPane organizador = new JTabbedPane(); // @jve:decl-index=0:
128

  
129
	private ComandosListener m_actionListener = new ComandosListener(this);
130

  
131
	// private ProjectView view;
121 132
	private NumberFormat nf = NumberFormat.getInstance();
122 133

  
123
    /**
124
     * Creates new form JPanel
125
     */
126
    public FThemeManagerWindow2() {
127
        initialize();
134
	/**
135
	 * Creates new form JPanel
136
	 */
137
	public FThemeManagerWindow2() {
138
		initialize();
128 139
		this.setSize(650, 420);
129
    }
140
	}
130 141

  
131
    /**
132
     * Sobrecarga del constructor. Este se utiliza cuando se llama a este
133
     * di?logo desde la barra de comandos.
134
     *
135
     */
136
    public FThemeManagerWindow2(FLayer l, MapContext fMap) {
137
    	layer = l;
138
    	mapContext = fMap;
139
    	initialize();
140
    	try {
142
	/**
143
	 * Sobrecarga del constructor. Este se utiliza cuando se llama a este
144
	 * di?logo desde la barra de comandos.
145
	 * 
146
	 */
147
	public FThemeManagerWindow2(FLayer l, MapContext fMap) {
148
		layer = l;
149
		mapContext = fMap;
150
		initialize();
151
		try {
141 152
			ClassifiableVectorial aux = (ClassifiableVectorial) layer;
142 153
			renderer = (Legend) aux.getLegend().cloneLegend();
143 154
			fPanelScaleManager.setMapContext(mapContext);
......
150 161
			e1.printStackTrace();
151 162
		}
152 163

  
153
        fPanelScaleManager.setLayer(layer, renderer);
154
        if (!(layer instanceof Annotation_Layer)){
155
        	fPanelLegendManager.setLayer(layer, renderer);
156
        }
157
        organizador.setSelectedIndex(0);
164
		fPanelScaleManager.setLayer(layer, renderer);
165
		if (!(layer instanceof Annotation_Layer)) {
166
			fPanelLegendManager.setLayer(layer, renderer);
167
		}
168
		organizador.setSelectedIndex(0);
158 169

  
159 170
		this.setSize(650, 420);
160
    }
171
	}
161 172

  
162 173
	/**
163 174
	 * This method initializes this
164
	 *
175
	 * 
165 176
	 * @return void
166 177
	 */
167
	private  void initialize() {
178
	private void initialize() {
168 179

  
169 180
		fPanelScaleManager = new FPanelScaleManager();
170 181
		fPanelLegendManager = new FPanelLegendManager();
171
		panelLegendAnnotation=new PanelLegendAnnotation();
182
		panelLegendAnnotation = new PanelLegendAnnotation();
172 183

  
173
		organizador.addTab(PluginServices.getText(this,"General"), fPanelScaleManager);
174
		if (layer instanceof Annotation_Layer){
175
			organizador.addTab(PluginServices.getText(this,"annotations"),panelLegendAnnotation);
176
		}else{
177
			organizador.addTab(PluginServices.getText(this,"Simbologia"), fPanelLegendManager);
184
		organizador.addTab(PluginServices.getText(this, "General"),
185
				fPanelScaleManager);
186
		if (layer instanceof Annotation_Layer) {
187
			organizador.addTab(PluginServices.getText(this, "annotations"),
188
					panelLegendAnnotation);
189
		} else {
190
			organizador.addTab(PluginServices.getText(this, "Simbologia"),
191
					fPanelLegendManager);
178 192
		}
179
        JPanel panelButtons = new JPanel();
193
		JPanel panelButtons = new JPanel();
180 194

  
181
        JButton btnAceptar = new JButton(PluginServices.getText(this,"Aceptar"));
182
        btnAceptar.setActionCommand("OK");
183
        btnAceptar.addActionListener(m_actionListener);
195
		JButton btnAceptar = new JButton(PluginServices
196
				.getText(this, "Aceptar"));
197
		btnAceptar.setActionCommand("OK");
198
		btnAceptar.addActionListener(m_actionListener);
184 199

  
185
        JButton btnApply = new JButton(PluginServices.getText(this,"Aplicar"));
186
        btnApply.setActionCommand("APPLY");
187
        btnApply.addActionListener(m_actionListener);
200
		JButton btnApply = new JButton(PluginServices.getText(this, "Aplicar"));
201
		btnApply.setActionCommand("APPLY");
202
		btnApply.addActionListener(m_actionListener);
188 203

  
189
        JButton btnSaveLegend = new JButton(PluginServices.getText(this,"Guardar_leyenda")+"...");
190
        btnSaveLegend.setActionCommand("SAVE_LEGEND");
191
        btnSaveLegend.addActionListener(m_actionListener);
204
		JButton btnSaveLegend = new JButton(PluginServices.getText(this,
205
				"Guardar_leyenda")
206
				+ "...");
207
		btnSaveLegend.setActionCommand("SAVE_LEGEND");
208
		btnSaveLegend.addActionListener(m_actionListener);
192 209

  
193
        JButton btnLoadLegend = new JButton(PluginServices.getText(this,"Recuperar_leyenda")+"...");
194
        btnLoadLegend.setActionCommand("LOAD_LEGEND");
195
        btnLoadLegend.addActionListener(m_actionListener);
210
		JButton btnLoadLegend = new JButton(PluginServices.getText(this,
211
				"Recuperar_leyenda")
212
				+ "...");
213
		btnLoadLegend.setActionCommand("LOAD_LEGEND");
214
		btnLoadLegend.addActionListener(m_actionListener);
196 215

  
197
        JButton btnCancelar = new JButton(PluginServices.getText(this,"Cerrar"));
198
        btnCancelar.setActionCommand("CANCEL");
199
        btnCancelar.addActionListener(m_actionListener);
216
		JButton btnCancelar = new JButton(PluginServices
217
				.getText(this, "Cerrar"));
218
		btnCancelar.setActionCommand("CANCEL");
219
		btnCancelar.addActionListener(m_actionListener);
200 220

  
201
        panelButtons.add(btnApply, null);
221
		panelButtons.add(btnApply, null);
202 222

  
203 223
		setLayout(new BorderLayout());
204 224
		panelButtons.setLayout(null);
205
		organizador.setPreferredSize(new java.awt.Dimension(640,390));
225
		organizador.setPreferredSize(new java.awt.Dimension(640, 390));
206 226
		btnAceptar.setBounds(9, 5, 89, 23);
207 227
		btnApply.setBounds(107, 5, 89, 23);
208 228
		btnSaveLegend.setBounds(205, 5, 159, 23);
209 229
		btnLoadLegend.setBounds(373, 5, 159, 23);
210 230
		btnCancelar.setBounds(541, 5, 89, 23);
211
		panelButtons.setPreferredSize(new java.awt.Dimension(493,33));
231
		panelButtons.setPreferredSize(new java.awt.Dimension(493, 33));
212 232
		add(organizador, java.awt.BorderLayout.NORTH);
213 233
		panelButtons.add(btnAceptar, null);
214 234
		add(panelButtons, java.awt.BorderLayout.SOUTH);
215 235
		panelButtons.add(btnSaveLegend, null);
216 236
		panelButtons.add(btnLoadLegend, null);
217 237
		panelButtons.add(btnCancelar, null);
218
//		if (!(layer instanceof Annotation_Layer)){
219
//			btnSaveLegend.setEnabled(false);
220
//			btnLoadLegend.setEnabled(false);
221
//		}
238
		// if (!(layer instanceof Annotation_Layer)){
239
		// btnSaveLegend.setEnabled(false);
240
		// btnLoadLegend.setEnabled(false);
241
		// }
222 242
	}
223 243

  
224

  
225

  
226
    /**
227
     * En esta funci?n se coge el primer tema activo del TOC y se usa su
228
     * renderer para inicializar. Hay que llamarla SIEMPRE que se abra el
229
     * cuadro de di?logo, en el  openLegendManager() de la vista.
230
     *
231
     * @param mapContext TOC que abre este cuadro de di?logo.
232
     * @throws DriverException
233
     */
234
    public void setMapContext(MapContext mapContext) throws DriverException {
235
        this.mapContext = mapContext;
236
        layer = getFirstActiveLayerVect(mapContext.getLayers());
244
	/**
245
	 * En esta funci?n se coge el primer tema activo del TOC y se usa su
246
	 * renderer para inicializar. Hay que llamarla SIEMPRE que se abra el cuadro
247
	 * de di?logo, en el openLegendManager() de la vista.
248
	 * 
249
	 * @param mapContext
250
	 *            TOC que abre este cuadro de di?logo.
251
	 * @throws DriverException
252
	 */
253
	public void setMapContext(MapContext mapContext) throws DriverException {
254
		this.mapContext = mapContext;
255
		layer = getFirstActiveLayerVect(mapContext.getLayers());
237 256
		try {
238 257
			ClassifiableVectorial aux = (ClassifiableVectorial) layer;
239 258
			renderer = (Legend) aux.getLegend().cloneLegend();
......
242 261
			e.printStackTrace();
243 262
		}
244 263
		fPanelScaleManager.setMapContext(mapContext);
245
		if (!(layer instanceof Annotation_Layer)){
246
	      	fPanelLegendManager.setMapContext(mapContext);
247
	    }
248
        actualizar();
249
    }
264
		if (!(layer instanceof Annotation_Layer)) {
265
			fPanelLegendManager.setMapContext(mapContext);
266
		}
267
		actualizar();
268
	}
250 269

  
251
    /**
252
     * DOCUMENT ME!
253
     */
254
    private void actualizar() {
255
    	FLayer lyrSelected = getFirstActiveLayerVect(mapContext.getLayers());
270
	/**
271
	 * DOCUMENT ME!
272
	 */
273
	private void actualizar() {
274
		FLayer lyrSelected = getFirstActiveLayerVect(mapContext.getLayers());
256 275

  
257
        fPanelScaleManager.setLayer(lyrSelected, renderer);
258
        if ((layer instanceof Annotation_Layer)){
259
        	panelLegendAnnotation.setLayer(lyrSelected,renderer);
260
        }else{
261
        	fPanelLegendManager.setLayer(lyrSelected, renderer);
262
        }
263
        organizador.setSelectedIndex(0);
264
    }
276
		fPanelScaleManager.setLayer(lyrSelected, renderer);
277
		if ((layer instanceof Annotation_Layer)) {
278
			panelLegendAnnotation.setLayer(lyrSelected, renderer);
279
		} else {
280
			fPanelLegendManager.setLayer(lyrSelected, renderer);
281
		}
282
		organizador.setSelectedIndex(0);
283
	}
265 284

  
266
    private void btnApply_actionPerformed(ActionEvent evt) {
267
       // ClassifiableVectorial aux = (ClassifiableVectorial) layer;
285
	private void btnApply_actionPerformed(ActionEvent evt) {
286
		// ClassifiableVectorial aux = (ClassifiableVectorial) layer;
268 287

  
269

  
270
    	switch (fPanelLegendManager.getVisibleCard()) {
271
        case 0: // default symbol
272
            renderer = fPanelLegendManager.getM_defaultLegendPanel().getLegend();
273
            fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + PluginServices.getText(this,"_(Simbolo_unico)"));
274
            break;
275
        case 1: // Unique Values
276
            renderer = fPanelLegendManager.getM_valuesLegendPanel().getLegend();
277
            fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Valores_unicos)");
278
            break;
279
        case 2:// break values
280
           	renderer = fPanelLegendManager.getM_breaksLegendPanel().getLegend();
281
            fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Intervalos)");
282
           	break;
283
        case 3://text
284
        	fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Etiquetas_estandar)");
285
        }
286
        // System.out.println("Color punto 1 " + renderer.getDefaultSymbol().getColor().toString());
287
    	// fPanelLegendManager.getM_labelsLegendPanel().setFSymbol(renderer.getDefaultSymbol());
288
    	// boolean bShapesVisibles = renderer.getDefaultSymbol().isShapeVisible();
289
    	fPanelLegendManager.getM_labelsLegendPanel().updateValuesFromControls((VectorialLegend)renderer);
290
    	// renderer.getDefaultSymbol().setShapeVisible(bShapesVisibles);
291
        // System.out.println("Color punto 2 " + renderer.getDefaultSymbol().getColor().toString());
292
        try {
288
		switch (fPanelLegendManager.getVisibleCard()) {
289
		case 0: // default symbol
290
			renderer = fPanelLegendManager.getM_defaultLegendPanel()
291
					.getLegend();
292
			fPanelLegendManager.getJComboBox().getModel().setSelectedItem(
293
					layer.getName()
294
							+ PluginServices.getText(this, "_(Simbolo_unico)"));
295
			break;
296
		case 1: // Unique Values
297
			renderer = fPanelLegendManager.getM_valuesLegendPanel().getLegend();
298
			fPanelLegendManager.getJComboBox().getModel().setSelectedItem(
299
					layer.getName() + "_(Valores_unicos)");
300
			break;
301
		case 2:// break values
302
			renderer = fPanelLegendManager.getM_breaksLegendPanel().getLegend();
303
			fPanelLegendManager.getJComboBox().getModel().setSelectedItem(
304
					layer.getName() + "_(Intervalos)");
305
			break;
306
		case 3:// text
307
			fPanelLegendManager.getJComboBox().getModel().setSelectedItem(
308
					layer.getName() + "_(Etiquetas_estandar)");
309
		}
310
		// System.out.println("Color punto 1 " +
311
		// renderer.getDefaultSymbol().getColor().toString());
312
		// fPanelLegendManager.getM_labelsLegendPanel().setFSymbol(renderer.getDefaultSymbol());
313
		// boolean bShapesVisibles =
314
		// renderer.getDefaultSymbol().isShapeVisible();
315
		fPanelLegendManager.getM_labelsLegendPanel().updateValuesFromControls(
316
				(VectorialLegend) renderer);
317
		// renderer.getDefaultSymbol().setShapeVisible(bShapesVisibles);
318
		// System.out.println("Color punto 2 " +
319
		// renderer.getDefaultSymbol().getColor().toString());
320
		try {
293 321
			// Intentamos aplicar la leyenda a todas
294
            // las capas activas a las que se les pueda aplicar
295
            FLayer[] activeLyrs =  mapContext.getLayers().getActives();
296
            for (int i=0; i < activeLyrs.length; i++)
297
            {
298
            	FLayer laux=activeLyrs[i];
299
            	if (activeLyrs[i] instanceof FLayers){
300
            		laux=getFirstActiveLayerVect((FLayers)activeLyrs[i]);
301
            	}
302
                if (laux instanceof ClassifiableVectorial)
303
                {
304
                    ClassifiableVectorial aux2 = (ClassifiableVectorial) laux;
305
                    if (renderer instanceof ClassifiedLegend)
306
                    {
307
                        // Es una leyenda que necesita un recordset con un
308
                        // nombre de campo. Comprobamos que ese recordset
309
                        // tiene ese nombre de campo y es del tipo esperado
310
                        ClassifiedLegend cl = (ClassifiedLegend) renderer;
311
                        if (aux2 instanceof AlphanumericData)
312
                        {
313
                            DataSource rs = ((AlphanumericData) aux2).getRecordset();
314
                            if (cl.getValues().length==0) {
315
                            	JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this,"no_es_posible_aplicar_leyenda_vacia"));
316
                            	return;
317
                            }
318
                            int idField = rs.getFieldIndexByName(cl.getFieldName());
319
                            if (idField != -1)
320
                            {
321
                                //TODO: Aqu? deber?amos comprobar si el tipo de campo
322
                                // es el tipo de campo esperado.
323
                            	/*if (renderer instanceof VectorialUniqueValueLegend){
324
                            		((VectorialUniqueValueLegend)renderer).setLabelHeightField(null);
325
                            		((VectorialUniqueValueLegend)renderer).setLabelRotationField(null);
326
                            	}
327
                            	*/
328
                                aux2.setLegend((VectorialLegend) renderer);
329
                            }
322
			// las capas activas a las que se les pueda aplicar
323
			FLayer[] activeLyrs = mapContext.getLayers().getActives();
324
			for (int i = 0; i < activeLyrs.length; i++) {
325
				FLayer laux = activeLyrs[i];
326
				if (activeLyrs[i] instanceof FLayers) {
327
					laux = getFirstActiveLayerVect((FLayers) activeLyrs[i]);
328
				}
329
				if (laux instanceof ClassifiableVectorial) {
330
					ClassifiableVectorial aux2 = (ClassifiableVectorial) laux;
331
					if (renderer instanceof ClassifiedLegend) {
332
						// Es una leyenda que necesita un recordset con un
333
						// nombre de campo. Comprobamos que ese recordset
334
						// tiene ese nombre de campo y es del tipo esperado
335
						ClassifiedLegend cl = (ClassifiedLegend) renderer;
336
						if (aux2 instanceof AlphanumericData) {
337
							DataSource rs = ((AlphanumericData) aux2)
338
									.getRecordset();
339
							if (cl.getValues().length == 0) {
340
								JOptionPane
341
										.showMessageDialog(
342
												(Component) PluginServices
343
														.getMainFrame(),
344
												PluginServices
345
														.getText(this,
346
																"no_es_posible_aplicar_leyenda_vacia"));
347
								return;
348
							}
349
							int idField = rs.getFieldIndexByName(cl
350
									.getFieldName());
351
							if (idField != -1) {
352
								// TODO: Aqu? deber?amos comprobar si el tipo de
353
								// campo
354
								// es el tipo de campo esperado.
355
								/*
356
								 * if (renderer instanceof
357
								 * VectorialUniqueValueLegend){
358
								 * ((VectorialUniqueValueLegend)renderer).setLabelHeightField(null);
359
								 * ((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); }
360
								 */
361
								aux2.setLegend((VectorialLegend) renderer);
362
							}
330 363

  
331
                        }
332
                    }
333
                    else if (renderer instanceof SingleSymbolLegend)
334
                        aux2.setLegend((VectorialLegend) renderer);
335
                }
364
						}
365
					} else if (renderer instanceof SingleSymbolLegend)
366
						aux2.setLegend((VectorialLegend) renderer);
367
				}
336 368

  
337
            }
369
			}
338 370
			// aux.setLegend((VectorialLegend) m_Renderer);
339 371

  
340 372
		} catch (FieldNotFoundException e) {
......
344 376
			// TODO Auto-generated catch block
345 377
			e.printStackTrace();
346 378
		} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
347
            // TODO Auto-generated catch block
348
            e.printStackTrace();
349
        }
379
			// TODO Auto-generated catch block
380
			e.printStackTrace();
381
		}
350 382

  
351 383
		if (fPanelScaleManager.getJRadioButton1().isSelected()) {
352
			try
353
			{
354
				layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1().getText())).doubleValue());
384
			try {
385
				layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1()
386
						.getText())).doubleValue());
387
			} catch (ParseException ex) {
388
				if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0)
389
					layer.setMinScale(-1);
390
				else
391
					System.err.print(ex.getLocalizedMessage());
355 392
			}
356
			catch (ParseException ex)
357
			{
358
			    if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0)
359
			        layer.setMinScale(-1);
360
			    else
361
			        System.err.print(ex.getLocalizedMessage());
393
			try {
394
				layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2()
395
						.getText())).doubleValue());
396
			} catch (ParseException ex) {
397
				if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0)
398
					layer.setMaxScale(-1);
399
				else
400
					System.err.print(ex.getLocalizedMessage());
362 401
			}
363
			try
364
			{
365
			    layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2().getText())).doubleValue());
366
			}
367
			catch (ParseException ex)
368
			{
369
			    if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0)
370
			        layer.setMaxScale(-1);
371
			    else
372
			        System.err.print(ex.getLocalizedMessage());
373
			}
374 402

  
375 403
		} else {
376
	        layer.setMinScale(-1);
377
	        layer.setMaxScale(-1);
404
			layer.setMinScale(-1);
405
			layer.setMaxScale(-1);
378 406
		}
379
		if (!fPanelScaleManager.getLayerName().equals(layer.getName())){
407
		if (!fPanelScaleManager.getLayerName().equals(layer.getName())) {
380 408
			layer.setName(fPanelScaleManager.getLayerName());
381 409
		}
382
        if (layer instanceof FLyrVect)
383
        {
384
            FLyrVect lyrVect = (FLyrVect) layer;
385
            if (fPanelScaleManager.isSpatialIndexSelected())
386
            {
387
//                if (lyrVect.getSpatialIndex() == null)
388
            	if(lyrVect.getISpatialIndex() == null)
389
                {
390
                	//AZABALA
391
                	try {
392
						PluginServices.
393
							cancelableBackgroundExecution(getCreateSpatialIndexTask());
410
		if (layer instanceof FLyrVect) {
411
			FLyrVect lyrVect = (FLyrVect) layer;
412
			if (fPanelScaleManager.isSpatialIndexSelected()) {
413
				// if (lyrVect.getSpatialIndex() == null)
414
				if (lyrVect.getISpatialIndex() == null) {
415
					// AZABALA
416
					try {
417
						PluginServices
418
								.cancelableBackgroundExecution(getCreateSpatialIndexTask());
394 419
					} catch (DriverIOException e) {
395 420
						// TODO Auto-generated catch block
396 421
						e.printStackTrace();
......
398 423
						// TODO Auto-generated catch block
399 424
						e.printStackTrace();
400 425
					}
401
//                    lyrVect.createSpatialIndex();
402
                }
403
            }
404
            //AZABALA
405
            /*
406
             * If we unselect the spatial index checkbox...Must we delete
407
             * spatial index file, or we only have to put Spatial Index
408
             * reference to null?. I have followed the second choice
409
             */
410
            else{
411
                lyrVect.deleteSpatialIndex();
412
            }
426
					// lyrVect.createSpatialIndex();
427
				}
428
			}
429
			// AZABALA
430
			/*
431
			 * If we unselect the spatial index checkbox...Must we delete
432
			 * spatial index file, or we only have to put Spatial Index
433
			 * reference to null?. I have followed the second choice
434
			 */
435
			else {
436
				lyrVect.deleteSpatialIndex();
437
			}
413 438

  
414

  
415
        }
416
		//layer.getFMap().invalidate();
439
		}
440
		// layer.getFMap().invalidate();
417 441
		layer.getMapContext().callLegendChanged();
418
    }
442
	}
419 443

  
444
	/**
445
	 * Instanciates a ITask (@see com.iver.utiles.swing.threads.ITask) to create
446
	 * a spatial index for the selected layer in background. This task also
447
	 * allow to monitor process evolution, and to cancel this process.
448
	 * 
449
	 * @throws DriverException
450
	 * @throws DriverIOException
451
	 */
452
	public IMonitorableTask getCreateSpatialIndexTask()
453
			throws DriverIOException, DriverException {
420 454

  
421
    /**
422
     * Instanciates a ITask (@see com.iver.utiles.swing.threads.ITask)
423
     * to create a spatial index for the selected layer in background.
424
     * This task also allow to monitor process evolution, and to cancel
425
     * this process.
426
     * @throws DriverException
427
     * @throws DriverIOException
428
     */
429
    public IMonitorableTask getCreateSpatialIndexTask() throws DriverIOException,
430
    															DriverException{
455
		// FIXME REVISAR ESTO (Quizas lanzar TaskException)
456
		return new CreateSpatialIndexMonitorableTask((FLyrVect) layer);
457
	}
431 458

  
432
//    	  FIXME REVISAR ESTO (Quizas lanzar TaskException)
433
			return new CreateSpatialIndexMonitorableTask((FLyrVect)layer);
434
    }
459
	/**
460
	 * DOCUMENT ME!
461
	 * 
462
	 * @author Fernando Gonz?lez Cort?s
463
	 */
464
	private class ComandosListener implements ActionListener {
465
		private FThemeManagerWindow2 fLayerPropertiesWindow;
435 466

  
436
    /**
437
     * DOCUMENT ME!
438
     *
439
     * @author Fernando Gonz?lez Cort?s
440
     */
441
    private class ComandosListener implements ActionListener {
442
        private FThemeManagerWindow2 fLayerPropertiesWindow;
467
		/**
468
		 * Creates a new ComandosListener object.
469
		 * 
470
		 * @param lg
471
		 *            DOCUMENT ME!
472
		 */
473
		public ComandosListener(FThemeManagerWindow2 fLayerPropertiesWindow) {
474
			this.fLayerPropertiesWindow = fLayerPropertiesWindow;
475
		}
443 476

  
444
        /**
445
         * Creates a new ComandosListener object.
446
         *
447
         * @param lg DOCUMENT ME!
448
         */
449
        public ComandosListener(FThemeManagerWindow2 fLayerPropertiesWindow) {
450
        	this.fLayerPropertiesWindow = fLayerPropertiesWindow;
451
        }
477
		/*
478
		 * (non-Javadoc)
479
		 * 
480
		 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
481
		 */
482
		public void actionPerformed(ActionEvent e) {
483
			if (e.getActionCommand() == "OK") {
484
				// Implementaci?n para hacer funcionar el hyperlink ...
485
				// com.iver.cit.gvsig.gui.View theView =
486
				// (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView();
487
				// ProjectView view = theView.getModel();
488
				if (PluginServices.getMainFrame() != null) {
489
					IProjectView view = fPanelScaleManager.getView();
490
					view.setTypeLink(fPanelScaleManager.getLinkType());
491
					if (fPanelScaleManager.getSelectedLinkField() != null) {
492
						view.setSelectedField(fPanelScaleManager
493
								.getSelectedLinkField().toString().trim());
494
						view.setExtLink(fPanelScaleManager.getExtensionLink());
495
					}
496
				}
497
				//
498
				if (layer instanceof Annotation_Layer) {
499
					fLayerPropertiesWindow
500
							.btnApply_actionPerformedAnnotation(e);
501
				} else {
502
					fLayerPropertiesWindow.btnApply_actionPerformed(e);
503
				}
504
				if (PluginServices.getMainFrame() == null)
505
					((JDialog) (getParent().getParent().getParent().getParent()))
506
							.dispose();
507
				else
508
					PluginServices.getMDIManager().closeWindow(
509
							FThemeManagerWindow2.this);
510
				System.out.println("Ok");
511
			} else if (e.getActionCommand() == "CANCEL") {
512
				if (PluginServices.getMainFrame() == null)
513
					((JDialog) (getParent().getParent().getParent().getParent()))
514
							.dispose();
515
				else
516
					PluginServices.getMDIManager().closeWindow(
517
							FThemeManagerWindow2.this);
518
				System.out.println("CANCEL");
519
			} else if (e.getActionCommand() == "APPLY") {
520
				if (layer instanceof Annotation_Layer) {
521
					fLayerPropertiesWindow
522
							.btnApply_actionPerformedAnnotation(e);
523
				} else {
524
					fLayerPropertiesWindow.btnApply_actionPerformed(e);
525
				}
526
				System.out.println("APPLY");
527
			} else if (e.getActionCommand() == "LOAD_LEGEND") {
528
				JFileChooser jfc = new JFileChooser();
529
				jfc.addChoosableFileFilter(new GenericFileFilter("gvl",
530
						PluginServices.getText(this, "tipo_de_leyenda")));
531
				// jfc.addChoosableFileFilter(new
532
				// GenericFileFilter("sld","sld"));
452 533

  
453
        /* (non-Javadoc)
454
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
455
         */
456
        public void actionPerformed(ActionEvent e) {
457
            if (e.getActionCommand() == "OK") {
458
                // Implementaci?n para hacer funcionar el hyperlink ...
459
                //com.iver.cit.gvsig.gui.View theView = (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView();
460
                //ProjectView view = theView.getModel();
461
            	if (PluginServices.getMainFrame() != null)
462
            	{
463
            		IProjectView view = fPanelScaleManager.getView();
464
            		view.setTypeLink(fPanelScaleManager.getLinkType());
465
            		if (fPanelScaleManager.getSelectedLinkField()!=null)
466
            		{
467
            			view.setSelectedField(fPanelScaleManager.getSelectedLinkField().toString().trim());
468
            			view.setExtLink(fPanelScaleManager.getExtensionLink());
469
            		}
470
            	}
471
                //
472
            	if (layer instanceof Annotation_Layer){
473
            		fLayerPropertiesWindow.btnApply_actionPerformedAnnotation(e);
474
                }else{
475
            		fLayerPropertiesWindow.btnApply_actionPerformed(e);
476
            	}
477
            	if (PluginServices.getMainFrame() == null)
478
            		((JDialog) (getParent().getParent().getParent().getParent())).dispose();
479
            	else
480
            		PluginServices.getMDIManager().closeWindow(FThemeManagerWindow2.this);
481
                System.out.println("Ok");
482
            } else if (e.getActionCommand() == "CANCEL") {
483
            	if (PluginServices.getMainFrame() == null)
484
            		((JDialog) (getParent().getParent().getParent().getParent())).dispose();
485
            	else
486
            		PluginServices.getMDIManager().closeWindow(FThemeManagerWindow2.this);
487
                System.out.println("CANCEL");
488
            } else if (e.getActionCommand() == "APPLY") {
489
            	if (layer instanceof Annotation_Layer){
490
            		fLayerPropertiesWindow.btnApply_actionPerformedAnnotation(e);
491
                }else{
492
            		fLayerPropertiesWindow.btnApply_actionPerformed(e);
493
            	}
494
                System.out.println("APPLY");
495
            } else if (e.getActionCommand() == "LOAD_LEGEND") {
496
	        	JFileChooser jfc = new JFileChooser();
497
	    		jfc.addChoosableFileFilter(new GenericFileFilter("gvl",
498
	    				PluginServices.getText(this, "tipo_de_leyenda")));
499
	    		//jfc.addChoosableFileFilter(new GenericFileFilter("sld","sld"));
534
				if (jfc.showOpenDialog((Component) PluginServices
535
						.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
536
					File file = jfc.getSelectedFile();
537
					if (!(file.getPath().endsWith(".gvl") || file.getPath()
538
							.endsWith(".GVL"))) {
539
						file = new File(file.getPath() + ".gvl");
540
					}
541
					readLegend(file);
542
					if (layer instanceof Annotation_Layer) {
543
						panelLegendAnnotation.setRenderer(renderer);
544
						panelLegendAnnotation.actualizar();
545
					} else {
546
						fPanelLegendManager.setRenderer(renderer);
547
						fPanelLegendManager.actualizar();
548
					}
500 549

  
501
	    		if (jfc.showOpenDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
502
	    			File file=jfc.getSelectedFile();
503
	    			if (!(file.getPath().endsWith(".gvl") || file.getPath().endsWith(".GVL")))
504
	    			{
505
	    				file=new File(file.getPath()+".gvl");
506
	    			}
507
	    			readLegend(file);
508
	    			if (layer instanceof Annotation_Layer){
509
	    				panelLegendAnnotation.setRenderer(renderer);
510
	    				panelLegendAnnotation.actualizar();
511
	    			}else{
512
	                	fPanelLegendManager.setRenderer(renderer);
513
		    			fPanelLegendManager.actualizar();
514
	            	}
550
				}
551
			} else if (e.getActionCommand() == "SAVE_LEGEND") {
552
				if (layer instanceof Annotation_Layer) {
515 553

  
516
	    		}
517
            } else if (e.getActionCommand() == "SAVE_LEGEND") {
518
            	if (layer instanceof Annotation_Layer){
519

  
520
    			}else{
521
    				fLayerPropertiesWindow.btnApply_actionPerformed(e);
522
    			}
554
				} else {
555
					fLayerPropertiesWindow.btnApply_actionPerformed(e);
556
				}
523 557
				JFileChooser jfc = new JFileChooser();
524
				jfc.addChoosableFileFilter(new GenericFileFilter("sld","*.sld"));
558
				jfc
559
						.addChoosableFileFilter(new GenericFileFilter("sld",
560
								"*.sld"));
525 561
				jfc.addChoosableFileFilter(new GenericFileFilter("gvl",
526 562
						PluginServices.getText(this, "tipo_de_leyenda")));
527 563

  
528

  
529
				if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION)
530
				{
531
					File file=jfc.getSelectedFile();
532
					if (jfc.getFileFilter().accept(new File("dummy.sld")))
533
					{
534
						if (!(file.getPath().toLowerCase().endsWith(".sld"))){
535
							file=new File(file.getPath()+".sld");
564
				if (jfc.showSaveDialog((Component) PluginServices
565
						.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
566
					File file = jfc.getSelectedFile();
567
					if (jfc.getFileFilter().accept(new File("dummy.sld"))) {
568
						if (!(file.getPath().toLowerCase().endsWith(".sld"))) {
569
							file = new File(file.getPath() + ".sld");
536 570
						}
537 571
						export2SLD(file);
538
					}
539
					else{
540
						if (!(file.getPath().toLowerCase().endsWith(".gvl"))){
541
							file=new File(file.getPath()+".gvl");
572
					} else {
573
						if (!(file.getPath().toLowerCase().endsWith(".gvl"))) {
574
							file = new File(file.getPath() + ".gvl");
542 575
						}
543 576
						writeLegend(file);
544 577
					}
545 578
				}
546
            } else {}
547
        }
548
    }
579
			} else {
580
			}
581
		}
582
	}
549 583

  
550
    private void export2SLD(File file) {
584
	private void export2SLD(File file) {
551 585
		try {
552 586
			FileWriter writer = new FileWriter(file.getAbsolutePath());
553
			writer.write( renderer.getSLDString(layer.getName()));
587
			writer.write(renderer.getSLDString(layer.getName()));
554 588
			writer.close();
555 589

  
556
//			Marshaller m = new Marshaller(writer);
557
//			m.setEncoding("ISO-8859-1");
558
//			m.marshal(renderer.getSLDString());
590
			// Marshaller m = new Marshaller(writer);
591
			// m.setEncoding("ISO-8859-1");
592
			// m.marshal(renderer.getSLDString());
559 593
		} catch (Exception e) {
560
			NotificationManager.addError(PluginServices.getText(this, "Error_exportando_SLD"), e);
594
			NotificationManager.addError(PluginServices.getText(this,
595
					"Error_exportando_SLD"), e);
561 596
		}
562 597
	}
563 598

  
564
    public void btnApply_actionPerformedAnnotation(ActionEvent evt) {
565
    	try {
566
    		renderer = panelLegendAnnotation.getLegend();
567
    		panelLegendAnnotation.updateValuesFromControls((VectorialLegend)renderer);
568
    		// Intentamos aplicar la leyenda a todas
569
            // las capas activas a las que se les pueda aplicar
570
            FLayer[] activeLyrs =  mapContext.getLayers().getActives();
571
            for (int i=0; i < activeLyrs.length; i++)
572
            {
573
            	FLayer laux=activeLyrs[i];
574
            	if (activeLyrs[i] instanceof FLayers){
575
            		laux=getFirstActiveLayerVect((FLayers)activeLyrs[i]);
576
            	}
577
                if (laux instanceof ClassifiableVectorial)
578
                {
579
                    ClassifiableVectorial aux2 = (ClassifiableVectorial) laux;
580
                    if (renderer instanceof ClassifiedLegend)
581
                    {
582
                        // Es una leyenda que necesita un recordset con un
583
                        // nombre de campo. Comprobamos que ese recordset
584
                        // tiene ese nombre de campo y es del tipo esperado
585
                        ClassifiedLegend cl = (ClassifiedLegend) renderer;
586
                        if (aux2 instanceof AlphanumericData)
587
                        {
588
                            DataSource rs = ((AlphanumericData) aux2).getRecordset();
589
                            if (cl.getValues().length==0) {
590
                            	JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this,"no_es_posible_aplicar_leyenda_vacia"));
591
                            	return;
592
                            }
593
                            int idField = rs.getFieldIndexByName(cl.getFieldName());
594
                            if (idField != -1)
595
                            {
596
                                //TODO: Aqu? deber?amos comprobar si el tipo de campo
597
                                // es el tipo de campo esperado.
598
                            	/*if (renderer instanceof VectorialUniqueValueLegend){
599
                            		((VectorialUniqueValueLegend)renderer).setLabelHeightField(null);
600
                            		((VectorialUniqueValueLegend)renderer).setLabelRotationField(null);
601
                            	}
602
                            	*/
603
                                aux2.setLegend((VectorialLegend) renderer);
604
                            }
599
	public void btnApply_actionPerformedAnnotation(ActionEvent evt) {
600
		try {
601
			renderer = panelLegendAnnotation.getLegend();
602
			panelLegendAnnotation
603
					.updateValuesFromControls((VectorialLegend) renderer);
604
			// Intentamos aplicar la leyenda a todas
605
			// las capas activas a las que se les pueda aplicar
606
			FLayer[] activeLyrs = mapContext.getLayers().getActives();
607
			for (int i = 0; i < activeLyrs.length; i++) {
608
				FLayer laux = activeLyrs[i];
609
				if (activeLyrs[i] instanceof FLayers) {
610
					laux = getFirstActiveLayerVect((FLayers) activeLyrs[i]);
611
				}
612
				if (laux instanceof ClassifiableVectorial) {
613
					ClassifiableVectorial aux2 = (ClassifiableVectorial) laux;
614
					if (renderer instanceof ClassifiedLegend) {
615
						// Es una leyenda que necesita un recordset con un
616
						// nombre de campo. Comprobamos que ese recordset
617
						// tiene ese nombre de campo y es del tipo esperado
618
						ClassifiedLegend cl = (ClassifiedLegend) renderer;
619
						if (aux2 instanceof AlphanumericData) {
620
							DataSource rs = ((AlphanumericData) aux2)
621
									.getRecordset();
622
							if (cl.getValues().length == 0) {
623
								JOptionPane
624
										.showMessageDialog(
625
												(Component) PluginServices
626
														.getMainFrame(),
627
												PluginServices
628
														.getText(this,
629
																"no_es_posible_aplicar_leyenda_vacia"));
630
								return;
631
							}
632
							int idField = rs.getFieldIndexByName(cl
633
									.getFieldName());
634
							if (idField != -1) {
635
								// TODO: Aqu? deber?amos comprobar si el tipo de
636
								// campo
637
								// es el tipo de campo esperado.
638
								/*
639
								 * if (renderer instanceof
640
								 * VectorialUniqueValueLegend){
641
								 * ((VectorialUniqueValueLegend)renderer).setLabelHeightField(null);
642
								 * ((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); }
643
								 */
644
								aux2.setLegend((VectorialLegend) renderer);
645
							}
605 646

  
606
                        }
607
                    }else if (renderer instanceof Annotation_Legend){
608
                    	aux2.setLegend((VectorialLegend) renderer);
609
                    }
610
                    else if (renderer instanceof SingleSymbolLegend)
611
                        aux2.setLegend((VectorialLegend) renderer);
612
                }
647
						}
648
					} else if (renderer instanceof Annotation_Legend) {
649
						aux2.setLegend((VectorialLegend) renderer);
650
					} else if (renderer instanceof SingleSymbolLegend)
651
						aux2.setLegend((VectorialLegend) renderer);
652
				}
613 653

  
614
            }
654
			}
615 655
			// aux.setLegend((VectorialLegend) m_Renderer);
616 656

  
617 657
		} catch (FieldNotFoundException e) {
......
621 661
			// TODO Auto-generated catch block
622 662
			e.printStackTrace();
623 663
		} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
624
            // TODO Auto-generated catch block
625
            e.printStackTrace();
626
        }
664
			// TODO Auto-generated catch block
665
			e.printStackTrace();
666
		}
627 667

  
628 668
		if (fPanelScaleManager.getJRadioButton1().isSelected()) {
629
			try
630
			{
631
				layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1().getText())).doubleValue());
669
			try {
670
				layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1()
671
						.getText())).doubleValue());
672
			} catch (ParseException ex) {
673
				if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0)
674
					layer.setMinScale(-1);
675
				else
676
					System.err.print(ex.getLocalizedMessage());
632 677
			}
633
			catch (ParseException ex)
634
			{
635
			    if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0)
636
			        layer.setMinScale(-1);
637
			    else
638
			        System.err.print(ex.getLocalizedMessage());
678
			try {
679
				layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2()
680
						.getText())).doubleValue());
681
			} catch (ParseException ex) {
682
				if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0)
683
					layer.setMaxScale(-1);
684
				else
685
					System.err.print(ex.getLocalizedMessage());
639 686
			}
640
			try
641
			{
642
			    layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2().getText())).doubleValue());
643
			}
644
			catch (ParseException ex)
645
			{
646
			    if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0)
647
			        layer.setMaxScale(-1);
648
			    else
649
			        System.err.print(ex.getLocalizedMessage());
650
			}
651 687

  
652 688
		} else {
653
	        layer.setMinScale(-1);
654
	        layer.setMaxScale(-1);
689
			layer.setMinScale(-1);
690
			layer.setMaxScale(-1);
655 691
		}
656
		if (!fPanelScaleManager.getLayerName().equals(layer.getName())){
692
		if (!fPanelScaleManager.getLayerName().equals(layer.getName())) {
657 693
			layer.setName(fPanelScaleManager.getLayerName());
658 694
		}
659
        if (layer instanceof FLyrVect)
660
        {
661
            FLyrVect lyrVect = (FLyrVect) layer;
662
            if (fPanelScaleManager.isSpatialIndexSelected())
663
            {
664
//                if (lyrVect.getSpatialIndex() == null)
665
            	if(lyrVect.getISpatialIndex() == null)
666
                {
667
                	//AZABALA
668
                	try {
669
						PluginServices.
670
							cancelableBackgroundExecution(getCreateSpatialIndexTask());
695
		if (layer instanceof FLyrVect) {
696
			FLyrVect lyrVect = (FLyrVect) layer;
697
			if (fPanelScaleManager.isSpatialIndexSelected()) {
698
				// if (lyrVect.getSpatialIndex() == null)
699
				if (lyrVect.getISpatialIndex() == null) {
700
					// AZABALA
701
					try {
702
						PluginServices
703
								.cancelableBackgroundExecution(getCreateSpatialIndexTask());
671 704
					} catch (DriverIOException e) {
672 705
						// TODO Auto-generated catch block
673 706
						e.printStackTrace();
......
675 708
						// TODO Auto-generated catch block
676 709
						e.printStackTrace();
677 710
					}
678
//                    lyrVect.createSpatialIndex();
679
                }
680
            }
681
            //AZABALA
682
            /*
683
             * If we unselect the spatial index checkbox...Must we delete
684
             * spatial index file, or we only have to put Spatial Index
685
             * reference to null?. I have followed the second choice
686
             */
687
            else{
688
                lyrVect.deleteSpatialIndex();
689
            }
711
					// lyrVect.createSpatialIndex();
712
				}
713
			}
714
			// AZABALA
715
			/*
716
			 * If we unselect the spatial index checkbox...Must we delete
717
			 * spatial index file, or we only have to put Spatial Index
718
			 * reference to null?. I have followed the second choice
719
			 */
720
			else {
721
				lyrVect.deleteSpatialIndex();
722
			}
690 723

  
691

  
692
        }
693
		//layer.getFMap().invalidate();
724
		}
725
		// layer.getFMap().invalidate();
694 726
		layer.getMapContext().callLegendChanged();
695 727

  
696 728
	}
......
698 730
	private void writeLegend(File file) {
699 731
		try {
700 732
			FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());
701
            OutputStreamWriter writer = new OutputStreamWriter(fos, ProjectExtension.PROJECTENCODING);
733
			OutputStreamWriter writer = new OutputStreamWriter(fos,
734
					ProjectExtension.PROJECTENCODING);
702 735
			Marshaller m = new Marshaller(writer);
703 736
			m.setEncoding(ProjectExtension.PROJECTENCODING);
704 737
			XMLEntity xml = renderer.getXMLEntity();
705 738
			xml.putProperty("followHeaderEncoding", true);
706 739
			m.marshal(xml.getXmlTag());
707 740
		} catch (Exception e) {
708
			NotificationManager.addError(PluginServices.getText(this, "Error_guardando_la_leyenda"), e);
741
			NotificationManager.addError(PluginServices.getText(this,
742
					"Error_guardando_la_leyenda"), e);
709 743
		}
710 744
	}
711 745

  
712 746
	public void readLegend(File file) {
713 747
		File xmlFile = new File(file.getAbsolutePath());
714 748
		try {
715
			String encoding = XMLEncodingUtils.getEncoding(new FileInputStream(xmlFile));
716
			InputStreamReader reader=null;
717
			if (encoding!=null) {
749
			String encoding = XMLEncodingUtils.getEncoding(new FileInputStream(
750
					xmlFile));
751
			InputStreamReader reader = null;
752
			if (encoding != null) {
718 753
				try {
719
					reader = new InputStreamReader(new FileInputStream(xmlFile), encoding);
720
					renderer= readLegend(reader, true);
754
					reader = new InputStreamReader(
755
							new FileInputStream(xmlFile), encoding);
756
					renderer = readLegend(reader, true);
721 757
				} catch (UnsupportedEncodingException e) {
722
					reader = new InputStreamReader(new FileInputStream(xmlFile),"ISO-8859-1");
758
					reader = new InputStreamReader(
759
							new FileInputStream(xmlFile), "ISO-8859-1");
723 760
					try {
724
						renderer= readLegend(reader, false);
761
						renderer = readLegend(reader, false);
725 762
					} catch (UnsupportedEncodingException e1) {
726
						JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, e1.getLocalizedMessage()));
763
						JOptionPane.showMessageDialog(
764
								(Component) PluginServices.getMainFrame(),
765
								PluginServices.getText(this, e1
766
										.getLocalizedMessage()));
727 767
						return;
728 768
					}
729 769
				}
730
			}
731
			else {
732
				reader = new InputStreamReader(new FileInputStream(xmlFile),"UTF-8");
770
			} else {
771
				reader = new InputStreamReader(new FileInputStream(xmlFile),
772
						"UTF-8");
733 773
				try {
734
					renderer= readLegend(reader, false);
774
					renderer = readLegend(reader, false);
735 775
				} catch (UnsupportedEncodingException e1) {
736
					JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, e1.getLocalizedMessage()));
776
					JOptionPane.showMessageDialog((Component) PluginServices
777
							.getMainFrame(), PluginServices.getText(this, e1
778
							.getLocalizedMessage()));
737 779
					return;
738 780
				}
739 781
			}
740 782
		} catch (FileNotFoundException e) {
741
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "fichero_incorrecto"));
783
			JOptionPane.showMessageDialog((Component) PluginServices
784
					.getMainFrame(), PluginServices.getText(this,
785
					"fichero_incorrecto"));
742 786
			return;
743 787
		} catch (UnsupportedEncodingException e) {
744 788
			e.printStackTrace();
745 789
		}
746 790
	}
747
	public Legend readLegend(Reader reader, boolean encodingFollowed) throws UnsupportedEncodingException {
791

  
792
	public Legend readLegend(Reader reader, boolean encodingFollowed)
793
			throws UnsupportedEncodingException {
748 794
		Legend legend = null;
749 795

  
750 796
		try {
751 797
			XmlTag tag = (XmlTag) XmlTag.unmarshal(reader);
752
			XMLEntity xml=new XMLEntity(tag);
798
			XMLEntity xml = new XMLEntity(tag);
753 799
			if (encodingFollowed) {
754 800
				if (xml.contains("followHeaderEncoding")) {
755
					boolean useEncoding = xml.getBooleanProperty("followHeaderEncoding");
801
					boolean useEncoding = xml
802
							.getBooleanProperty("followHeaderEncoding");
756 803
					if (!useEncoding) {
757
						throw new UnsupportedEncodingException("the encoding specified in the xml header is not safe");
804
						throw new UnsupportedEncodingException(
805
								"the encoding specified in the xml header is not safe");
758 806
					}
759
				}
760
				else {
761
					// Old projects didn't contain followHeaderEncoding and they were
762
					// not correctly encoded. We throw an exception now, and we'll try
807
				} else {
808
					// Old projects didn't contain followHeaderEncoding and they
809
					// were
810
					// not correctly encoded. We throw an exception now, and
811
					// we'll try
763 812
					// to reopen the project
764 813
					// using the default system encoding.
765
					throw new UnsupportedEncodingException("the encoding specified in the xml header is not safe");
814
					throw new UnsupportedEncodingException(
815
							"the encoding specified in the xml header is not safe");
766 816
				}
767 817
			}
768 818

  
769 819
			legend = LegendFactory.createFromXML(xml);
770 820
			return legend;
771
		}  catch (MarshalException e) {
772
//			PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e);
773
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto"));
774
			//NotificationManager.addError("Al leer el proyecto", e);
821
		} catch (MarshalException e) {
822
			// PluginServices.getLogger().error(PluginServices.getText(this,
823
			// "formato_incorrecto"),e);
824
			JOptionPane.showMessageDialog((Component) PluginServices
825
					.getMainFrame(), PluginServices.getText(this,
826
					"formato_incorrecto"));
827
			// NotificationManager.addError("Al leer el proyecto", e);
775 828
		} catch (ValidationException e) {
776
//			PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e);
777
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto"));
778
			//NotificationManager.addError("Al leer el proyecto", e);
829
			// PluginServices.getLogger().error(PluginServices.getText(this,
830
			// "formato_incorrecto"),e);
831
			JOptionPane.showMessageDialog((Component) PluginServices
832
					.getMainFrame(), PluginServices.getText(this,
833
					"formato_incorrecto"));
834
			// NotificationManager.addError("Al leer el proyecto", e);
779 835
		} catch (XMLException e) {
780
//			PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e);
781
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto"));
782
			//NotificationManager.addError("Al leer el proyecto", e);
836
			// PluginServices.getLogger().error(PluginServices.getText(this,
837
			// "formato_incorrecto"),e);
838
			JOptionPane.showMessageDialog((Component) PluginServices
839
					.getMainFrame(), PluginServices.getText(this,
840
					"formato_incorrecto"));
841
			// NotificationManager.addError("Al leer el proyecto", e);
783 842
		}
784 843
		return null;
785 844
	}
786
	/* (non-Javadoc)
845

  
846
	/*
847
	 * (non-Javadoc)
848
	 * 
787 849
	 * @see com.iver.andami.ui.mdiManager.View#getViewInfo()
788 850
	 */
789 851
	public WindowInfo getWindowInfo() {
......
791 853
		WindowInfo viewInfo = new WindowInfo(WindowInfo.MODELESSDIALOG);
792 854
		viewInfo.setWidth(650);
793 855
		viewInfo.setHeight(420);
794
		viewInfo.setTitle(PluginServices.getText(this,"propiedades_de_la_capa"));
856
		viewInfo.setTitle(PluginServices
857
				.getText(this, "propiedades_de_la_capa"));
795 858
		return viewInfo;
796 859
	}
797 860

  
798 861
	/**
799 862
	 * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
800 863
	 */
801
	/*public void viewActivated() {
802
	}
864
	/*
865
	 * public void viewActivated() { }
866
	 * 
867
	 * public FMap getMapContext() { return mapContext; } public FLayer
868
	 * getLayer() { return layer; } public Legend getRenderer() { return
869
	 * renderer; }
870
	 */
803 871

  
804
	public FMap getMapContext() {
805
		return mapContext;
806
	}
807
	public FLayer getLayer() {
808
		return layer;
809
	}
810
	public Legend getRenderer() {
811
		return renderer;
812
	}*/
813

  
814 872
	/**
815 873
	 * @return Returns the organizador.
816 874
	 */
817 875
	public JTabbedPane getOrganizador() {
818 876
		return organizador;
819 877
	}
878

  
820 879
	/**
821
	 * @param organizador The organizador to set.
880
	 * @param organizador
881
	 *            The organizador to set.
822 882
	 */
823 883
	public void setOrganizador(JTabbedPane organizador) {
824 884
		this.organizador = organizador;

Also available in: Unified diff