Statistics
| Revision:

root / branches / v10 / extensions / extSDE / src / com / iver / cit / gvsig / sde / gui / sdewizard / ConnectionPanel.java @ 11197

History | View | Annotate | Download (15.6 KB)

1
package com.iver.cit.gvsig.sde.gui.sdewizard;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.FlowLayout;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.util.HashMap;
8
import java.util.Iterator;
9

    
10
import javax.swing.DefaultComboBoxModel;
11
import javax.swing.JLabel;
12
import javax.swing.JPanel;
13
import javax.swing.JPasswordField;
14
import javax.swing.JTextField;
15

    
16
import com.hardcode.driverManager.DriverLoadException;
17
import com.iver.andami.PluginServices;
18
import com.iver.cit.gvsig.fmap.drivers.sde.VectorialSDEDriver;
19
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
20
import com.iver.utiles.NotExistInXMLEntity;
21
import com.iver.utiles.XMLEntity;
22
import com.iver.utiles.swing.JComboBox;
23
import com.iver.utiles.swing.wizard.Step;
24
import com.iver.utiles.swing.wizard.WizardControl;
25

    
26

    
27
/**
28
 * DOCUMENT ME!
29
 * @author  Fernando Gonz?lez Cort?s
30
 */
31
public class ConnectionPanel extends JPanel implements Step {
32
    private static String passw = null;
33

    
34
    /**
35
         * @uml.property  name="jPanelLabels"
36
         */
37
    private JPanel jPanelLabels = null;
38
    private JLabel jLabel = null;
39
    /**
40
         * @uml.property  name="txtHost"
41
         */
42
    private JTextField txtHost = null;
43
    /**
44
         * @uml.property  name="jPanelTexts"
45
         */
46
    private JPanel jPanelTexts = null;
47
    /**
48
         * @uml.property  name="txtPort"
49
         */
50
    private JTextField txtPort = null;
51
    private JLabel jLabel1 = null;
52
    private JLabel jLabel2 = null;
53
    /**
54
         * @uml.property  name="txtUser"
55
         */
56
    private JTextField txtUser = null;
57
    private JLabel jLabel3 = null;
58
    /**
59
         * @uml.property  name="txtPassword"
60
         */
61
    private JPasswordField txtPassword = null;
62
    private JLabel jLabel4 = null;
63
    /**
64
         * @uml.property  name="txtBD"
65
         */
66
    private JTextField txtBD = null;
67
    private JLabel jLabel5 = null;
68
    /**
69
         * @uml.property  name="cmbDriver"
70
         */
71
    private JComboBox cmbDriver = null;
72
    /**
73
         * @uml.property  name="jLabel6"
74
         */
75
    private JLabel jLabel6 = null;
76
    /**
77
         * @uml.property  name="cmbName"
78
         */
79
    private com.iver.utiles.swing.JComboBox cmbName = null;
80
    private HashMap cs = new HashMap();
81

    
82
    /**
83
         * @uml.property  name="jPanel"
84
         */
85
    private JPanel jPanel = null;
86

    
87

    
88

    
89
    /**
90
     * This is the default constructor
91
     */
92
    public ConnectionPanel() {
93
        super();
94
        initialize();
95
    }
96

    
97
    /**
98
     * This method initializes this
99
     */
100
    private void initialize() {
101
        this.setLayout(null);
102
        this.setSize(335, 240);
103
        this.add(getJPanel(), null);
104

    
105
        if (passw != null)
106
            txtPassword.setText(passw);
107

    
108
    }
109

    
110
    /**
111
         * This method initializes jPanel
112
         * @return  javax.swing.JPanel
113
         * @uml.property  name="jPanelLabels"
114
         */
115
    private JPanel getJPanelLabels() {
116
        if (jPanelLabels == null) {
117
            FlowLayout flowLayout3 = new FlowLayout();
118
            flowLayout3.setVgap(15);
119
            jLabel5 = new JLabel();
120
            jLabel4 = new JLabel();
121
            jLabel3 = new JLabel();
122
            jLabel2 = new JLabel();
123
            jLabel1 = new JLabel();
124
            jLabel = new JLabel();
125
            jPanelLabels = new JPanel();
126
            jPanelLabels.setLayout(flowLayout3);
127
            jPanelLabels.setName("jPanelLabels");
128
            jPanelLabels.setPreferredSize(new java.awt.Dimension(150,400));
129
            jLabel.setText(PluginServices.getText(this, "host") + ":");
130
            jLabel.setPreferredSize(new java.awt.Dimension(140,19));
131
            jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
132
            jLabel.setName("jLabel");
133
            jLabel1.setText(PluginServices.getText(this, "puerto")+":");
134
            jLabel1.setPreferredSize(new java.awt.Dimension(140,19));
135
            jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
136
            jLabel1.setName("jLabel1");
137
            jLabel2.setText(PluginServices.getText(this, "usuario")+":");
138
            jLabel2.setName("jLabel2");
139
            jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
140
            jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
141
            jLabel2.setPreferredSize(new java.awt.Dimension(140,19));
142
            jLabel3.setText(PluginServices.getText(this, "password")+":");
143
            jLabel3.setName("jLabel3");
144
            jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
145
            jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
146
            jLabel3.setPreferredSize(new java.awt.Dimension(140,19));
147
            jLabel4.setText(PluginServices.getText(this, "bd")+":");
148
            jLabel4.setName("jLabel4");
149
            jLabel4.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
150
            jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
151
            jLabel4.setPreferredSize(new java.awt.Dimension(140,19));
152
            jLabel5.setText(PluginServices.getText(this, "driver")+":");
153
            jLabel5.setName("jLabel5");
154
            jLabel5.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
155
            jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
156
            jLabel5.setPreferredSize(new java.awt.Dimension(140,19));
157
            jPanelLabels.add(getJLabel6(), null);
158
            jPanelLabels.add(jLabel, null);
159
            jPanelLabels.add(jLabel1, null);
160
            jPanelLabels.add(jLabel2, null);
161
            jPanelLabels.add(jLabel3, null);
162
            jPanelLabels.add(jLabel4, null);
163
            jPanelLabels.add(jLabel5, null);
164

    
165
        }
166

    
167
        return jPanelLabels;
168
    }
169

    
170
    /**
171
         * This method initializes txtHost
172
         * @return  javax.swing.JTextField
173
         * @uml.property  name="txtHost"
174
         */
175
    private JTextField getTxtHost() {
176
        if (txtHost == null) {
177
            txtHost = new JTextField();
178
            txtHost.setPreferredSize(new java.awt.Dimension(170, 19));
179
            txtHost.setName("txtHost");
180
        }
181

    
182
        return txtHost;
183
    }
184

    
185
    /**
186
         * This method initializes jPanel1
187
         * @return  javax.swing.JPanel
188
         * @uml.property  name="jPanelTexts"
189
         */
190
    private JPanel getJPanelTexts() {
191
        if (jPanelTexts == null) {
192
            FlowLayout flowLayout2 = new FlowLayout(FlowLayout.LEFT);
193
            flowLayout2.setVgap(15);
194
            jPanelTexts = new JPanel();
195
            jPanelTexts.setLayout(flowLayout2);
196
            jPanelTexts.setPreferredSize(new java.awt.Dimension(200,400));
197

    
198
            jPanelTexts.setName("jPanelText");
199
            jPanelTexts.add(getCmbName(), null);
200
            jPanelTexts.add(getTxtHost(), null);
201
            jPanelTexts.add(getTxtPort(), null);
202
            jPanelTexts.add(getTxtUser(), null);
203
            jPanelTexts.add(getTxtPassword(), null);
204
            jPanelTexts.add(getTxtBD(), null);
205
            jPanelTexts.add(getCmbDriver(), null);
206
        }
207

    
208
        return jPanelTexts;
209
    }
210

    
211
    /**
212
         * This method initializes txtPort
213
         * @return  javax.swing.JTextField
214
         * @uml.property  name="txtPort"
215
         */
216
    private JTextField getTxtPort() {
217
        if (txtPort == null) {
218
            txtPort = new JTextField();
219
            txtPort.setPreferredSize(new java.awt.Dimension(40, 19));
220
            txtPort.setName("txtPort");
221
            txtPort.setText("3306");
222
            txtPort.setHorizontalAlignment(javax.swing.JTextField.LEFT);
223
        }
224

    
225
        return txtPort;
226
    }
227

    
228
    /**
229
         * This method initializes txtUser
230
         * @return  javax.swing.JTextField
231
         * @uml.property  name="txtUser"
232
         */
233
    private JTextField getTxtUser() {
234
        if (txtUser == null) {
235
            txtUser = new JTextField();
236
            txtUser.setPreferredSize(new java.awt.Dimension(170, 19));
237
            txtUser.setName("txtUser");
238
        }
239

    
240
        return txtUser;
241
    }
242

    
243
    /**
244
         * This method initializes txtPassword
245
         * @return  javax.swing.JTextField
246
         * @uml.property  name="txtPassword"
247
         */
248
    private JPasswordField getTxtPassword() {
249
        if (txtPassword == null) {
250
            txtPassword = new JPasswordField();
251
            txtPassword.setPreferredSize(new java.awt.Dimension(170, 19));
252
            txtPassword.setName("txtPassword");
253
        }
254

    
255
        return txtPassword;
256
    }
257

    
258
    /**
259
         * This method initializes txtBD
260
         * @return  javax.swing.JTextField
261
         * @uml.property  name="txtBD"
262
         */
263
    private JTextField getTxtBD() {
264
        if (txtBD == null) {
265
            txtBD = new JTextField();
266
            txtBD.setPreferredSize(new java.awt.Dimension(170, 19));
267
            txtBD.setName("txtBD");
268
        }
269

    
270
        return txtBD;
271
    }
272

    
273
    /**
274
     * DOCUMENT ME!
275
     *
276
     * @return DOCUMENT ME!
277
     */
278
    public String getHost() {
279
        return getTxtHost().getText();
280
    }
281

    
282
    /**
283
     * DOCUMENT ME!
284
     *
285
     * @return DOCUMENT ME!
286
     */
287
    public String getPort() {
288
        return getTxtPort().getText();
289
    }
290

    
291
    /**
292
     * DOCUMENT ME!
293
     *
294
     * @return DOCUMENT ME!
295
     */
296
    public String getUser() {
297
        return getTxtUser().getText();
298
    }
299

    
300
    /**
301
     * DOCUMENT ME!
302
     *
303
     * @return DOCUMENT ME!
304
     */
305
    public String getSettingsName() {
306
        return getCmbName().getSelectedItem().toString();
307
    }
308

    
309
    /**
310
     * DOCUMENT ME!
311
     *
312
     * @return DOCUMENT ME!
313
     */
314
    public String getPassword() {
315
        passw = String.copyValueOf(getTxtPassword().getPassword());
316
        return passw;
317
    }
318

    
319
    /**
320
     * DOCUMENT ME!
321
     *
322
     * @return DOCUMENT ME!
323
     */
324
    public String getDBName() {
325
        return getTxtBD().getText();
326
    }
327

    
328
    /**
329
     * DOCUMENT ME!
330
     *
331
     * @param drivers DOCUMENT ME!
332
     */
333
    public void setDrivers(String[] drivers) {
334
        DefaultComboBoxModel model = new DefaultComboBoxModel();
335

    
336
        for (int i = 0; i < drivers.length; i++) {
337
            model.addElement(drivers[i]);
338
        }
339

    
340
        getCmbDriver().setModel(model);
341

    
342
        //Para que refresque el textbox del puerto
343
        if (drivers.length > 0)
344
            cmbDriver.setSelectedIndex(0);
345

    
346
    }
347

    
348

    
349
    /**
350
     * @return ConnectionSettings based on values in this panel
351
     */
352
    public ConnectionSettings getConnectionSettings()
353
    {
354
        ConnectionSettings cs = new ConnectionSettings();
355
        cs.setDb(getDBName());
356
        cs.setDriver(getDriver());
357
        cs.setHost(getHost());
358
        cs.setPort(getPort());
359
        cs.setUser(getUser());
360
        cs.setPassw(getPassword());
361
        cs.setName(getSettingsName());
362
        return cs;
363
    }
364

    
365
    /**
366
     * Makes persistent the connection settings of this panel.
367
     */
368
    public void saveConnectionSettings()
369
    {
370
            ConnectionSettings cs = new ConnectionSettings();
371
        cs.setDb(getDBName());
372
        cs.setDriver(getDriver());
373
        cs.setHost(getHost());
374
        cs.setPort(getPort());
375
        cs.setUser(getUser());
376
        cs.setPassw(getPassword());
377
        cs.setName(getSettingsName());
378

    
379
        PluginServices ps = PluginServices.getPluginServices(this);
380
        XMLEntity xml = ps.getPersistentXML();
381

    
382
        try {
383
            String[] connections = xml.getStringArrayProperty("jdbc-connections");
384
            String[] newConnections = new String[connections.length + 1];
385
            System.arraycopy(connections, 0, newConnections, 0, connections.length);
386
            newConnections[connections.length] = cs.toString();
387
            xml.putProperty("jdbc-connections", newConnections);
388
        } catch (NotExistInXMLEntity e) {
389
            xml.putProperty("jdbc-connections", new String[] { cs.toString() });
390
        }
391

    
392

    
393
    }
394

    
395
    /**
396
     * DOCUMENT ME!
397
     *
398
     * @return DOCUMENT ME!
399
     */
400
    public String getDriver() {
401
        return cmbDriver.getSelectedItem().toString();
402
    }
403

    
404
    /**
405
     * DOCUMENT ME!
406
     *
407
     * @param cs DOCUMENT ME!
408
     */
409
    public void setSettings(HashMap cs) {
410
        this.cs = cs;
411
        ((DefaultComboBoxModel) getCmbName().getModel()).removeAllElements();
412

    
413
        Iterator i = cs.keySet().iterator();
414

    
415
        while (i.hasNext()) {
416
            String item = (String) i.next();
417
            ((DefaultComboBoxModel) getCmbName().getModel()).addElement(item);
418
        }
419
    }
420

    
421
    /**
422
     * @see com.iver.utiles.swing.wizard.Step#init(com.iver.utiles.swing.wizard.WizardControl)
423
     */
424
    public void init(WizardControl w) {
425
    }
426

    
427
    /**
428
         * This method initializes cmbDriver
429
         * @return  com.iver.utiles.swing.JComboBox
430
         * @uml.property  name="cmbDriver"
431
         */
432
    private JComboBox getCmbDriver() {
433
        if (cmbDriver == null) {
434
            cmbDriver = new JComboBox();
435
            cmbDriver.setPreferredSize(new java.awt.Dimension(170, 19));
436
            cmbDriver.setName("cmbDriver");
437
            cmbDriver.addActionListener(new ActionListener() {
438
                public void actionPerformed(ActionEvent e) {
439
                    String driverName = cmbDriver.getSelectedItem().toString();
440
                    VectorialSDEDriver driver;
441
                    try {
442
                        driver = (VectorialSDEDriver) LayerFactory.getDM().getDriver(driverName);
443
                        getTxtPort().setText(Integer.toString(driver.getDefaultPort()));
444
                    } catch (DriverLoadException e1) {
445
                        getTxtPort().setText("");
446
                    }
447
                }
448
            });
449
        }
450

    
451
        return cmbDriver;
452
    }
453

    
454
    /**
455
     * DOCUMENT ME!
456
     *
457
     * @return
458
     */
459
    public boolean done() {
460
        return (getTxtBD().getText().length() > 0) &&
461
        (getTxtHost().getText().length() > 0) &&
462
        (getCmbName().getSelectedItem() != null) &&
463
        (getCmbName().getSelectedItem().toString().length() > 0);
464
    }
465

    
466
    /**
467
         * This method initializes jLabel6
468
         * @return  javax.swing.JLabel
469
         * @uml.property  name="jLabel6"
470
         */
471
    private JLabel getJLabel6() {
472
        if (jLabel6 == null) {
473
            jLabel6 = new JLabel();
474
            jLabel6.setText(PluginServices.getText(this, "connection_name")+":");
475
            jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
476
            jLabel6.setPreferredSize(new java.awt.Dimension(140,19));
477
        }
478

    
479
        return jLabel6;
480
    }
481

    
482
    /**
483
         * This method initializes jComboBox
484
         * @return  com.iver.utiles.swing.JComboBox
485
         * @uml.property  name="cmbName"
486
         */
487
    private com.iver.utiles.swing.JComboBox getCmbName() {
488
        if (cmbName == null) {
489
            cmbName = new com.iver.utiles.swing.JComboBox();
490
            cmbName.setEditable(true);
491
            cmbName.setPreferredSize(new java.awt.Dimension(170, 19));
492
            cmbName.setModel(new DefaultComboBoxModel());
493
            cmbName.addActionListener(new ActionListener() {
494
                    public void actionPerformed(ActionEvent e) {
495
                        Object item = cmbName.getSelectedItem();
496

    
497
                        if (item == null) {
498
                            return;
499
                        }
500

    
501
                        ConnectionSettings c = (ConnectionSettings) cs.get(item.toString());
502

    
503
                        if (c != null) {
504
                            getTxtHost().setText(c.getHost());
505
                            getTxtPort().setText(c.getPort());
506
                            getTxtBD().setText(c.getDb());
507
                            getTxtUser().setText(c.getUser());
508
                            if (c.getPassw() != null)
509
                                getTxtPassword().setText(c.getPassw());
510
                            getCmbDriver().setSelectedItem(c.getDriver());
511
                        }
512
                    }
513
                });
514
        }
515

    
516
        return cmbName;
517
    }
518

    
519
    /**
520
         * This method initializes jPanel
521
         * @return  javax.swing.JPanel
522
         * @uml.property  name="jPanel"
523
         */
524
    private JPanel getJPanel() {
525
            if (jPanel == null) {
526
                    jPanel = new JPanel();
527
                    jPanel.setLayout(new BorderLayout());
528
                    jPanel.setBounds(0, 0, 400, 240);
529
                    jPanel.add(getJPanelLabels(), java.awt.BorderLayout.WEST);
530
                    jPanel.add(getJPanelTexts(), java.awt.BorderLayout.EAST);
531
            }
532
            return jPanel;
533
    }
534
} //  @jve:decl-index=0:visual-constraint="7,3"