Revision 8711 trunk/libraries/libJCRS/src/org/gvsig/crs/gui/panels/TransformationNadgridsPanel.java
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