svn-gvsig-desktop / trunk / extensions / extGeoreferencing / src / com / iver / cit / gvsig / gui / dialogs / GeoreferencingDialog.java @ 4734
History | View | Annotate | Download (26.8 KB)
1 | 4686 | nacho | package com.iver.cit.gvsig.gui.dialogs; |
---|---|---|---|
2 | |||
3 | import java.awt.BorderLayout; |
||
4 | 4699 | nacho | import java.awt.Component; |
5 | 4686 | nacho | import java.awt.Dimension; |
6 | import java.awt.FlowLayout; |
||
7 | import java.awt.event.ActionListener; |
||
8 | import java.awt.event.ComponentEvent; |
||
9 | import java.awt.event.ComponentListener; |
||
10 | import java.beans.PropertyVetoException; |
||
11 | import java.io.File; |
||
12 | |||
13 | import javax.swing.JButton; |
||
14 | 4723 | nacho | import javax.swing.JCheckBox; |
15 | 4686 | nacho | import javax.swing.JFileChooser; |
16 | import javax.swing.JInternalFrame; |
||
17 | 4699 | nacho | import javax.swing.JOptionPane; |
18 | 4686 | nacho | import javax.swing.JPanel; |
19 | import javax.swing.filechooser.FileFilter; |
||
20 | import javax.swing.table.DefaultTableModel; |
||
21 | |||
22 | import org.cresques.cts.IProjection; |
||
23 | |||
24 | import com.iver.andami.PluginServices; |
||
25 | import com.iver.cit.gvsig.fmap.MapControl; |
||
26 | import com.iver.cit.gvsig.fmap.layers.FLyrGeoRaster; |
||
27 | import com.iver.cit.gvsig.fmap.layers.FLyrPoints; |
||
28 | import com.iver.cit.gvsig.fmap.tools.ZoomOutRightButtonListener; |
||
29 | import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior; |
||
30 | import com.iver.cit.gvsig.fmap.tools.Behavior.DraggedBehavior; |
||
31 | import com.iver.cit.gvsig.fmap.tools.Behavior.GeoMoveBehavior; |
||
32 | import com.iver.cit.gvsig.fmap.tools.Behavior.GeoRedimBehavior; |
||
33 | import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior; |
||
34 | import com.iver.cit.gvsig.fmap.tools.Behavior.PointBehavior; |
||
35 | import com.iver.cit.gvsig.gui.listeners.GeorefMovePointListener; |
||
36 | import com.iver.cit.gvsig.gui.listeners.GeorefPanListener; |
||
37 | import com.iver.cit.gvsig.gui.listeners.GeorefPointSelectorListener; |
||
38 | import com.iver.cit.gvsig.gui.listeners.ZoomGeorefListener; |
||
39 | import com.iver.cit.gvsig.gui.panels.ConectorPanel; |
||
40 | import com.iver.cit.gvsig.gui.panels.OptionsPanel; |
||
41 | import com.iver.cit.gvsig.gui.panels.ZoomControlPanel; |
||
42 | 4698 | nacho | import com.iver.cit.gvsig.gui.pointsTable.TablePointsPanel; |
43 | 4686 | nacho | import com.iver.cit.gvsig.gui.pointsTable.TablePointsPanel.PointTable; |
44 | import com.iver.cit.gvsig.gui.selectPoints.SelectPointsPanel; |
||
45 | import com.iver.cit.gvsig.gui.toolListeners.StatusBarListener; |
||
46 | import com.iver.cit.gvsig.gui.wizards.WizardListener; |
||
47 | import com.iver.cit.gvsig.project.Project; |
||
48 | 4700 | nacho | import com.iver.cit.gvsig.utils.MathUtils; |
49 | import com.iver.cit.gvsig.utils.PointManager; |
||
50 | 4686 | nacho | |
51 | /**
|
||
52 | * Panel que contiene el Wizard de georeferenciaci?n con los tabs
|
||
53 | * interiores
|
||
54 | *
|
||
55 | * @author Nacho Brodin (brodin_ign@gva.es)
|
||
56 | */
|
||
57 | public class GeoreferencingDialog extends JPanel implements ActionListener, ComponentListener { |
||
58 | |||
59 | //**********************Vars**********************************
|
||
60 | static private IProjection proj = Project.getProjection(); |
||
61 | private JPanel pBotones = null; // @jve:decl-index=0: |
||
62 | private JButton bProcesar = null; // @jve:decl-index=0: |
||
63 | private JButton bCancelar = null; // @jve:decl-index=0: |
||
64 | private WizardListener wizardListener = new DialogWizardListener(); |
||
65 | private JButton bLoadPoints = null; // @jve:decl-index=0: |
||
66 | private GeoRedimBehavior rb = null; |
||
67 | private GeoMoveBehavior mb = null; |
||
68 | private boolean loadTools = false; |
||
69 | private JInternalFrame frame = null; |
||
70 | /**
|
||
71 | * Lista de formatos soportados
|
||
72 | */
|
||
73 | private String[] fileFilters = {"grf"}; |
||
74 | /**
|
||
75 | * Recuerda la ?ltima ruta seleccionada por el usuario
|
||
76 | */
|
||
77 | private String lastPathLoad = "./"; |
||
78 | private String lastPathSave = "./"; |
||
79 | private ConectorPanel conectorPanel = null; |
||
80 | |||
81 | private boolean enlarge = false; |
||
82 | private int normalWidth = 400; |
||
83 | private int normalHeight = 263; |
||
84 | private int enlargeHeight = 428; |
||
85 | private int tmpWidth = normalWidth; |
||
86 | |||
87 | private JButton bAceptar = null; |
||
88 | |||
89 | private JButton bSavePoints = null; |
||
90 | private FLyrGeoRaster lyrGeoRaster = null; |
||
91 | 4698 | nacho | private TablePointsPanel tablePointsPanel = null; |
92 | 4700 | nacho | private PointManager pointManager = null; |
93 | 4686 | nacho | //**********************End Vars******************************
|
94 | |||
95 | //**********************Classes*******************************
|
||
96 | /**
|
||
97 | * Filtro para selecci?n de ficheros.
|
||
98 | * @author Nacho Brodin (brodin_ign@gva.es)
|
||
99 | */
|
||
100 | class SelectFileFilter extends javax.swing.filechooser.FileFilter { |
||
101 | |||
102 | private JFileChooser chooser = null; |
||
103 | private String file = null; |
||
104 | |||
105 | public SelectFileFilter(JFileChooser ch, String file){ |
||
106 | this.chooser = ch;
|
||
107 | this.file = file;
|
||
108 | } |
||
109 | |||
110 | public boolean accept(File f) { |
||
111 | |||
112 | return f.isDirectory() || f.getName().toLowerCase().endsWith("."+file); |
||
113 | } |
||
114 | |||
115 | public String getDescription() { |
||
116 | return file;
|
||
117 | } |
||
118 | |||
119 | } |
||
120 | |||
121 | /**
|
||
122 | * @author Nacho Brodin (brodin_ign@gva.es)
|
||
123 | */
|
||
124 | public class DialogWizardListener implements WizardListener { |
||
125 | |||
126 | /**
|
||
127 | * @see com.iver.cit.gvsig.gui.wms.WizardListener#error(java.lang.Exception)
|
||
128 | */
|
||
129 | public void error(Exception e) { |
||
130 | } |
||
131 | |||
132 | /**
|
||
133 | * @see com.iver.cit.gvsig.gui.wms.WizardListener#wizardStateChanged(boolean)
|
||
134 | */
|
||
135 | public void wizardStateChanged(boolean finishable) { |
||
136 | getBProcesar().setEnabled(finishable); |
||
137 | } |
||
138 | |||
139 | } |
||
140 | //**********************End Classes***************************
|
||
141 | |||
142 | //**********************Methods*******************************
|
||
143 | /**
|
||
144 | * Constructor.
|
||
145 | */
|
||
146 | public GeoreferencingDialog(JInternalFrame f, FLyrGeoRaster lyr) { |
||
147 | frame = f; |
||
148 | lyrGeoRaster = lyr; |
||
149 | |||
150 | frame.addComponentListener(this);
|
||
151 | initialize(); |
||
152 | 4700 | nacho | |
153 | //Creamos el pointManager y lo asignamos a la capa de puntos
|
||
154 | pointManager = new PointManager(this, lyrGeoRaster.getFLyrPoints()); |
||
155 | this.lyrGeoRaster.getFLyrPoints().setPointManager(pointManager);
|
||
156 | 4686 | nacho | } |
157 | |||
158 | /**
|
||
159 | * En la inicializaci?n de la ventana a?adimos los tags de est? y cargamos
|
||
160 | * ls herramientas para manejar las imagenes a georeferenciar.
|
||
161 | */
|
||
162 | private void initialize() { |
||
163 | //Cargamos las herramientas la primera vez que abrimos la ventana
|
||
164 | if(!loadTools){
|
||
165 | loadTools = true;
|
||
166 | com.iver.cit.gvsig.gui.View vista = null;
|
||
167 | try{
|
||
168 | vista = (com.iver.cit.gvsig.gui.View) PluginServices.getMDIManager().getActiveView(); |
||
169 | }catch(ClassCastException exc){ |
||
170 | return;
|
||
171 | } |
||
172 | MapControl mapCtrl = vista.getMapControl(); |
||
173 | |||
174 | StatusBarListener sbl = new StatusBarListener(mapCtrl);
|
||
175 | |||
176 | ZoomOutRightButtonListener zoil = new ZoomOutRightButtonListener(mapCtrl);
|
||
177 | ZoomGeorefListener zigl = new ZoomGeorefListener(mapCtrl);
|
||
178 | rb = new GeoRedimBehavior(zigl, this); |
||
179 | mapCtrl.addMapTool("geoZoom", new Behavior[]{rb, |
||
180 | new PointBehavior(zoil), new MouseMovementBehavior(sbl)}); |
||
181 | |||
182 | GeorefPanListener pl = new GeorefPanListener(mapCtrl);
|
||
183 | mb = new GeoMoveBehavior(pl, this); |
||
184 | mapCtrl.addMapTool("geoPan", new Behavior[]{mb, new MouseMovementBehavior(sbl)}); |
||
185 | |||
186 | //Seleccion de un punto sobre la vista
|
||
187 | GeorefPointSelectorListener psl = new GeorefPointSelectorListener(this); |
||
188 | mapCtrl.addMapTool("pointLyrSelection", new Behavior[]{new PointBehavior(psl), new MouseMovementBehavior(sbl)}); |
||
189 | |||
190 | GeorefMovePointListener mpl = new GeorefMovePointListener(this); |
||
191 | mapCtrl.addMapTool("geoMovePoint", new Behavior[]{new DraggedBehavior(mpl), new MouseMovementBehavior(sbl)}); |
||
192 | |||
193 | } |
||
194 | |||
195 | this.setLayout(new BorderLayout()); |
||
196 | if(!enlarge){
|
||
197 | this.setPreferredSize(new java.awt.Dimension(normalWidth, normalHeight)); |
||
198 | this.setSize(new java.awt.Dimension(normalWidth, normalHeight)); |
||
199 | this.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setVisible(false); |
||
200 | this.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setVisible(false); |
||
201 | }else{
|
||
202 | this.setPreferredSize(new java.awt.Dimension(normalWidth, enlargeHeight)); |
||
203 | this.setSize(new java.awt.Dimension(normalWidth, enlargeHeight)); |
||
204 | this.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setVisible(true); |
||
205 | this.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setVisible(true); |
||
206 | } |
||
207 | this.setLocation(new java.awt.Point(0,0)); |
||
208 | |||
209 | this.add(this.getPBotones(), BorderLayout.SOUTH); |
||
210 | 4698 | nacho | this.add(this.getConectorPanel(), BorderLayout.NORTH); |
211 | |||
212 | //A?adimos los listener de los botones de la tabla
|
||
213 | //Los botones de borrado los gestiona SelectPointsPanel
|
||
214 | //Los botones de cargar y exportar los gestiona GeoreferencigDialog
|
||
215 | tablePointsPanel = getConectorPanel().getDataPointsTabPanel().getTablePointsPanel(); |
||
216 | tablePointsPanel.getTableControlerPanel().getBClear().addActionListener(this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel());
|
||
217 | tablePointsPanel.getTableControlerPanel().getBDelPoint().addActionListener(this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel());
|
||
218 | tablePointsPanel.getPButtonsExportImportPanel().getBLoad().addActionListener(this);
|
||
219 | tablePointsPanel.getPButtonsExportImportPanel().getBSave().addActionListener(this);
|
||
220 | tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii().addActionListener(this);
|
||
221 | 4723 | nacho | conectorPanel.getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel().getCbActive().addActionListener(this);
|
222 | 4686 | nacho | } |
223 | |||
224 | /**
|
||
225 | * This method initializes jButton
|
||
226 | *
|
||
227 | * @return javax.swing.JButton
|
||
228 | */
|
||
229 | private JButton getBAceptar() { |
||
230 | if (bAceptar == null) { |
||
231 | bAceptar = new JButton(); |
||
232 | 4688 | nacho | bAceptar.setText(PluginServices.getText(this,"aceptar")); |
233 | 4686 | nacho | bAceptar.addActionListener(this);
|
234 | } |
||
235 | return bAceptar;
|
||
236 | } |
||
237 | 4699 | nacho | |
238 | 4686 | nacho | /**
|
239 | 4699 | nacho | * Comprueba si existe el fichero pasado por par?metro existe solicitando confirmaci?n
|
240 | * de sobreescritura. Si el usuario acepta devolver? true y si no acepta devuelve false.
|
||
241 | * Si se acepta la sobreescritura el fichero es borrado.
|
||
242 | * @param file Cadena con el nombre del fichero a comprobar su existencia.
|
||
243 | * @return Devuelve true si el fichero existe y va a ser sobreescrito
|
||
244 | */
|
||
245 | private boolean checkFileExists(String file){ |
||
246 | File f = new File(file); |
||
247 | if(f.exists()){
|
||
248 | String string1 = PluginServices.getText(this, "yes"); |
||
249 | String string2 = PluginServices.getText(this, "no"); |
||
250 | Object[] options = {string1, string2}; |
||
251 | int n = JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(), |
||
252 | PluginServices.getText(this, "file_exists"), |
||
253 | PluginServices.getText(this, "confirmacion"), |
||
254 | JOptionPane.YES_NO_OPTION,
|
||
255 | JOptionPane.QUESTION_MESSAGE,
|
||
256 | null,
|
||
257 | options, |
||
258 | string1); |
||
259 | if (n == JOptionPane.YES_OPTION){ |
||
260 | f.delete(); |
||
261 | return true; |
||
262 | }else
|
||
263 | return false; |
||
264 | } |
||
265 | return true; |
||
266 | } |
||
267 | |||
268 | /**
|
||
269 | 4686 | nacho | * Acci?n cuando se pulsa el bot?n de aceptar en el dialogo.
|
270 | * <UL>
|
||
271 | * <LI>Cambiamos el nombre a la capa georraster</LI>
|
||
272 | * <LI>A la capa Georraster le asignamos la capa de puntos para poder recuperarla</LI>
|
||
273 | * <LI>Cerramos la ventana</LI>
|
||
274 | * </UL>
|
||
275 | */
|
||
276 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
277 | com.iver.cit.gvsig.gui.View theView = null;
|
||
278 | try{
|
||
279 | theView = (com.iver.cit.gvsig.gui.View) PluginServices.getMDIManager().getActiveView(); |
||
280 | }catch(ClassCastException exc){ |
||
281 | return;
|
||
282 | } |
||
283 | |||
284 | //ACEPTAR
|
||
285 | if(e.getSource() == bAceptar){
|
||
286 | if(getLyrPoints() == null) |
||
287 | return;
|
||
288 | |||
289 | if(lyrGeoRaster != null){ |
||
290 | getLyrPoints().setVisible(false);
|
||
291 | lyrGeoRaster.setName(lyrGeoRaster.getName().substring(1, lyrGeoRaster.getName().length()));
|
||
292 | lyrGeoRaster.setActive(false);
|
||
293 | theView.getMapControl().getMapContext().invalidate(); |
||
294 | } |
||
295 | |||
296 | try{
|
||
297 | frame.setClosed(true);
|
||
298 | }catch(PropertyVetoException exc){} |
||
299 | } |
||
300 | |||
301 | //CANCELAR
|
||
302 | if(e.getSource() == bCancelar){
|
||
303 | if(getLyrPoints() == null) |
||
304 | return;
|
||
305 | |||
306 | //Cerramos la ventana
|
||
307 | //(se ejecuta el evento internalFrameClosing de GeoRasterFrameListener)
|
||
308 | try{
|
||
309 | frame.setClosed(true);
|
||
310 | }catch(PropertyVetoException exc){} |
||
311 | } |
||
312 | |||
313 | //CARGAR PUNTOS
|
||
314 | 4698 | nacho | if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBLoad()){
|
315 | 4686 | nacho | JFileChooser chooser = new JFileChooser(lastPathLoad); |
316 | chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero")); |
||
317 | FileFilter f = null; |
||
318 | for(int i=0; i<this.fileFilters.length;i++){ |
||
319 | f = new SelectFileFilter(chooser, this.fileFilters[i]); |
||
320 | chooser.addChoosableFileFilter(f); |
||
321 | } |
||
322 | int returnVal = chooser.showOpenDialog(this); |
||
323 | if(returnVal == JFileChooser.APPROVE_OPTION){ |
||
324 | String fName = chooser.getSelectedFile().toString();
|
||
325 | FileFilter filter = chooser.getFileFilter();
|
||
326 | lastPathLoad = chooser.getCurrentDirectory().getAbsolutePath(); |
||
327 | |||
328 | if(getLyrPoints() == null) |
||
329 | return;
|
||
330 | |||
331 | lyrGeoRaster.getFLyrPoints().saveState(); |
||
332 | getLyrPoints().XML2PointList(fName); |
||
333 | } |
||
334 | } |
||
335 | |||
336 | //SALVAR PUNTOS
|
||
337 | 4698 | nacho | if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBSave()){
|
338 | 4686 | nacho | JFileChooser chooser = new JFileChooser(lastPathSave); |
339 | chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero")); |
||
340 | |||
341 | FileFilter f = null; |
||
342 | for(int i=0; i<this.fileFilters.length;i++){ |
||
343 | f = new SelectFileFilter(chooser, this.fileFilters[i]); |
||
344 | chooser.addChoosableFileFilter(f); |
||
345 | } |
||
346 | int returnVal = chooser.showOpenDialog(this); |
||
347 | if(returnVal == JFileChooser.APPROVE_OPTION){ |
||
348 | 4699 | nacho | String fName = chooser.getSelectedFile().toString();
|
349 | 4686 | nacho | lastPathSave = chooser.getCurrentDirectory().getAbsolutePath(); |
350 | 4699 | nacho | if(!fName.endsWith(".grf")) |
351 | fName = fName + ".grf";
|
||
352 | if(this.checkFileExists(fName)){ |
||
353 | if(getLyrPoints() != null) |
||
354 | getLyrPoints().PointList2XML(fName); |
||
355 | } |
||
356 | 4686 | nacho | } |
357 | |||
358 | } |
||
359 | 4698 | nacho | |
360 | //EXPORTAR A ASCII
|
||
361 | if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii()){
|
||
362 | JFileChooser chooser = new JFileChooser(lastPathSave); |
||
363 | chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero")); |
||
364 | |||
365 | FileFilter f = null; |
||
366 | for(int i=0; i<this.fileFilters.length;i++){ |
||
367 | f = new SelectFileFilter(chooser, this.fileFilters[i]); |
||
368 | chooser.addChoosableFileFilter(f); |
||
369 | } |
||
370 | int returnVal = chooser.showOpenDialog(this); |
||
371 | if(returnVal == JFileChooser.APPROVE_OPTION){ |
||
372 | String fName = chooser.getSelectedFile().toString();
|
||
373 | lastPathSave = chooser.getCurrentDirectory().getAbsolutePath(); |
||
374 | 4699 | nacho | if(this.checkFileExists(fName)){ |
375 | if(getLyrPoints() != null) |
||
376 | getLyrPoints().PointList2Ascii(fName); |
||
377 | } |
||
378 | 4698 | nacho | } |
379 | |||
380 | } |
||
381 | 4723 | nacho | |
382 | //DESACTIVAR PANELES
|
||
383 | JCheckBox cb = this.conectorPanel.getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel().getCbActive(); |
||
384 | if(e.getSource() == cb){
|
||
385 | if(cb.isSelected()){
|
||
386 | this.setEnabled(true); |
||
387 | getLyrPoints().setPointActive(getSelectedPoint(), true);
|
||
388 | }else{
|
||
389 | this.setEnabled(false); |
||
390 | getLyrPoints().setPointActive(getSelectedPoint(), false);
|
||
391 | } |
||
392 | theView.getMapControl().getMapContext().invalidate(); |
||
393 | getZoomControlLeft().draw(); |
||
394 | getZoomControlRight().draw(); |
||
395 | } |
||
396 | 4686 | nacho | } |
397 | |||
398 | /**
|
||
399 | * This method initializes bProcesar
|
||
400 | *
|
||
401 | * @return javax.swing.JButton
|
||
402 | */
|
||
403 | private JButton getBProcesar() { |
||
404 | if (bProcesar == null) { |
||
405 | bProcesar = new JButton(); |
||
406 | 4688 | nacho | bProcesar.setText(PluginServices.getText(this,"procesar")); |
407 | 4686 | nacho | bProcesar.setEnabled(false);
|
408 | bProcesar.addActionListener(new java.awt.event.ActionListener() {
|
||
409 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
410 | /*if (PluginServices.getMainFrame() == null) {
|
||
411 | ((JDialog) (getParent().getParent().getParent()
|
||
412 | .getParent())).dispose();
|
||
413 | } else {
|
||
414 | PluginServices.getMDIManager().closeView((com.iver.andami.ui.mdiManager.View) GeoreferencingDialog.this);
|
||
415 | }*/
|
||
416 | } |
||
417 | }); |
||
418 | } |
||
419 | return bProcesar;
|
||
420 | } |
||
421 | |||
422 | /**
|
||
423 | * El bot?n cancelar restaura el extent con el que se carg? la imagen a georreferenciar
|
||
424 | * y cierra la ventana.
|
||
425 | *
|
||
426 | * @return javax.swing.JButton
|
||
427 | */
|
||
428 | private JButton getBCancelar() { |
||
429 | if (bCancelar == null) { |
||
430 | bCancelar = new JButton(); |
||
431 | bCancelar.setText(PluginServices.getText(this,"cancelar")); |
||
432 | bCancelar.addActionListener(this);
|
||
433 | } |
||
434 | return bCancelar;
|
||
435 | } |
||
436 | |||
437 | /**
|
||
438 | * This method initializes jButton
|
||
439 | *
|
||
440 | * @return javax.swing.JButton
|
||
441 | */
|
||
442 | private JButton getBLoadPoints() { |
||
443 | if (bLoadPoints == null) { |
||
444 | bLoadPoints = new JButton(); |
||
445 | 4688 | nacho | bLoadPoints.setText(PluginServices.getText(this,"cargar")); |
446 | 4686 | nacho | bLoadPoints.setEnabled(true);
|
447 | bLoadPoints.addActionListener(this);
|
||
448 | } |
||
449 | return bLoadPoints;
|
||
450 | } |
||
451 | |||
452 | /**
|
||
453 | * Asigna a las textbox el valor de pixel pasado
|
||
454 | * @param x valor x
|
||
455 | * @param y valor y
|
||
456 | */
|
||
457 | public void setPixelText(double x, double y){ |
||
458 | getSelectPointsPanel().getDataPointPanel().getTX().setText(String.valueOf(x));
|
||
459 | getSelectPointsPanel().getDataPointPanel().getTY().setText(String.valueOf(y));
|
||
460 | } |
||
461 | |||
462 | /**
|
||
463 | * Asigna a las textbox el valor de coordenadas pasado
|
||
464 | * @param x valor x
|
||
465 | * @param y valor y
|
||
466 | */
|
||
467 | public void setMapCoordText(double x, double y){ |
||
468 | 4700 | nacho | getSelectPointsPanel().getDataPointPanel().getLongitud().setText(MathUtils.tailDecimals(String.valueOf(x), 5)); |
469 | getSelectPointsPanel().getDataPointPanel().getLatitud().setText(MathUtils.tailDecimals(String.valueOf(y), 5)); |
||
470 | 4686 | nacho | } |
471 | |||
472 | /**
|
||
473 | * Esta funci?n resetea los controles del panel de info de un punto.
|
||
474 | */
|
||
475 | public void resetControls(boolean active){ |
||
476 | 4698 | nacho | getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().setSaveToDisk(active); |
477 | 4686 | nacho | getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().resetControls(active); |
478 | getConectorPanel().getAdjustGeorefPanel().getZoomLeft().clear(); |
||
479 | 4729 | nacho | setEnabled(active); |
480 | 4686 | nacho | } |
481 | |||
482 | /* (non-Javadoc)
|
||
483 | * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
|
||
484 | */
|
||
485 | public void componentHidden(ComponentEvent arg0) { |
||
486 | // TODO Auto-generated method stub
|
||
487 | |||
488 | } |
||
489 | /* (non-Javadoc)
|
||
490 | * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)
|
||
491 | */
|
||
492 | public void componentMoved(ComponentEvent arg0) { |
||
493 | // TODO Auto-generated method stub
|
||
494 | |||
495 | } |
||
496 | /* (non-Javadoc)
|
||
497 | * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
|
||
498 | */
|
||
499 | public void componentResized(ComponentEvent ev) { |
||
500 | |||
501 | if(frame.getWidth() <= this.normalWidth + 10) |
||
502 | frame.setSize(this.normalWidth, frame.getHeight());
|
||
503 | |||
504 | if(this.getConectorPanel().getDataPointsTabPanel().getTbPoints().getSelectedIndex() == 1){ |
||
505 | tmpWidth = frame.getWidth(); |
||
506 | this.newFrameSize(frame.getWidth(), frame.getHeight() - 10); |
||
507 | } |
||
508 | } |
||
509 | /* (non-Javadoc)
|
||
510 | * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
|
||
511 | */
|
||
512 | public void componentShown(ComponentEvent arg0) { |
||
513 | // TODO Auto-generated method stub
|
||
514 | |||
515 | } |
||
516 | |||
517 | /**
|
||
518 | *Inicializa el tama?o del dialogo
|
||
519 | */
|
||
520 | public void resetSize(){ |
||
521 | if(!enlarge){
|
||
522 | frame.setSize(this.normalWidth + 12, this.normalHeight + 10); |
||
523 | }else{
|
||
524 | frame.setSize(this.normalWidth + 12, this.enlargeHeight + 10); |
||
525 | } |
||
526 | newFrameSize((int)Math.round(this.normalWidth / 0.98), this.normalHeight); |
||
527 | } |
||
528 | |||
529 | /**
|
||
530 | * Calculo del nuevo tama?o a partir de un frame redimensionado
|
||
531 | * @param w Ancho del frame
|
||
532 | * @param h Alto del frame
|
||
533 | */
|
||
534 | public void newFrameSize(int w, int h){ |
||
535 | int newWidth = (int)Math.round(w * 0.98); |
||
536 | |||
537 | this.setSize(new java.awt.Dimension(newWidth, normalHeight )); |
||
538 | this.setPreferredSize(new java.awt.Dimension(newWidth, normalHeight )); |
||
539 | this.getConectorPanel().newFrameSize(newWidth, h);
|
||
540 | } |
||
541 | |||
542 | /**
|
||
543 | * Elimina un punto de la tabla de puntos
|
||
544 | * @param pos Posici?n del punto a eliminar
|
||
545 | */
|
||
546 | public void removeTableValueAt(int pos) throws ArrayIndexOutOfBoundsException{ |
||
547 | ((DefaultTableModel)this.getTable().getTable().getModel()).removeRow(pos); |
||
548 | } |
||
549 | |||
550 | |||
551 | //**********************End Methods***************************
|
||
552 | |||
553 | //**********************Setters & Getters*********************
|
||
554 | /**
|
||
555 | * Obtiene la tabla de puntos
|
||
556 | */
|
||
557 | public PointTable getTable(){
|
||
558 | return this.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getJTable(); |
||
559 | } |
||
560 | |||
561 | /**
|
||
562 | * Asigna un valor a una posici?n de la tabla
|
||
563 | * @param value Valor a asignar
|
||
564 | * @param row Fila en la que se asigna
|
||
565 | * @param col Columna en la que se asigna
|
||
566 | */
|
||
567 | public void setTableValueAt(String value, int row, int col)throws ArrayIndexOutOfBoundsException{ |
||
568 | ((DefaultTableModel)this.getTable().getTable().getModel()).setValueAt(value, row, col); |
||
569 | } |
||
570 | |||
571 | /**
|
||
572 | * Obtiene el n?mero de filas de la tabla
|
||
573 | * @return N?mero de filas de la tabla
|
||
574 | */
|
||
575 | public int getTableRowCount(){ |
||
576 | return this.getTable().getTable().getRowCount(); |
||
577 | } |
||
578 | |||
579 | /**
|
||
580 | * A?ade una nueva fila a la tabla de puntos
|
||
581 | */
|
||
582 | public void addTableNew(){ |
||
583 | this.getTable().getTableModel().addNew();
|
||
584 | } |
||
585 | /**
|
||
586 | * @return Returns the tmpWidth.
|
||
587 | */
|
||
588 | public int getTmpWidth() { |
||
589 | return tmpWidth;
|
||
590 | } |
||
591 | /**
|
||
592 | * @param tmpWidth The tmpWidth to set.
|
||
593 | */
|
||
594 | public void setTmpWidth(int tmpWidth) { |
||
595 | this.tmpWidth = tmpWidth;
|
||
596 | } |
||
597 | /**
|
||
598 | * @return Returns the enlargeHeight.
|
||
599 | */
|
||
600 | public int getEnlargeHeight() { |
||
601 | return enlargeHeight;
|
||
602 | } |
||
603 | /**
|
||
604 | * @return Returns the normalHeight.
|
||
605 | */
|
||
606 | public int getNormalHeight() { |
||
607 | return normalHeight;
|
||
608 | } |
||
609 | |||
610 | /**
|
||
611 | * @return Returns the normalWidth.
|
||
612 | */
|
||
613 | public int getNormalWidth() { |
||
614 | return normalWidth;
|
||
615 | } |
||
616 | |||
617 | /**
|
||
618 | * This method initializes jButton
|
||
619 | *
|
||
620 | * @return javax.swing.JButton
|
||
621 | */
|
||
622 | private JButton getBSavePoints() { |
||
623 | if (bSavePoints == null) { |
||
624 | bSavePoints = new JButton(); |
||
625 | 4688 | nacho | bSavePoints.setText(PluginServices.getText(this,"salvar")); |
626 | //bSavePoints.setPreferredSize(new java.awt.Dimension(41,25));
|
||
627 | 4686 | nacho | bSavePoints.addActionListener(this);
|
628 | } |
||
629 | return bSavePoints;
|
||
630 | } |
||
631 | |||
632 | /**
|
||
633 | * Asigna el valor del campo RMS
|
||
634 | * @param rms Cadena que representa el RMS
|
||
635 | */
|
||
636 | public void setRMS(String rms){ |
||
637 | this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getErrorPointPanel().getTRMS().setText(rms);
|
||
638 | } |
||
639 | |||
640 | /**
|
||
641 | * Asigna el valor del campo de residuo en X
|
||
642 | * @param rms Cadena que representa el RMS
|
||
643 | */
|
||
644 | public void setResX(String resX){ |
||
645 | this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getErrorPointPanel().getTResX().setText(resX);
|
||
646 | } |
||
647 | |||
648 | /**
|
||
649 | * Asigna el valor del campo de residuo en Y
|
||
650 | * @param rms Cadena que representa el RMS
|
||
651 | */
|
||
652 | public void setResY(String resY){ |
||
653 | this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getErrorPointPanel().getTResY().setText(resY);
|
||
654 | } |
||
655 | |||
656 | /**
|
||
657 | * Asigna el valor del campo RMS
|
||
658 | * @param rms Cadena que representa el RMS
|
||
659 | */
|
||
660 | public void setTotal(String total){ |
||
661 | this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getErrorPointPanel().getTTotal().setText(total);
|
||
662 | } |
||
663 | |||
664 | /**
|
||
665 | * @return Returns the lyrGeoRaster.
|
||
666 | */
|
||
667 | public FLyrGeoRaster getLyrGeoRaster() {
|
||
668 | return lyrGeoRaster;
|
||
669 | } |
||
670 | |||
671 | /**
|
||
672 | * @return Returns the lyrPoints.
|
||
673 | */
|
||
674 | public FLyrPoints getLyrPoints() {
|
||
675 | try{
|
||
676 | return lyrGeoRaster.getFLyrPoints();
|
||
677 | }catch(ClassCastException exc){ |
||
678 | return null; |
||
679 | } |
||
680 | } |
||
681 | |||
682 | /**
|
||
683 | * Selecciona un tab del cuadro
|
||
684 | * @param index
|
||
685 | */
|
||
686 | public void setSelectedTab(int index){ |
||
687 | this.getConectorPanel().getDataPointsTabPanel().getTbPoints().setSelectedIndex(index);
|
||
688 | } |
||
689 | |||
690 | /**
|
||
691 | * @param extended The extended to set.
|
||
692 | */
|
||
693 | public void setEnlarge(boolean enlarge) { |
||
694 | this.enlarge = enlarge;
|
||
695 | if(!enlarge){
|
||
696 | 4723 | nacho | frame.setSize(new Dimension(this.normalWidth + 12, this.normalHeight + 10)); |
697 | frame.setPreferredSize(new Dimension(this.normalWidth + 12, this.normalHeight + 10)); |
||
698 | 4686 | nacho | this.setPreferredSize(new Dimension(this.normalWidth, this.normalHeight)); |
699 | this.setSize(new Dimension(this.normalWidth, this.normalHeight)); |
||
700 | this.getConectorPanel().setCanvasVisible(false); |
||
701 | }else{
|
||
702 | 4723 | nacho | frame.setSize(new Dimension(this.normalWidth + 12, this.enlargeHeight + 10)); |
703 | frame.setPreferredSize(new Dimension(this.normalWidth + 12, this.enlargeHeight + 10)); |
||
704 | 4686 | nacho | this.setPreferredSize(new Dimension(this.normalWidth, this.enlargeHeight)); |
705 | this.setSize(new Dimension(this.normalWidth, this.enlargeHeight)); |
||
706 | 4734 | nacho | this.getConectorPanel().setCanvasVisible(true); |
707 | 4686 | nacho | } |
708 | frame.pack(); |
||
709 | } |
||
710 | |||
711 | /**
|
||
712 | * @return Returns the extended.
|
||
713 | */
|
||
714 | public boolean isEnlarge() { |
||
715 | return enlarge;
|
||
716 | } |
||
717 | |||
718 | /**
|
||
719 | * Obtiene el panel conector
|
||
720 | * @return
|
||
721 | */
|
||
722 | public ConectorPanel getConectorPanel() {
|
||
723 | if (conectorPanel == null) { |
||
724 | conectorPanel = new ConectorPanel(this); |
||
725 | } |
||
726 | |||
727 | return conectorPanel;
|
||
728 | } |
||
729 | |||
730 | /**
|
||
731 | * This method initializes jPanel
|
||
732 | *
|
||
733 | * @return javax.swing.JPanel
|
||
734 | */
|
||
735 | private JPanel getPBotones() { |
||
736 | if (pBotones == null) { |
||
737 | FlowLayout flowLayout1 = new FlowLayout(); |
||
738 | pBotones = new JPanel(); |
||
739 | pBotones.setLayout(flowLayout1); |
||
740 | flowLayout1.setHgap(10);
|
||
741 | 4688 | nacho | flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT); |
742 | 4686 | nacho | pBotones.add(getBProcesar(), null);
|
743 | pBotones.add(getBAceptar(), null);
|
||
744 | pBotones.add(getBCancelar(), null);
|
||
745 | } |
||
746 | return pBotones;
|
||
747 | } |
||
748 | |||
749 | public static IProjection getLastProjection() { |
||
750 | return proj;
|
||
751 | } |
||
752 | public static void setLastProjection(IProjection proj) { |
||
753 | GeoreferencingDialog.proj = proj; |
||
754 | } |
||
755 | |||
756 | /**
|
||
757 | * @return Returns the GeoRedimBehavior.
|
||
758 | */
|
||
759 | public GeoRedimBehavior getGeoRedimBehavior() {
|
||
760 | return rb;
|
||
761 | } |
||
762 | |||
763 | /**
|
||
764 | * @param rb The GeoRedimBehavior to set.
|
||
765 | */
|
||
766 | public void setGeoRedimBehavior(GeoRedimBehavior rb) { |
||
767 | this.rb = rb;
|
||
768 | } |
||
769 | |||
770 | /**
|
||
771 | * @return Returns the GeoMoveBehavior
|
||
772 | */
|
||
773 | public GeoMoveBehavior getGeoMoveBehavior() {
|
||
774 | return mb;
|
||
775 | } |
||
776 | |||
777 | /**
|
||
778 | * @param mb The GeoMoveBehavior to set.
|
||
779 | */
|
||
780 | public void setGeoMoveBehavior(GeoMoveBehavior mb) { |
||
781 | this.mb = mb;
|
||
782 | } |
||
783 | |||
784 | |||
785 | /**
|
||
786 | * Obtiene el punto de la lista que ha sido seleccionado
|
||
787 | * @return
|
||
788 | */
|
||
789 | public int getSelectedPoint(){ |
||
790 | return getConectorPanel().getDataPointsTabPanel().
|
||
791 | getSelectPointsPanel().getTableControlerPanel().getSelectedIndex(); |
||
792 | } |
||
793 | |||
794 | /**
|
||
795 | * Obtiene el control de la mini imagen que tiene los botones a la izquierda
|
||
796 | * @return ZoomControlPanel
|
||
797 | */
|
||
798 | public ZoomControlPanel getZoomControlLeft(){
|
||
799 | return this.getConectorPanel().getAdjustGeorefPanel().getZoomLeft(); |
||
800 | } |
||
801 | |||
802 | /**
|
||
803 | * Obtiene el control de la mini imagen que tiene los botones a la derecha
|
||
804 | * @return ZoomControlPanel
|
||
805 | */
|
||
806 | public ZoomControlPanel getZoomControlRight(){
|
||
807 | return this.getConectorPanel().getAdjustGeorefPanel().getZoomRight(); |
||
808 | } |
||
809 | |||
810 | /**
|
||
811 | * Obtiene el panel de selecci?n de puntos
|
||
812 | * @return Panel de selecci?n de puntos
|
||
813 | */
|
||
814 | public SelectPointsPanel getSelectPointsPanel(){
|
||
815 | return this.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel(); |
||
816 | } |
||
817 | |||
818 | /**
|
||
819 | * Obtiene el panel de opciones
|
||
820 | * @return OptionPanel
|
||
821 | */
|
||
822 | public OptionsPanel getOptionsPanel(){
|
||
823 | return getConectorPanel().getAdjustGeorefPanel().getOptionsPanel();
|
||
824 | } |
||
825 | |||
826 | /**
|
||
827 | * Asigna el frame
|
||
828 | * @param f
|
||
829 | */
|
||
830 | public void setFrame(JInternalFrame f){ |
||
831 | frame = f; |
||
832 | frame.addComponentListener(this);
|
||
833 | } |
||
834 | |||
835 | /**
|
||
836 | * Obtiene el frame
|
||
837 | * @return frame
|
||
838 | */
|
||
839 | public JInternalFrame getFrame(){ |
||
840 | return frame;
|
||
841 | } |
||
842 | 4700 | nacho | |
843 | /**
|
||
844 | * Obtiene el gestor de puntos
|
||
845 | * @return PointManager
|
||
846 | */
|
||
847 | public PointManager getPointManager() {
|
||
848 | return pointManager;
|
||
849 | } |
||
850 | 4723 | nacho | |
851 | /**
|
||
852 | * Activa o desactiva este panel y todos los que lo componen
|
||
853 | * @param enabled variable booleana para la activaci?n y/o desactivaci?n
|
||
854 | */
|
||
855 | public void setEnabled(boolean enabled){ |
||
856 | this.conectorPanel.getDataPointsTabPanel().getSelectPointsPanel().setEnabled(enabled);
|
||
857 | this.conectorPanel.getAdjustGeorefPanel().setEnabled(enabled);
|
||
858 | } |
||
859 | 4686 | nacho | //**********************End Setters & Getters*****************
|
860 | |||
861 | } // @jve:decl-index=0:visual-constraint="10,10"
|
||
862 | // @jve:visual-info decl-index=0 visual-constraint="10,10"
|
||
863 | // @jve:visual-info decl-index=0 visual-constraint="10,10" |