Statistics
| Revision:

root / org.gvsig.projection.jcrs / trunk / org.gvsig.projection.app.jcrs / org.gvsig.projection.app.jcrs.common / src / main / java / org / gvsig / crs / gui / CRSMainTrPanel.java @ 226

History | View | Annotate | Download (18.6 KB)

1
/* gvSIG. Sistema de Informacin Geogrfica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 Instituto de Desarrollo Regional and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ibez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   Instituto de Desarrollo Regional (Universidad de Castilla La-Mancha)
34
 *   Campus Universitario s/n
35
 *   02071 Alabacete
36
 *   Spain
37
 *
38
 *   +34 967 599 200
39
 */
40

    
41
package org.gvsig.crs.gui;
42

    
43
import java.awt.BorderLayout;
44
import java.awt.CardLayout;
45
import java.awt.Dimension;
46
import java.awt.FlowLayout;
47

    
48
import javax.swing.BorderFactory;
49
import javax.swing.JButton;
50
import javax.swing.JComboBox;
51
import javax.swing.JLabel;
52
import javax.swing.JPanel;
53
import javax.swing.ListSelectionModel;
54
import javax.swing.border.EmptyBorder;
55

    
56
import org.cresques.cts.IProjection;
57
import org.gvsig.andami.PluginServices;
58
import org.gvsig.andami.ui.mdiManager.IWindow;
59
import org.gvsig.andami.ui.mdiManager.WindowInfo;
60
import org.gvsig.crs.CrsException;
61
import org.gvsig.crs.CrsFactory;
62
import org.gvsig.crs.CrsWkt;
63
import org.gvsig.crs.ICrs;
64
import org.gvsig.crs.gui.listeners.CRSMainTrPanelListener;
65
import org.gvsig.crs.gui.panels.TransformationCapaPanel;
66
import org.gvsig.crs.gui.panels.TransformationEpsgPanel;
67
import org.gvsig.crs.gui.panels.TransformationManualPanel;
68
import org.gvsig.crs.gui.panels.TransformationNadgridsPanel;
69
import org.gvsig.crs.gui.panels.TransformationRecentsPanel;
70
import org.gvsig.crs.gui.panels.TransformationVistaPanel;
71
import org.gvsig.fmap.crs.CRSFactory;
72
import org.slf4j.Logger;
73
import org.slf4j.LoggerFactory;
74

    
75

    
76
/**
77
 * Clase que genera el panel de transformacin, en el que se incluye la
78
 * eleccin del CRS de la capa, as como el de la posibilidad de poder
79
 * asignarle una transformacin.
80
 * 
81
 * @author Jos Luis Gmez Martnez (jolugomar@gmail.com)
82
 * @author Luisa Marina Fernandez (luisam.fernandez@uclm.es)
83
 *
84
 */
