Statistics
| Revision:

root / trunk / extensions / extSDE / src / com / iver / cit / gvsig / sde / gui / sdewizard / DBLayerDefinitionPanel.java @ 11193

History | View | Annotate | Download (15.6 KB)

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

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.awt.geom.Rectangle2D;
6

    
7
import javax.swing.DefaultListModel;
8
import javax.swing.JCheckBox;
9
import javax.swing.JLabel;
10
import javax.swing.JList;
11
import javax.swing.JOptionPane;
12
import javax.swing.JPanel;
13
import javax.swing.JScrollPane;
14
import javax.swing.JTextArea;
15
import javax.swing.JTextField;
16

    
17
import org.gvsig.gui.beans.swing.JButton;
18

    
19
import com.iver.andami.PluginServices;
20
import com.iver.andami.ui.mdiManager.IWindow;
21
import com.iver.utiles.swing.wizard.Step;
22
import com.iver.utiles.swing.wizard.WizardControl;
23
/**
24
 * DOCUMENT ME!
25
 * @author  Fernando Gonz?lez Cort?s
26
 */
27
public class DBLayerDefinitionPanel extends JPanel implements Step {
28
    /**
29
         * @uml.property  name="lstTables"
30
         */
31
    private JList lstTables = null;
32
    private JLabel jLabel = null;
33
    /**
34
         * @uml.property  name="pnlExtent"
35
         */
36
    private JPanel pnlExtent = null;
37
    private JLabel jLabel1 = null;
38
    /**
39
         * @uml.property  name="txtMinX"
40
         */
41
    private JTextField txtMinX = null;
42
    private JLabel jLabel2 = null;
43
    /**
44
         * @uml.property  name="txtMaxX"
45
         */
46
    private JTextField txtMaxX = null;
47
    private JLabel jLabel3 = null;
48
    /**
49
         * @uml.property  name="txtMinY"
50
         */
51
    private JTextField txtMinY = null;
52
    private JLabel jLabel4 = null;
53
    /**
54
         * @uml.property  name="txtMaxY"
55
         */
56
    private JTextField txtMaxY = null;
57
    private DefaultListModel lstTablesModel = new DefaultListModel();
58
    /**
59
         * @uml.property  name="radWorkingArea"
60
         */
61
    private JCheckBox radWorkingArea = null;
62
    private boolean advanced = false;
63
    /**
64
         * @uml.property  name="jScrollPane"
65
         */
66
    private JScrollPane jScrollPane = null;
67
    /**
68
         * @uml.property  name="jPanel"
69
         */
70
    private JPanel jPanel = null;
71
    /**
72
         * @uml.property  name="txtLayerName"
73
         */
74
    private JTextField txtLayerName = null;
75
    /**
76
         * @uml.property  name="jPanel1"
77
         */
78
    private JPanel jPanel1 = null;
79
    private JLabel jLabel5 = null;
80

    
81
        /**
82
         * @uml.property  name="jButton"
83
         */
84
        private JButton jButton = null;
85
        private JLabel jLabelWhereClause = null;
86
        /**
87
         * @uml.property  name="jTextAreaWhereClause"
88
         */
89
        private JTextArea jTextAreaWhereClause = null;
90
        /**
91
     * This is the default constructor
92
     */
93
    public DBLayerDefinitionPanel() {
94
        super();
95
        initialize();
96
    }
97

    
98
    /**
99
     * This method initializes this
100
     */
101
    private void initialize() {
102
        jLabel = new JLabel();
103
        this.setLayout(null);
104
        this.setSize(509, 473);
105
        this.setPreferredSize(new java.awt.Dimension(1260, 180));
106
        jLabel.setText(PluginServices.getText(this, "seleccione_tabla") + ":");
107
        //jLabel.setPreferredSize(new java.awt.Dimension(330, 15));
108
        jLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
109
        jLabel.setBounds(20, 8, 460, 15);
110
        jLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
111
        this.add(getJPanel1(), null);
112
        this.add(getJButton(), null);
113
        this.add(getPnlExtent(), null);
114
        this.add(getJPanel(), null);
115
        this.add(getJScrollPane(), null);
116
        this.add(jLabel, null);
117
//        ButtonGroup bt = new ButtonGroup();
118
//        bt.add(getRadFullTable());
119
//        bt.add(getRadWorkingArea());
120
        enableExtent(false);
121
    }
122

    
123
    /**
124
         * This method initializes lstTables
125
         * @return  javax.swing.JList
126
         * @uml.property  name="lstTables"
127
         */
128
    private JList getLstTables() {
129
        if (lstTables == null) {
130
            lstTables = new JList();
131
            lstTables.setModel(lstTablesModel);
132
            lstTables.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
133
            lstTables.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
134
                    public void valueChanged(javax.swing.event.ListSelectionEvent e) {
135
                    String aux = (String) lstTables.getSelectedValue();
136
                    getTxtLayerName().setText(aux);
137
                    }
138
            });
139
        }
