Revision 8711 trunk/libraries/libJCRS/src/org/gvsig/crs/gui/panels/TransformationNadgridsPanel.java

View differences:

TransformationNadgridsPanel.java
34 34
import org.gvsig.crs.CrsFactory;
35 35
import org.gvsig.crs.CrsWkt;
36 36
import org.gvsig.crs.ICrs;
37
import org.gvsig.crs.persistence.RecentCRSsPersistence;
37 38

  
38 39
import au.com.objectix.jgridshift.GridShiftFile;
39 40
import au.com.objectix.jgridshift.SubGrid;
......
41 42
import com.iver.andami.PluginServices;
42 43
import com.iver.andami.ui.mdiManager.IWindow;
43 44
import com.iver.andami.ui.mdiManager.WindowInfo;
45
import com.iver.utiles.XMLEntity;
44 46

  
45 47
public class TransformationNadgridsPanel extends DefaultDialogPanel implements IWindow, ActionListener, ItemListener {
46 48
	
......
52 54
	private JRadioButton jRadioButtonTarget = null;
53 55
	
54 56
	private IProjection firstProj;
55
	private String nad = null;
57
	private String nadFile = null;
56 58
	String[] targetAuthority;
57 59
	String targetAbrev = "";
58 60
	String sourceAbrev = "";
......
70 72
	private JComboBox jComboNadFile = null;
71 73
	private JLabel jLabelSelectNad = null;
72 74
	
73
	
74 75
	private JPanel jPanel;	
75
	private JTextArea jTextAreaInfo;	
76
	private JTextArea jTextAreaInfo;
76 77
	
78
	private PluginServices ps = null;
79
	private XMLEntity xml = null;
80
	
77 81
	boolean targetNad = false;
78 82

  
79 83
	public TransformationNadgridsPanel() {
80
		//nad = "+nadgrids=sped2et.gsb";
84
		ps = PluginServices.getPluginServices(RecentCRSsPersistence.pluginClassInstance); 
85
		xml = ps.getPersistentXML();
81 86
	}
82 87
		
83 88
	public JPanel getJPanel(){
......
93 98
									BorderFactory.createEmptyBorder(2,2,2,2)),
94 99
									jPanel.getBorder()));
95 100
			jPanel.add(getJPanelOpen());
101
			nadFile = restoreNadFileName();
96 102
			jPanel.add(getJPanelSelectNad());
97 103
			jPanel.add(getJLabelChooser());
98 104
			jPanel.add(getGroupRadioButton());
99
			initializeTreeList();
105
			initializeTree();
100 106
			jPanel.add(getTreePanel());
101 107
		}
102 108
		return jPanel;
......
202 208
				setNad(false);
203 209
				crs = new CrsFactory().getCRS(getCode(),
204 210
						getWKT());
205
				crs.setNadGrid(nad);
211
				crs.setNadGrid("+nadgrids="+nadFile);
206 212
				return crs;
207 213
			} catch (org.gvsig.crs.CrsException e) {
208 214
				e.printStackTrace();
......
214 220
			try {
215 221
				crs = new CrsFactory().getCRS(getCode(),
216 222
						getWKT());
217
				crs.setNadGrid(nad);
223
				crs.setNadGrid("+nadgrids="+nadFile);
218 224
				crs.setNadInTarget(true);
219 225
				
220 226
				return crs;
......
309 315
	            File inFile = openFileChooser.getSelectedFile();
310 316
	            //jTextOpen.setText(file.getAbsolutePath());
311 317

  
318
	            String fileName = inFile.getName();
319
	            
320
	            //Comprobar que el fichero existe y tiene formato valido
321
	    		RandomAccessFile raFile = null;
322
	    		try {
323
	    			raFile = new RandomAccessFile(inFile.getAbsolutePath(),"r");
324
	    		} catch (FileNotFoundException ex) {
325
	    			ex.printStackTrace();
326
	    			getJComboNadFile().setSelectedIndex(0);
327
	    			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_not_found"));
328
	    			nadFile = null;
329
	    			return;
330
	    		}
331
	    		GridShiftFile gsf = new GridShiftFile();
332
	    		try {
333
	    			gsf.loadGridShiftFile(raFile);
334
	    		} catch (IOException ex) {
335
	    			ex.printStackTrace();
336
	    			getJComboNadFile().setSelectedIndex(0);
337
	    			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_bad_format"));
338
	    			nadFile = null;
339
	    			return;
340
	    		}catch (java.lang.Exception ex) {
341
	    			ex.printStackTrace();
342
	    			getJComboNadFile().setSelectedIndex(0);
343
	    			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_bad_format"));
344
	    			nadFile = null;
345
	    			return;
346
	    		}
347
	            
312 348
	            //Copiar el fichero seleccionado al directorio data de la extensi?n:
313 349
	            
314
	            String fileName = inFile.getName();
315 350
	    		File outFile = new File(dataPath+fileName);
316 351
	    		InputStream in = null;
317 352
	    		OutputStream out = null;
......
341 376
	    		if(!exists)
342 377
		    		getJComboNadFile().addItem(fileName);
343 378
	    		getJComboNadFile().setSelectedItem(fileName);
344
	    		nad = "+nadgrids="+fileName;
379
	    		nadFile = fileName;
345 380
	        }
346 381
		}
