root / branches / v10 / extensions / extSDE / src / com / iver / cit / gvsig / sde / gui / sdewizard / ConnectionPanel.java @ 10942
History | View | Annotate | Download (15.6 KB)
1 | 10942 | caballero | 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.VectorialDatabaseDriver; |
||
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 | VectorialDatabaseDriver driver; |
||
441 | try {
|
||
442 | driver = (VectorialDatabaseDriver) 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" |