140

    
141
        return lstTables;
142
    }
143

    
144
    /**
145
         * This method initializes pnlExtent
146
         * @return  javax.swing.JPanel
147
         * @uml.property  name="pnlExtent"
148
         */
149
    private JPanel getPnlExtent() {
150
        if (pnlExtent == null) {
151
            jLabel4 = new JLabel();
152
            jLabel3 = new JLabel();
153
            jLabel2 = new JLabel();
154
            jLabel1 = new JLabel();
155
            pnlExtent = new JPanel();
156
            pnlExtent.setLayout(null);
157
            pnlExtent.setPreferredSize(new java.awt.Dimension(400,60));
158
            jLabel1.setText(PluginServices.getText(this, "minx") + ":");
159
            jLabel1.setBounds(9, 25, 50, 15);
160
            jLabel2.setText(PluginServices.getText(this, "maxx") + ":");
161
            jLabel2.setBounds(9, 80, 50, 15);
162
            jLabel3.setText(PluginServices.getText(this, "miny") + ":");
163
            jLabel3.setBounds(9, 48, 50, 15);
164
            jLabel4.setText(PluginServices.getText(this, "maxy") + ":");
165
            jLabel4.setBounds(9, 103, 50, 15);
166
            pnlExtent.setBounds(20, 319, 212, 131);
167
            String strWorkingArea = PluginServices.getText(this,"area_trabajo");
168
            pnlExtent.setBorder(javax.swing.BorderFactory.createTitledBorder(null, strWorkingArea, javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
169
            pnlExtent.add(getTxtMaxY(), null);
170
            pnlExtent.add(jLabel4, null);
171
            pnlExtent.add(getTxtMinY(), null);
172
            pnlExtent.add(jLabel3, null);
173
            pnlExtent.add(getTxtMaxX(), null);
174
            pnlExtent.add(jLabel2, null);
175
            pnlExtent.add(getTxtMinX(), null);
176
            pnlExtent.add(jLabel1, null);
177
        }
178

    
179
        return pnlExtent;
180
    }
181

    
182
    /**
183
         * This method initializes txtMinX
184
         * @return  javax.swing.JTextField
185
         * @uml.property  name="txtMinX"
186
         */
187
    private JTextField getTxtMinX() {
188
        if (txtMinX == null) {
189
            txtMinX = new JTextField();
190
            txtMinX.setPreferredSize(new java.awt.Dimension(100, 19));
191
            txtMinX.setBounds(65, 21, 118, 19);
192
        }
193

    
194
        return txtMinX;
195
    }
196

    
197
    /**
198
         * This method initializes txtMaxX
199
         * @return  javax.swing.JTextField
200
         * @uml.property  name="txtMaxX"
201
         */
202
    private JTextField getTxtMaxX() {
203
        if (txtMaxX == null) {
204
            txtMaxX = new JTextField();
205
            txtMaxX.setPreferredSize(new java.awt.Dimension(100, 19));
206
            txtMaxX.setBounds(65, 76, 118, 19);
207
        }
208

    
209
        return txtMaxX;
210
    }
211

    
212
    /**
213
         * This method initializes txtMinY
214
         * @return  javax.swing.JTextField
215
         * @uml.property  name="txtMinY"
216
         */
217
    private JTextField getTxtMinY() {
218
        if (txtMinY == null) {
219
            txtMinY = new JTextField();
220
            txtMinY.setPreferredSize(new java.awt.Dimension(100, 19));
221
            txtMinY.setBounds(65, 44, 118, 19);
222
        }
223

    
224
        return txtMinY;
225
    }
226

    
227
    /**
228
         * This method initializes txtMaxY
229
         * @return  javax.swing.JTextField
230
         * @uml.property  name="txtMaxY"
231
         */
232
    private JTextField getTxtMaxY() {
233
        if (txtMaxY == null) {
234
            txtMaxY = new JTextField();
235
            txtMaxY.setPreferredSize(new java.awt.Dimension(100, 19));
236
            txtMaxY.setBounds(65, 99, 118, 19);
237
        }
238

    
239
        return txtMaxY;
240
    }
241

    
242
    /**
243
     * DOCUMENT ME!
244
     *
245
     * @param tables DOCUMENT ME!
246
     */
247
    public void setTables(String[] tables) {
248
        lstTablesModel = new DefaultListModel();
249

    
250
        for (int i = 0; i < tables.length; i++) {
251
            lstTablesModel.addElement(tables[i]);
252
        }
253

    
254
        getLstTables().setModel(lstTablesModel);
255
    }
256

    
257
    /**
258
     * DOCUMENT ME!
259
     *
260
     * @param rect DOCUMENT ME!
261
     */
262
    public void setExtent(Rectangle2D rect) {
263
        getTxtMinX().setText(String.valueOf(rect.getMinX()));
264
        getTxtMinY().setText(String.valueOf(rect.getMinY()));
265
        getTxtMaxX().setText(String.valueOf(rect.getMaxX()));
266
        getTxtMaxY().setText(String.valueOf(rect.getMaxY()));
267
    }
268

    
269
    /**
270
     * DOCUMENT ME!
271
     *
272
     * @return DOCUMENT ME!
273
     */
274
    public Rectangle2D getExtent() {
275
        if (!getRadWorkingArea().isSelected()) {
276
            return null;
277
        } else {
278
            return new Rectangle2D.Double(Double.parseDouble(
279
                    getTxtMinX().getText()),
280
                Double.parseDouble(getTxtMinY().getText()),
281
                Double.parseDouble(getTxtMaxX().getText()) -
282
                Double.parseDouble(getTxtMinX().getText()),
283
                Double.parseDouble(getTxtMaxY().getText()) -
284
                Double.parseDouble(getTxtMinY().getText()));
285
        }
286
    }
287

    
288
    /**
289
     * DOCUMENT ME!
290
     *
291
     * @return DOCUMENT ME!
292
     */
293
    public boolean done() {
294
        boolean done = (getTable() != null) && (!getLayerName().trim().equals(""));
295

    
296
        if (getRadWorkingArea().isSelected()) {
297
            done = done && (getTxtMaxX().getText().length() > 0) &&
298
                (getTxtMaxY().getText().length() > 0) &&
299
                (getTxtMinX().getText().length() > 0) &&
300
                (getTxtMinY().getText().length() > 0);
301
        }
302

    
303
        return done;
304
    }
305

    
306
    /**
307
     * DOCUMENT ME!
308
     *
309
     * @return DOCUMENT ME!
310
     */
311
    public String getTable() {
312
        return (String) getLstTables().getSelectedValue();
313
    }
314

    
315
    /**
316
     * DOCUMENT ME!
317
     *
318
     * @return DOCUMENT ME!
319
     */
320
    public String getLayerName() {
321
        return (String) getTxtLayerName().getText();
322
    }
323

    
324
    public String getWhereClause(){
325
            String aux = getJTextAreaWhereClause().getText();
326
            // Si est? vac?a, devolvemos vac?o.
327
            if (aux.compareTo("") == 0) return "";
328

    
329
            if (aux.toUpperCase().indexOf("WHERE") == -1)
330
            {
331
                    aux = "WHERE " + aux;
332
            }
333
        return aux;
334
    }
335

    
336
    /**
337
     * DOCUMENT ME!
338
     *
339
     * @param enable DOCUMENT ME!
340
     */
341
    private void enableExtent(boolean enable) {
342
        for (int i = 0; i < pnlExtent.getComponentCount(); i++) {
343
            pnlExtent.getComponent(i).setEnabled(enable);
344
        }
345
        getJButton().setEnabled(enable);
346
    }
347

    
348
    /**
349
         * This method initializes radWorkingArea
350
         * @return  javax.swing.JRadioButton
351
         * @uml.property  name="radWorkingArea"
352
         */
353
    private JCheckBox getRadWorkingArea() {
354
        if (radWorkingArea == null) {
355
            radWorkingArea = new JCheckBox();
356
            radWorkingArea.setText(PluginServices.getText(this, "area_trabajo")+":");
357
            radWorkingArea.setBounds(new java.awt.Rectangle(5,0,202,23));
358
            radWorkingArea.setPreferredSize(new java.awt.Dimension(189,23));
359
            radWorkingArea.addActionListener(new ActionListener() {
360
                    public void actionPerformed(ActionEvent e) {
361
                        enableExtent(radWorkingArea.isSelected());
362
                    }
363
                });
364
        }
365

    
366
        return radWorkingArea;
367
    }
368

    
369
    /**
370
         * This method initializes jScrollPane
371
         * @return  javax.swing.JScrollPane
372
         * @uml.property  name="jScrollPane"
373
         */
374
    private JScrollPane getJScrollPane() {
375
        if (jScrollPane == null) {
376
            jScrollPane = new JScrollPane();
377
            jScrollPane.setBounds(20, 25, 460, 147);
378
            jScrollPane.setViewportView(getLstTables());
379
            //jScrollPane.setPreferredSize(new java.awt.Dimension(270, 110));
380
        }
381

    
382
        return jScrollPane;
383
    }
384

    
385
    /**
386
     * @see com.iver.utiles.swing.wizard.Step#init(com.iver.utiles.swing.wizard.WizardControl)
387
     */
388
    public void init(WizardControl w) {
389
    }
390

    
391
    /**
392
         * This method initializes jPanel
393
         * @return  javax.swing.JPanel
394
         * @uml.property  name="jPanel"
395
         */
396
    private JPanel getJPanel() {
397
        if (jPanel == null) {
398
            jPanel = new JPanel();
399
            jPanel.setLayout(null);
400
            jPanel.setBounds(20, 268, 212, 25);
401
            jPanel.add(getRadWorkingArea(), null);
402

    
403
        }
404

    
405
        return jPanel;
406
    }
407

    
408
    /**
409
         * This method initializes jTextField
410
         * @return  javax.swing.JTextField
411
         * @uml.property  name="txtLayerName"
412
         */
413
    private JTextField getTxtLayerName() {
414
        if (txtLayerName == null) {
415
            txtLayerName = new JTextField();
416
            //txtLayerName.setPreferredSize(new java.awt.Dimension(100, 19));
417
            txtLayerName.setBounds(230, 5, 230, 19);
418
        }
419

    
420
        return txtLayerName;
421
    }
422

    
423
    /**
424
         * This method initializes jPanel1
425
         * @return  javax.swing.JPanel
426
         * @uml.property  name="jPanel1"
427
         */
428
    private JPanel getJPanel1() {
429
        if (jPanel1 == null) {
430
            jLabelWhereClause = new JLabel();
431
            jLabelWhereClause.setBounds(new java.awt.Rectangle(0,32,220,17));
432
            jLabelWhereClause.setText(PluginServices.getText(this, "where_clause")+":");
433
            jLabel5 = new JLabel();
434
            jPanel1 = new JPanel();
435
            jLabel5.setText(PluginServices.getText(this, "nombre_capa")+":");
436
            jLabel5.setBounds(0, 5, 220, 15);
437
            jPanel1.setLayout(null);
438
            //jPanel1.setPreferredSize(new java.awt.Dimension(383,29));
439
            jPanel1.setBounds(20, 175, 460, 92);
440
            jPanel1.add(getTxtLayerName(), null);
441
            jPanel1.add(jLabel5, null);
442
            jPanel1.add(jLabelWhereClause, null);
443
            jPanel1.add(getJTextAreaWhereClause(), null);
444
        }
445

    
446
        return jPanel1;
447
    }
448

    
449
    /**
450
     * @return
451
     */
452
    public Rectangle2D getWorkingArea() {
453
        if (getRadWorkingArea().isSelected()) {
454
            return new Rectangle2D.Double(
455
                    Double.parseDouble(getTxtMinX().getText()),
456
                    Double.parseDouble(getTxtMinY().getText()),
457
                    Double.parseDouble(getTxtMaxX().getText()) - Double.parseDouble(getTxtMinX().getText()),
458
                    Double.parseDouble(getTxtMaxY().getText()) - Double.parseDouble(getTxtMinY().getText())
459
                    );
460
        }else{
461
            return null;
462
        }
463
    }
464
        /**
465
         * This method initializes jButton
466
         * @return  javax.swing.JButton
467
         * @uml.property  name="jButton"
468
         */
469
        private JButton getJButton() {
470
                if (jButton == null) {
471
                        jButton = new JButton();
472
                        jButton.setText(PluginServices.getText(this, "importar_extent")+":");
473
                        jButton.setBounds(20, 295, 272, 23);
474
                        jButton.addActionListener(new ActionListener() {
475
                public void actionPerformed(ActionEvent e) {
476
                    IWindow v = PluginServices.getMDIManager().getActiveWindow();
477
                    com.iver.cit.gvsig.project.documents.view.gui.View vista = (com.iver.cit.gvsig.project.documents.view.gui.View) v;
478
                    Rectangle2D r = vista.getModel().getMapContext().getViewPort().getAdjustedExtent();
479
                    if (r == null)
480
                    {
481
                        JOptionPane.showMessageDialog(null,PluginServices.getText(this, "aviso_sin_extent_de_referencia"));
482
                        return;
483
                    }
484

    
485
                    getTxtMinX().setText(Double.toString(r.getMinX()));
486
                    getTxtMinY().setText(Double.toString(r.getMinY()));
487
                    getTxtMaxX().setText(Double.toString(r.getMaxX()));
488
                    getTxtMaxY().setText(Double.toString(r.getMaxY()));
489
                }
490
            });
491
                }
492
                return jButton;
493
        }
494

    
495
        /**
496
         * This method initializes jTextAreaWhereClause
497
         * @return  javax.swing.JTextArea
498
         * @uml.property  name="jTextAreaWhereClause"
499
         */
500
        private JTextArea getJTextAreaWhereClause() {
501
                if (jTextAreaWhereClause == null) {
502
                        jTextAreaWhereClause = new JTextArea();
503
//                        jTextAreaWhereClause.setBorder(BorderFactory.createLineBorder(Color.BLACK));
504
                        jTextAreaWhereClause.setSize(new java.awt.Dimension(460,34));
505
                        jTextAreaWhereClause.setWrapStyleWord(true);
506
                        jTextAreaWhereClause.setRows(2);
507
                        jTextAreaWhereClause.setLocation(new java.awt.Point(0,54));
508
                }
509
                return jTextAreaWhereClause;
510
        }
511
 } //  @jve:decl-index=0:visual-constraint="10,10"