85

    
86
public class CRSMainTrPanel extends JPanel implements IWindow{
87
        public static final Logger logger = LoggerFactory.getLogger(CRSMainTrPanel.class);
88

    
89
        private static final long serialVersionUID = 1L;
90
        
91
        /*
92
         * Para mostrar los parametros si tenemos seleccionada transformacion
93
         */
94
        boolean tra = false; 
95
        boolean inAnApplet = true;
96
        private boolean cancelYes = false;
97
        private JButton jButtonCancel = null;
98
        private JButton jButtonNext = null;
99
        private JButton jButtonAccept = null;
100
        private JButton jButtonBefore = null;
101
        private JPanel jPanelButtons = null;
102
        private JLabel jLabelTrans=null;
103
        
104
        boolean targetNad = false;        
105
        
106
        String crs_target = null;
107
        CrsWkt crsWkt_target = null;
108
                
109
        int transformation_code = 0;        
110
        
111
        //**private JPanel panel = null;
112
        CRSMainPanel viewPan = null;
113
        
114
        private JPanel jPanelMain = null;
115
        private TransformationManualPanel manualTrPanel = null;
116
        private boolean manual_tr = false;
117
        private TransformationEpsgPanel epsgTrPanel = null;
118
        private boolean epsg_tr = false;
119
        private TransformationNadgridsPanel nadsTrPanel = null;
120
        private boolean nads_tr = false;
121
        private TransformationRecentsPanel recentsTrPanel = null;
122
        private boolean recents_tr = false;
123
        private TransformationVistaPanel vistaTrPanel=null;
124
        private boolean vista_tr=false;
125
        private TransformationCapaPanel capaTrPanel=null;
126
        private boolean capa_tr=false;
127
        private boolean compuesta_tr=false;
128
        
129
        
130
        private boolean sin_tr = false;
131
        private JPanel jPanelCombo = null;
132
        private JComboBox jComboOptions = null;
133
        
134
        private IProjection crsfirst;
135
        
136
        private CRSMainPanel crsMainPanel;
137
        private String newSelection;
138
        String dataSource = "";
139
        ICrs curProj = null;
140
        
141
        public CRSMainTrPanel(ICrs proj) {
142
            // Para evitar errores, si no disponemos de target creamos uno
143
            // por defecto.
144
            ICrs crs = (ICrs) CRSFactory.getCRS("EPSG:4326");
145
            int target = crs.getCode();
146
            CrsWkt crsWkttarget = crs.getCrsWkt();
147
            initialize(target, crsWkttarget, proj);
148
        }
149
        
150
        public CRSMainTrPanel(int target, CrsWkt crsWkttarget, ICrs proj) {                        
151
            initialize(target, crsWkttarget, proj);
152
        }
153
        
154
        private void initialize(int target, CrsWkt crsWkttarget, ICrs proj) {
155
                curProj = proj;
156
                crsMainPanel = new CRSMainPanel(target, curProj);                
157
                viewPan = crsMainPanel;
158
                
159
                crs_target = crsWkttarget.getAuthority()[0]+":"+crsWkttarget.getAuthority()[1];
160
                setCrsWkt_target(crsWkttarget);                        
161
                //Construir todos los paneles de transformaciones
162
                manualTrPanel = new TransformationManualPanel();
163
                epsgTrPanel = new TransformationEpsgPanel(crs_target);
164
                nadsTrPanel = new TransformationNadgridsPanel(true);
165
                recentsTrPanel = new TransformationRecentsPanel();
166
                capaTrPanel=new TransformationCapaPanel(crs_target, this);
167
                vistaTrPanel=new TransformationVistaPanel(crs_target, this);
168
                
169
                
170
                /*
171
                 * esta variable contendr tanto el panel utilizado en CRSViewPanel, como los paneles
172
                 * que seran necesarios para realizar las transformaciones
173
                 */
174
                jPanelMain = new JPanel();
175
                jPanelMain.setLayout(new CardLayout());                
176
                jPanelMain.add("primero", viewPanel());
177
                jPanelMain.add("manual", manualTrPanel);
178
                jPanelMain.add("epsg", epsgTrPanel);
179
                jPanelMain.add("nad", nadsTrPanel);
180
                jPanelMain.add("recents", recentsTrPanel);
181
                jPanelMain.add("vista",vistaTrPanel);
182
                jPanelMain.add("capa",capaTrPanel);
183
                
184
                this.setLayout(new BorderLayout());        
185
                this.add(jPanelMain, BorderLayout.CENTER);
186
                this.add(getButtons(), BorderLayout.SOUTH);
187
                
188
                setListeners();
189
                
190
                setDataSource(crsMainPanel.getDataSource());
191
                crsMainPanel.getCrsAndTransformationRecentsPanel().loadRecents(crsWkttarget, proj);
192
        }
193
        
194
        /**
195
         * Este mtodo cargar todo el panel utilizado en dicho panel el
196
         *  CRSViewPanel y el combobox de las transformaciones
197
         */
198
        private JPanel viewPanel(){
199
                JPanel integro = new JPanel();
200
                integro.setLayout(new BorderLayout());
201
                integro.setBorder(BorderFactory.createTitledBorder(PluginServices.getText(this,"crsAndTransformation")));
202
        
203
                integro.add(viewPan.capa(),BorderLayout.CENTER);
204
                //**integro.add(getJPanel(), null);
205
                integro.add(getCombopanel(),BorderLayout.SOUTH);
206
                return integro;
207
        }
208
        
209
        /**
210
         * Define el panel en el que se integran el label y el combobox 
211
         * de transformaciones
212
         */
213
        public JPanel getCombopanel(){
214
                if (jPanelCombo == null){
215
                        jPanelCombo = new JPanel();
216
                        jPanelCombo.setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
217
                        jPanelCombo.add(getJLabelTrans());
218
                        jPanelCombo.add(getJComboOptions());
219
                }
220
                
221
                return jPanelCombo;
222
        }
223
        /**
224
         * Inicializa la etiqueta 'Seleccione Transformacion'
225
         * @return
226
         */
227
        private JLabel getJLabelTrans(){
228
                if (jLabelTrans==null){
229
                        jLabelTrans = new JLabel();
230
                        jLabelTrans.setPreferredSize(new Dimension(180, 25));
231
                        jLabelTrans.setText(PluginServices.getText(this, "seleccione_transformacion")+":");
232
                }
233
                return jLabelTrans;
234
        }
235
        /**
236
         * Inicializa el comboBox de Tansformaciones
237
         * @return
238
         */
239
        public JComboBox getJComboOptions(){
240
                if (jComboOptions == null){
241
                        String[] selection = {PluginServices.getText(this, "sin_transformacion"),
242
                                        PluginServices.getText(this, "recents_transformation"),
243
                                        PluginServices.getText(this, "transformacion_epsg"),
244
                                        PluginServices.getText(this, "transformacion_manual"),
245
                                        PluginServices.getText(this, "transformacion_compuesta"),
246
                                        PluginServices.getText(this, "nadgrids")}; 
247
                        jComboOptions = new JComboBox(selection);
248
                        jComboOptions.setPreferredSize(new Dimension(180,25));        
249
                        jComboOptions.setEnabled(false);
250
                        jComboOptions.setEditable(false);                        
251
                        jComboOptions.setSelectedIndex(0);
252
                        newSelection = (String) jComboOptions.getSelectedItem();                        
253
                }
254
                return jComboOptions;
255
        }
256
        /**
257
         * Agrega los botones: Aceptar, cancelar, siguiente y finalizar
258
         * @return
259
         */
260
        private JPanel getButtons() {
261
                if(jPanelButtons == null) {
262
                        jPanelButtons = new JPanel();
263
                        jPanelButtons.setLayout(new FlowLayout(FlowLayout.RIGHT,10,10));
264
                        jPanelButtons.add(getJButtonCancel());
265
                        jPanelButtons.add(getJButtonBefore());
266
                        jPanelButtons.add(getJButtonNext());
267
                        jPanelButtons.add(getJButtonAccept());
268
                }
269
                return jPanelButtons;
270
        }
271
        /**
272
         * Inicializa el botn 'Anterior'
273
         * @return
274
         */
275
        public JButton getJButtonBefore(){
276
                if(jButtonBefore == null) {
277
                        jButtonBefore = new JButton();
278
                        jButtonBefore.setText(PluginServices.getText(this,"anterior"));
279
                        jButtonBefore.setMnemonic('B');                        
280
                        jButtonBefore.setPreferredSize(new Dimension(100,25));                        
281
                        jButtonBefore.setEnabled(false);
282
                }
283
                return jButtonBefore;
284
        }
285
        /**
286
         * Inicializa el botn 'Finalizar'
287
         * @return
288
         */
289
        public JButton getJButtonAccept() {
290
                if(jButtonAccept == null) {
291
                        jButtonAccept = new JButton();
292
                        jButtonAccept.setText(PluginServices.getText(this,"finalizar"));
293
                        jButtonAccept.setMnemonic('O');
294
                        jButtonAccept.setVisible(true);
295
                        jButtonAccept.setEnabled(false);
296
                        jButtonAccept.setPreferredSize(new Dimension(100,25));
297
                }
298
                return jButtonAccept;
299
        }
300
        /**
301
         * Inicializa el botn 'Siguiente'
302
         * @return
303
         */
304
        public JButton getJButtonNext() {
305
                if(jButtonNext == null) {
306
                        jButtonNext = new JButton();
307
                        jButtonNext.setText(PluginServices.getText(this,"siguiente"));
308
                        jButtonNext.setMnemonic('S');
309
                        jButtonNext.setVisible(true);
310
                        jButtonNext.setPreferredSize(new Dimension(100,25));
311
                }
312
                return jButtonNext;
313
        }
314
        /**
315
         * Inicializa el botn 'Cancelar'
316
         * @return
317
         */
318
        public JButton getJButtonCancel() {
319
                if(jButtonCancel == null) {
320
                        jButtonCancel = new JButton();
321
                        jButtonCancel.setText(PluginServices.getText(this,"cancel"));
322
                        jButtonCancel.setMnemonic('C');
323
                        jButtonCancel.setPreferredSize(new Dimension(100,25));
324
                }
325
                return jButtonCancel;
326
        }
327
        
328
        public void setTargetNad(boolean tarNad){
329
                targetNad = tarNad;
330
        }
331
        
332
        public boolean getTargetNad(){
333
                return targetNad;
334
        }
335
        
336
        /*
337
         * revisar esta solucion
338
         */
339
        public ICrs getProjection() {
340
                if (sin_tr) {
341
                        ICrs crs;
342
                        String dataSource = getDataSource();
343
                        try {
344
                                
345
                                if (dataSource.equals(PluginServices.getText(this,"EPSG"))){
346
                                  //crs = new CrsFactory().getCRS(crsMainPanel.getEpsgPanel().getCodeCRS(),crsMainPanel.getEpsgPanel().getWKT());
347
                                        crs = new CrsFactory().getCRS("EPSG:"+crsMainPanel.getEpsgPanel().getCodeCRS());
348
                                }
349
                                else if (dataSource.equals(PluginServices.getText(this,"IAU2000"))){
350
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getIauPanel().getCodeCRS(),crsMainPanel.getIauPanel().getWKT());
351
                                        crs = new CrsFactory().getCRS("IAU2000:"+crsMainPanel.getIauPanel().getCodeCRS());
352
                                } 
353
                                else if (dataSource.equals(PluginServices.getText(this,"recientes"))){
354
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getRecentsPanel().getCodeCRS(),crsMainPanel.getRecentsPanel().getCrs().getWKT());
355
                                        crs = new CrsFactory().getCRS(crsMainPanel.getCrsAndTransformationRecentsPanel().getAuthority());
356
                                } 
357
                else if (dataSource.equals(PluginServices.getText(this,"CRS"))){
358
                    //crs = new CrsFactory().getCRS(crsMainPanel.getEsriPanel().getCodeCRS(),crsMainPanel.getEsriPanel().getWKT());
359
                    crs = new CrsFactory().getCRS("CRS:"+crsMainPanel.getNoAuthPanel().getCodeCRS());
360
                } 
361
                                else if (dataSource.equals(PluginServices.getText(this,"ESRI"))){
362
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getEsriPanel().getCodeCRS(),crsMainPanel.getEsriPanel().getWKT());
363
                                        crs = new CrsFactory().getCRS("ESRI:"+crsMainPanel.getEsriPanel().getCodeCRS());
364
                                } 
365
                                else if (dataSource.equals(PluginServices.getText(this,"newCRS"))){
366
                                        crs = new CrsFactory().getCRS("USR:"+crsMainPanel.getNewCrsPanel().getCodeCRS());
367
                                }
368
                                else {
369
                                        sin_tr = false;
370
                                        return null;
371
                                }
372
                                sin_tr = false;
373
                                return crs;
374
                        } catch (CrsException e) {
375
                                logger.info("Can't create CRS from '"+dataSource+"'.",e);
376

    
377
                        }