347 382
	}
348 383

  
349 384
	public TreePanel getTreePanel() {
350 385
		if (treePanel == null){
351
			treePanel = new TreePanel(PluginServices.getText(this,"grids_en")+": "+"sped2et.gsb");
386
			treePanel = new TreePanel(PluginServices.getText(this,"grids_en")+": "+nadFile);
352 387
			treePanel.getTree().expandRow(0);
353 388
			treePanel.setPanelSize(530,200);
354 389
		}
355 390
		return treePanel;
356 391
	}
357 392
	
358
	private void initializeTreeList(){
393
	private void initializeTree(){
359 394
		// leer el fichero nadgrids
360 395
		RandomAccessFile raFile = null;
361 396
		try {
362
			raFile = new RandomAccessFile("./gvSIG/extensiones/org.gvsig.crs/data/sped2et.gsb","r");
397
			raFile = new RandomAccessFile("./gvSIG/extensiones/org.gvsig.crs/data/"+nadFile,"r");
363 398
		} catch (FileNotFoundException e) {
364
			// TODO Auto-generated catch block
365 399
			e.printStackTrace();
400
			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_not_found"));
401
			return;
366 402
		}
367 403
		GridShiftFile gsf = new GridShiftFile();
368 404
		try {
369 405
			gsf.loadGridShiftFile(raFile);
370 406
		} catch (IOException e) {
371
			// TODO Auto-generated catch block
372 407
			e.printStackTrace();
408
			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_bad_format"));
409
			return;
410
		}catch (java.lang.Exception e) {
411
			e.printStackTrace();
412
			getTreePanel().setRoot(PluginServices.getText(this,"nadfile_bad_format"));
413
			return;
373 414
		}
374 415
		
375 416
		SubGrid subGrid[] = gsf.getSubGridTree(); 
376 417
		
377 418
		for (int i=0;i<subGrid.length;i++){
378 419
			getTreePanel().addClass(subGrid[i].getSubGridName(),i);
379
			getTreePanel().addEntry(PluginServices.getText(this,"long_min")+": "+String.valueOf(subGrid[i].getMinLon()),subGrid[i].getSubGridName(), "");
380
			getTreePanel().addEntry(PluginServices.getText(this,"lat_min")+": "+String.valueOf(subGrid[i].getMinLat()),subGrid[i].getSubGridName(), "");
381
			getTreePanel().addEntry(PluginServices.getText(this,"long_max")+": "+String.valueOf(subGrid[i].getMaxLon()),subGrid[i].getSubGridName(), "");
382
			getTreePanel().addEntry(PluginServices.getText(this,"lat_max")+": "+String.valueOf(subGrid[i].getMaxLat()),subGrid[i].getSubGridName(), "");
420
			getTreePanel().addEntry(PluginServices.getText(this,"long_min")+": "+String.valueOf(subGrid[i].getMaxLon()/-3600)+"?",subGrid[i].getSubGridName(), "");
421
			getTreePanel().addEntry(PluginServices.getText(this,"lat_min")+": "+String.valueOf(subGrid[i].getMinLat()/3600)+"?",subGrid[i].getSubGridName(), "");
422
			getTreePanel().addEntry(PluginServices.getText(this,"long_max")+": "+String.valueOf(subGrid[i].getMinLon()/-3600+"?"),subGrid[i].getSubGridName(), "");
423
			getTreePanel().addEntry(PluginServices.getText(this,"lat_max")+": "+String.valueOf(subGrid[i].getMaxLat()/3600+"?"),subGrid[i].getSubGridName(), "");
383 424
			getTreePanel().addEntry(PluginServices.getText(this,"node_count")+": "+String.valueOf(subGrid[i].getNodeCount()),subGrid[i].getSubGridName(), "");
384 425
			getTreePanel().addEntry(PluginServices.getText(this,"detalles")+": "+String.valueOf(subGrid[i].getDetails()),subGrid[i].getSubGridName(), "");
385 426
		}
......
399 440
				if (dataDir.list()[i].substring(dataDir.list()[i].lastIndexOf('.')+1).equals("gsb")){
400 441
					jComboNadFile.addItem(dataDir.list()[i]);
401 442
				}
402
			if (jComboNadFile.getItemCount()>1){
403
				jComboNadFile.setSelectedIndex(1);
404
				nad = "+nadgrids="+jComboNadFile.getItemAt(1).toString();
405
			}
443
			if (nadFile != null)
444
				jComboNadFile.setSelectedItem(nadFile);
445
			
446
			jComboNadFile.addItemListener(this);
406 447
		}
407 448
		return jComboNadFile;
408 449
	}
