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 {
|