378
                        return null;
379
                }                
380
                return (ICrs) crsfirst;                
381
        }
382
        
383
        public void setProjection(IProjection proj) {
384
                crsfirst = proj;
385
        }
386
        
387
        /**
388
         * Mtodo para aplicarle los eventos necesarios en el panel actual. La
389
         * definicin de estos listeners estarn en la clase CRSMainTrPanelListener
390
         *
391
         */
392
        private void setListeners(){
393

    
394
                CRSMainTrPanelListener listener = new CRSMainTrPanelListener(this);
395
                
396
                jButtonAccept.addActionListener(listener);
397
                jButtonBefore.addActionListener(listener);
398
                jButtonCancel.addActionListener(listener);
399
                jButtonNext.addActionListener(listener);
400
                crsMainPanel.getJComboOptions().addItemListener(listener);
401
                getJComboOptions().addActionListener(listener);
402
                getRecentsTrPanel().getJButtonInfo().addActionListener(listener);
403
                
404
                ListSelectionModel rowSM = crsMainPanel.getEpsgPanel().getJTable().getSelectionModel();
405
                rowSM.addListSelectionListener(listener);
406
                
407
                ListSelectionModel rowSMiau = crsMainPanel.getIauPanel().getJTable().getSelectionModel();
408
                rowSMiau.addListSelectionListener(listener);
409
                
410
                ListSelectionModel rowSMrecents = crsMainPanel.getCrsAndTransformationRecentsPanel().getJTable().getSelectionModel();
411
                rowSMrecents.addListSelectionListener(listener);
412
                
413
        ListSelectionModel rowSMnoauth = crsMainPanel.getNoAuthPanel().getJTable().getSelectionModel();
414
        rowSMnoauth.addListSelectionListener(listener);
415
        
416
                ListSelectionModel rowSMesri = crsMainPanel.getEsriPanel().getJTable().getSelectionModel();
417
                rowSMesri.addListSelectionListener(listener);
418
                
419
                ListSelectionModel rowSMusr = crsMainPanel.getNewCrsPanel().getJTable().getSelectionModel();
420
                rowSMusr.addListSelectionListener(listener);
421
                
422
        crsMainPanel.getNoAuthPanel().getJTable().addMouseListener(listener);
423
        crsMainPanel.getEsriPanel().getJTable().addMouseListener(listener);
424
                crsMainPanel.getEpsgPanel().getJTable().addMouseListener(listener);
425
        crsMainPanel.getCrsAndTransformationRecentsPanel().getJTable().addMouseListener(listener);
426
        crsMainPanel.getIauPanel().getJTable().addMouseListener(listener);
427
        crsMainPanel.getNewCrsPanel().getJTable().addMouseListener(listener);
428
        getEpsgTrPanel().getJTable().addMouseListener(listener);
429
        getRecentsTrPanel().getJTable().addMouseListener(listener);
430
        
431
        ListSelectionModel rowSMEpsgTr = getEpsgTrPanel().getJTable().getSelectionModel();
432
                rowSMEpsgTr.addListSelectionListener(listener);
433
                
434
                ListSelectionModel rowSMRecentsTr = getRecentsTrPanel().getJTable().getSelectionModel();
435
                rowSMRecentsTr.addListSelectionListener(listener);
436
                
437
                getNadsTrPanel().getJComboNadFile().addItemListener(listener);
438
                
439
                getManualTrPanel().getTx_Translation().addKeyListener(listener);
440
                getManualTrPanel().getTy_Translation().addKeyListener(listener);
441
                getManualTrPanel().getTz_Translation().addKeyListener(listener);
442
                getManualTrPanel().getTx_Rotation().addKeyListener(listener);
443
                getManualTrPanel().getTy_Rotation().addKeyListener(listener);
444
                getManualTrPanel().getTz_Rotation().addKeyListener(listener);
445
                getManualTrPanel().getTscale().addKeyListener(listener);
446
        }