......
428 469
	}
429 470

  
430 471
	public void itemStateChanged(ItemEvent e) {
431
		if (getJComboNadFile().getSelectedIndex()==0)
432
			nad = "+nadgrids="+getJComboNadFile().getSelectedItem().toString();
472
		if (getJComboNadFile().getSelectedIndex()!=0){
473
			nadFile = getJComboNadFile().getSelectedItem().toString();
474
			getTreePanel().setRoot(PluginServices.getText(this,"grids_en")+": "+nadFile);
475
			initializeTree();
476
			// Guardar en persistencia nadFile:
477
			saveNadFileName(nadFile);
478
			
479
		}
480
		else{
481
			nadFile = null;
482
			getTreePanel().setRoot("");
483
		}
484
		
433 485
	}
434 486
	
487
	/**
488
	 * Guarda el nombre del fichero nadgrids mediante el modelo de persistencia
489
	 * de Andami
490
	 * @param name Nombre del fichero ndagrids
491
	 */
492
	private void saveNadFileName(String name){
493
		ps = PluginServices.getPluginServices(RecentCRSsPersistence.pluginClassInstance); 
494
		xml = ps.getPersistentXML();
495
		
496
		for (int child = 0; child<xml.getChildrenCount();child++)
497
			if (xml.getChild(child).getPropertyName(0).equals("nadFile"))
498
				xml.removeChild(child);
499
		
500
		
501
		XMLEntity xmlEnt = new XMLEntity();
502
		xmlEnt.putProperty("nadFile",name);
503
		xml.addChild(xmlEnt);
504
		ps.setPersistentXML(xml);
505
	}
506
	
507
	/**
508
	 * Obtiene el nombre del fichero nadgrids guardado mediante el
509
	 * modelo de persistencia de Andami.
510
	 * 
511
	 * @return nombre del fichero nadgrids o null si no ha sido guardado.
512
	 */
513
	private String restoreNadFileName(){
514
		String fileName;
515
		for (int child = 0; child<xml.getChildrenCount();child++)
516
			if (xml.getChild(child).getPropertyName(0).equals("nadFile")){
517
				fileName = xml.getChild(child).getPropertyValue(0);
518
				File dataDir = new File(dataPath);
519
				for (int i = 0; i<dataDir.list().length;i++)
520
					if (dataDir.list()[i].equals(fileName)){
521
						return fileName;
522
					}
523
			}
524
		
525
		return null;
526
	}
527
	
435 528
}
436 529

  
437 530
class FiltroNadgrids extends FileFilter {

Also available in: Unified diff