Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_892 / extensions / extJDBC / src / com / iver / cit / gvsig / jdbc_spatial / gui / jdbcwizard / ConnectionPanel.java @ 10278

History | View | Annotate | Download (14.9 KB)

1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
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.VectorialJDBCDriver;
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
 *
30
 * @author Fernando Gonz?lez Cort?s
31
 */
32
public class ConnectionPanel extends JPanel implements Step {
33
    private static String passw = null;
34

    
35
    private JPanel jPanelLabels = null;
36
    private JLabel jLabel = null;
37
    private JTextField txtHost = null;
38
    private JPanel jPanelTexts = null;
39
    private JTextField txtPort = null;
40
    private JLabel jLabel1 = null;
41
    private JLabel jLabel2 = null;
42
    private JTextField txtUser = null;
43
    private JLabel jLabel3 = null;
44
    private JPasswordField txtPassword = null;
45
    private JLabel jLabel4 = null;
46
    private JTextField txtBD = null;
47
    private JLabel jLabel5 = null;
48
    private JComboBox cmbDriver = null;
49
    private JLabel jLabel6 = null;
50
    private com.iver.utiles.swing.JComboBox cmbName = null;
51
    private HashMap cs = new HashMap();
52

    
53
    private JPanel jPanel = null;
54

    
55

    
56

    
57
    /**
58
     * This is the default constructor
59
     */
60
    public ConnectionPanel() {
61
        super();
62
        initialize();
63
    }
64

    
65
    /**
66
     * This method initializes this
67
     */
68
    private void initialize() {
69
        this.setLayout(null);
70
        this.setSize(335, 240);
71
        this.add(getJPanel(), null);
72

    
73
        if (passw != null)
74
            txtPassword.setText(passw);
75

    
76
    }
77

    
78
    /**
79
     * This method initializes jPanel
80
     *
81
     * @return javax.swing.JPanel
82
     */
83
    private JPanel getJPanelLabels() {
84
        if (jPanelLabels == null) {
85
            FlowLayout flowLayout3 = new FlowLayout();
86
            flowLayout3.setVgap(15);
87
            jLabel5 = new JLabel();
88
            jLabel4 = new JLabel();
89
            jLabel3 = new JLabel();
90
            jLabel2 = new JLabel();
91
            jLabel1 = new JLabel();
92
            jLabel = new JLabel();
93
            jPanelLabels = new JPanel();
94
            jPanelLabels.setLayout(flowLayout3);
95
            jPanelLabels.setName("jPanelLabels");
96
            jPanelLabels.setPreferredSize(new java.awt.Dimension(150,400));
97
            jLabel.setText(PluginServices.getText(this, "host") + ":");
98
            jLabel.setPreferredSize(new java.awt.Dimension(140,19));
99
            jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
100
            jLabel.setName("jLabel");
101
            jLabel1.setText(PluginServices.getText(this, "puerto")+":");
102
            jLabel1.setPreferredSize(new java.awt.Dimension(140,19));
103
            jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
104
            jLabel1.setName("jLabel1");
105
            jLabel2.setText(PluginServices.getText(this, "usuario")+":");
106
            jLabel2.setName("jLabel2");
107
            jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
108
            jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
109
            jLabel2.setPreferredSize(new java.awt.Dimension(140,19));
110
            jLabel3.setText(PluginServices.getText(this, "password")+":");
111
            jLabel3.setName("jLabel3");
112
            jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
113
            jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
114
            jLabel3.setPreferredSize(new java.awt.Dimension(140,19));
115
            jLabel4.setText(PluginServices.getText(this, "bd")+":");
116
            jLabel4.setName("jLabel4");
117
            jLabel4.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
118
            jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
119
            jLabel4.setPreferredSize(new java.awt.Dimension(140,19));
120
            jLabel5.setText(PluginServices.getText(this, "driver")+":");
121
            jLabel5.setName("jLabel5");
122
            jLabel5.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
123
            jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
124
            jLabel5.setPreferredSize(new java.awt.Dimension(140,19));
125
            jPanelLabels.add(getJLabel6(), null);
126
            jPanelLabels.add(jLabel, null);
127
            jPanelLabels.add(jLabel1, null);
128
            jPanelLabels.add(jLabel2, null);
129
            jPanelLabels.add(jLabel3, null);
130
            jPanelLabels.add(jLabel4, null);
131
            jPanelLabels.add(jLabel5, null);
132

    
133
        }
134

    
135
        return jPanelLabels;
136
    }
137

    
138
    /**
139
     * This method initializes txtHost
140
     *
141
     * @return javax.swing.JTextField
142
     */
143
    private JTextField getTxtHost() {
144
        if (txtHost == null) {
145
            txtHost = new JTextField();
146
            txtHost.setPreferredSize(new java.awt.Dimension(170, 19));
147
            txtHost.setName("txtHost");
148
        }
149

    
150
        return txtHost;
151
    }
152

    
153
    /**
154
     * This method initializes jPanel1
155
     *
156
     * @return javax.swing.JPanel
157
     */
158
    private JPanel getJPanelTexts() {
159
        if (jPanelTexts == null) {
160
            FlowLayout flowLayout2 = new FlowLayout(FlowLayout.LEFT);                
161
            flowLayout2.setVgap(15);
162
            jPanelTexts = new JPanel();
163
            jPanelTexts.setLayout(flowLayout2);
164
            jPanelTexts.setPreferredSize(new java.awt.Dimension(200,400));
165

    
166
            jPanelTexts.setName("jPanelText");
167
            jPanelTexts.add(getCmbName(), null);
168
            jPanelTexts.add(getTxtHost(), null);
169
            jPanelTexts.add(getTxtPort(), null);
170
            jPanelTexts.add(getTxtUser(), null);
171
            jPanelTexts.add(getTxtPassword(), null);
172
            jPanelTexts.add(getTxtBD(), null);
173
            jPanelTexts.add(getCmbDriver(), null);
174
        }
175

    
176
        return jPanelTexts;
177
    }
178

    
179
    /**
180
     * This method initializes txtPort
181
     *
182
     * @return javax.swing.JTextField
183
     */
184
    private JTextField getTxtPort() {
185
        if (txtPort == null) {
186
            txtPort = new JTextField();
187
            txtPort.setPreferredSize(new java.awt.Dimension(40, 19));
188
            txtPort.setName("txtPort");
189
            txtPort.setText("3306");
190
            txtPort.setHorizontalAlignment(javax.swing.JTextField.LEFT);
191
        }
192

    
193
        return txtPort;
194
    }
195

    
196
    /**
197
     * This method initializes txtUser
198
     *
199
     * @return javax.swing.JTextField
200
     */
201
    private JTextField getTxtUser() {
202
        if (txtUser == null) {
203
            txtUser = new JTextField();
204
            txtUser.setPreferredSize(new java.awt.Dimension(170, 19));
205
            txtUser.setName("txtUser");
206
        }
207

    
208
        return txtUser;
209
    }
210

    
211
    /**
212
     * This method initializes txtPassword
213
     *
214
     * @return javax.swing.JTextField
215
     */
216
    private JPasswordField getTxtPassword() {
217
        if (txtPassword == null) {
218
            txtPassword = new JPasswordField();
219
            txtPassword.setPreferredSize(new java.awt.Dimension(170, 19));
220
            txtPassword.setName("txtPassword");
221
        }
222

    
223
        return txtPassword;
224
    }
225

    
226
    /**
227
     * This method initializes txtBD
228
     *
229
     * @return javax.swing.JTextField
230
     */
231
    private JTextField getTxtBD() {
232
        if (txtBD == null) {
233
            txtBD = new JTextField();
234
            txtBD.setPreferredSize(new java.awt.Dimension(170, 19));
235
            txtBD.setName("txtBD");
236
        }
237

    
238
        return txtBD;
239
    }
240

    
241
    /**
242
     * DOCUMENT ME!
243
     *
244
     * @return DOCUMENT ME!
245
     */
246
    public String getHost() {
247
        return getTxtHost().getText();
248
    }
249

    
250
    /**
251
     * DOCUMENT ME!
252
     *
253
     * @return DOCUMENT ME!
254
     */
255
    public String getPort() {
256
        return getTxtPort().getText();
257
    }
258

    
259
    /**
260
     * DOCUMENT ME!
261
     *
262
     * @return DOCUMENT ME!
263
     */
264
    public String getUser() {
265
        return getTxtUser().getText();
266
    }
267

    
268
    /**
269
     * DOCUMENT ME!
270
     *
271
     * @return DOCUMENT ME!
272
     */
273
    public String getSettingsName() {
274
        return getCmbName().getSelectedItem().toString();
275
    }
276

    
277
    /**
278
     * DOCUMENT ME!
279
     *
280
     * @return DOCUMENT ME!
281
     */
282
    public String getPassword() {
283
        passw = String.copyValueOf(getTxtPassword().getPassword());
284
        return passw;
285
    }
286

    
287
    /**
288
     * DOCUMENT ME!
289
     *
290
     * @return DOCUMENT ME!
291
     */
292
    public String getDBName() {
293
        return getTxtBD().getText();
294
    }
295

    
296
    /**
297
     * DOCUMENT ME!
298
     *
299
     * @param drivers DOCUMENT ME!
300
     */
301
    public void setDrivers(String[] drivers) {
302
        DefaultComboBoxModel model = new DefaultComboBoxModel();
303

    
304
        for (int i = 0; i < drivers.length; i++) {
305
            model.addElement(drivers[i]);
306
        }
307

    
308
        getCmbDriver().setModel(model);
309

    
310
        //Para que refresque el textbox del puerto
311
        if (drivers.length > 0)
312
            cmbDriver.setSelectedIndex(0);
313

    
314
    }
315

    
316

    
317
    /**
318
     * @return ConnectionSettings based on values in this panel
319
     */
320
    public ConnectionSettings getConnectionSettings()
321
    {
322
        ConnectionSettings cs = new ConnectionSettings();
323
        cs.setDb(getDBName());
324
        cs.setDriver(getDriver());
325
        cs.setHost(getHost());
326
        cs.setPort(getPort());
327
        cs.setUser(getUser());
328
        cs.setPassw(getPassword());
329
        cs.setName(getSettingsName());
330
        return cs;
331
    }
332

    
333
    /**
334
     * Makes persistent the connection settings of this panel.
335
     */
336
    public void saveConnectionSettings()
337
    {
338
            ConnectionSettings cs = new ConnectionSettings();
339
        cs.setDb(getDBName());
340
        cs.setDriver(getDriver());
341
        cs.setHost(getHost());
342
        cs.setPort(getPort());
343
        cs.setUser(getUser());
344
        cs.setPassw(getPassword());
345
        cs.setName(getSettingsName());
346

    
347
        PluginServices ps = PluginServices.getPluginServices(this);
348
        XMLEntity xml = ps.getPersistentXML();
349

    
350
        try {
351
            String[] connections = xml.getStringArrayProperty("jdbc-connections");
352
            String[] newConnections = new String[connections.length + 1];
353
            System.arraycopy(connections, 0, newConnections, 0, connections.length);
354
            newConnections[connections.length] = cs.toString();
355
            xml.putProperty("jdbc-connections", newConnections);
356
        } catch (NotExistInXMLEntity e) {
357
            xml.putProperty("jdbc-connections", new String[] { cs.toString() });
358
        }
359

    
360

    
361
    }
362

    
363
    /**
364
     * DOCUMENT ME!
365
     *
366
     * @return DOCUMENT ME!
367
     */
368
    public String getDriver() {
369
        return cmbDriver.getSelectedItem().toString();
370
    }
371

    
372
    /**
373
     * DOCUMENT ME!
374
     *
375
     * @param cs DOCUMENT ME!
376
     */
377
    public void setSettings(HashMap cs) {
378
        this.cs = cs;
379
        ((DefaultComboBoxModel) getCmbName().getModel()).removeAllElements();
380

    
381
        Iterator i = cs.keySet().iterator();
382

    
383
        while (i.hasNext()) {
384
            String item = (String) i.next();
385
            ((DefaultComboBoxModel) getCmbName().getModel()).addElement(item);
386
        }
387
    }
388

    
389
    /**
390
     * @see com.iver.utiles.swing.wizard.Step#init(com.iver.utiles.swing.wizard.WizardControl)
391
     */
392
    public void init(WizardControl w) {
393
    }
394

    
395
    /**
396
     * This method initializes cmbDriver
397
     *
398
     * @return com.iver.utiles.swing.JComboBox
399
     */
400
    private JComboBox getCmbDriver() {
401
        if (cmbDriver == null) {
402
            cmbDriver = new JComboBox();
403
            cmbDriver.setPreferredSize(new java.awt.Dimension(170, 19));
404
            cmbDriver.setName("cmbDriver");
405
            cmbDriver.addActionListener(new ActionListener() {
406
                public void actionPerformed(ActionEvent e) {
407
                    String driverName = cmbDriver.getSelectedItem().toString();
408
                    VectorialJDBCDriver driver;
409
                    try {
410
                        driver = (VectorialJDBCDriver) LayerFactory.getDM().getDriver(driverName);
411
                        getTxtPort().setText(Integer.toString(driver.getDefaultPort()));
412
                    } catch (DriverLoadException e1) {
413
                        getTxtPort().setText("");
414
                    }
415
                }
416
            });
417
        }
418

    
419
        return cmbDriver;
420
    }
421

    
422
    /**
423
     * DOCUMENT ME!
424
     *
425
     * @return
426
     */
427
    public boolean done() {
428
        return (getTxtBD().getText().length() > 0) &&
429
        (getTxtHost().getText().length() > 0) &&
430
        (getCmbName().getSelectedItem() != null) &&
431
        (getCmbName().getSelectedItem().toString().length() > 0);
432
    }
433

    
434
    /**
435
     * This method initializes jLabel6
436
     *
437
     * @return javax.swing.JLabel
438
     */
439
    private JLabel getJLabel6() {
440
        if (jLabel6 == null) {
441
            jLabel6 = new JLabel();
442
            jLabel6.setText(PluginServices.getText(this, "connection_name")+":");
443
            jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
444
            jLabel6.setPreferredSize(new java.awt.Dimension(140,19));
445
        }
446

    
447
        return jLabel6;
448
    }
449

    
450
    /**
451
     * This method initializes jComboBox
452
     *
453
     * @return com.iver.utiles.swing.JComboBox
454
     */
455
    private com.iver.utiles.swing.JComboBox getCmbName() {
456
        if (cmbName == null) {
457
            cmbName = new com.iver.utiles.swing.JComboBox();
458
            cmbName.setEditable(true);
459
            cmbName.setPreferredSize(new java.awt.Dimension(170, 19));
460
            cmbName.setModel(new DefaultComboBoxModel());
461
            cmbName.addActionListener(new ActionListener() {
462
                    public void actionPerformed(ActionEvent e) {
463
                        Object item = cmbName.getSelectedItem();
464

    
465
                        if (item == null) {
466
                            return;
467
                        }
468

    
469
                        ConnectionSettings c = (ConnectionSettings) cs.get(item.toString());
470

    
471
                        if (c != null) {
472
                            getTxtHost().setText(c.getHost());
473
                            getTxtPort().setText(c.getPort());
474
                            getTxtBD().setText(c.getDb());
475
                            getTxtUser().setText(c.getUser());
476
                            if (c.getPassw() != null)
477
                                getTxtPassword().setText(c.getPassw());
478
                            getCmbDriver().setSelectedItem(c.getDriver());
479
                        }
480
                    }
481
                });
482
        }
483

    
484
        return cmbName;
485
    }
486

    
487
    /**
488
     * This method initializes jPanel
489
     *
490
     * @return javax.swing.JPanel
491
     */
492
    private JPanel getJPanel() {
493
            if (jPanel == null) {
494
                    jPanel = new JPanel();
495
                    jPanel.setLayout(new BorderLayout());
496
                    jPanel.setBounds(0, 0, 400, 240);
497
                    jPanel.add(getJPanelLabels(), java.awt.BorderLayout.WEST);
498
                    jPanel.add(getJPanelTexts(), java.awt.BorderLayout.EAST);
499
            }
500
            return jPanel;
501
    }
502
} //  @jve:decl-index=0:visual-constraint="7,3"