447
                
448
        public void setDataSource(String sour){
449
                dataSource = sour;
450
        }
451
        
452
        public String getDataSource(){
453
                return crsMainPanel.getDataSource();
454
        }
455
        
456
        public WindowInfo getWindowInfo() {
457
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
458
                   m_viewinfo.setTitle(PluginServices.getText(this,"crsview"));
459
                return m_viewinfo;
460
        }
461

    
462
        public CRSMainPanel getCrsMainPanel() {
463
                return crsMainPanel;
464
        }
465

    
466
        public TransformationEpsgPanel getEpsgTrPanel() {
467
                return epsgTrPanel;
468
        }
469

    
470
        public TransformationManualPanel getManualTrPanel() {
471
                return manualTrPanel;
472
        }
473

    
474
        public TransformationNadgridsPanel getNadsTrPanel() {
475
                return nadsTrPanel;
476
        }
477
        
478
        public TransformationRecentsPanel getRecentsTrPanel() {
479
                return recentsTrPanel;
480
        }
481

    
482
        public boolean isEpsg_tr() {
483
                return epsg_tr;
484
        }
485

    
486
        public boolean isManual_tr() {
487
                return manual_tr;
488
        }
489

    
490
        public boolean isNads_tr() {
491
                return nads_tr;
492
        }
493
        
494
        public boolean isRecents_tr() {
495
                return recents_tr;
496
        }
497

    
498
        public boolean isSin_tr() {
499
                return sin_tr;
500
        }
501

    
502
        public void setEpsg_tr(boolean epsg_tr) {
503
                this.epsg_tr = epsg_tr;
504
        }
505

    
506
        public void setManual_tr(boolean manual_tr) {
507
                this.manual_tr = manual_tr;
508
        }
509

    
510
        public void setNads_tr(boolean nads_tr) {
511
                this.nads_tr = nads_tr;
512
        }
513
        
514
        public void setRecents_tr(boolean recents_tr) {
515
                this.recents_tr = recents_tr;
516
        }
517

    
518
        public void setSin_tr(boolean sin_tr) {
519
                this.sin_tr = sin_tr;
520
        }
521

    
522
        public boolean isCancelYes() {
523
                return cancelYes;
524
        }
525

    
526
        public void setCancelYes(boolean cancelYes) {
527
                this.cancelYes = cancelYes;
528
        }
529

    
530
        public IProjection getCrsfirst() {
531
                return crsfirst;
532
        }
533

    
534
        public JPanel getJPanelMain() {
535
                return jPanelMain;
536
        }
537

    
538
        public String getNewSelection() {
539
                return newSelection;
540
        }
541

    
542
        public void setNewSelection(String newSelection) {
543
                this.newSelection = newSelection;
544
        }
545
        
546
        public CrsWkt getCrsWkt_target() {
547
                return crsWkt_target;
548
        }
549
        
550
        public void setCrsWkt_target(CrsWkt crsWkt_target) {
551
                this.crsWkt_target = crsWkt_target;
552
        }
553

    
554
        public TransformationVistaPanel getVistaTrPanel() {
555
                return vistaTrPanel;
556
        }
557

    
558
        public TransformationCapaPanel getCapaTrPanel() {
559
                return capaTrPanel;
560
        }
561

    
562
        public boolean isVista_tr() {
563
                return vista_tr;
564
        }
565

    
566
        public boolean isCapa_tr() {
567
                return capa_tr;
568
        }
569

    
570
        public boolean isCompuesta_tr() {
571
                return compuesta_tr;
572
        }
573

    
574
        public void setCapa_tr(boolean capa_tr) {
575
                this.capa_tr = capa_tr;
576
        }
577

    
578
        public void setCompuesta_tr(boolean compuesta_tr) {
579
                this.compuesta_tr = compuesta_tr;
580
        }
581

    
582
        public void setVista_tr(boolean vista_tr) {
583
                this.vista_tr = vista_tr;
584
        }
585

    
586
        public Object getWindowProfile() {
587
                return WindowInfo.DIALOG_PROFILE;
588
        }
589
        /*public EpsgConnection getConnection() {
590
                return connection;
591
        }
592

593
        public void setConnection(EpsgConnection connect) {
594
                this.connection = connect;
595
        }*/
596
}