Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extGeoDB / src / org / gvsig / geodb / vectorialdb / wizard / UserTableSettingsPanel.java @ 38608

History | View | Annotate | Download (11.4 KB)

1 11971 caballero
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 Prodevelop 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 Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *   +34 963862235
28
 *   gvsig@gva.es
29
 *   www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   Prodevelop Integraci?n de Tecnolog?as SL
34
 *   Conde Salvatierra de ?lava , 34-10
35
 *   46004 Valencia
36
 *   Spain
37
 *
38
 *   +34 963 510 612
39
 *   +34 963 510 968
40
 *   gis@prodevelop.es
41
 *   http://www.prodevelop.es
42
 */
43 29628 jpiera
package org.gvsig.geodb.vectorialdb.wizard;
44 11971 caballero
45 29199 jmvivo
import java.awt.Point;
46 11971 caballero
import java.awt.event.ActionEvent;
47
import java.awt.event.ActionListener;
48
import java.awt.event.KeyEvent;
49
import java.awt.event.KeyListener;
50
import java.text.DecimalFormat;
51
import java.text.DecimalFormatSymbols;
52 29199 jmvivo
import java.util.ArrayList;
53
import java.util.List;
54 11971 caballero
55
import javax.swing.JCheckBox;
56
import javax.swing.JComboBox;
57
import javax.swing.JLabel;
58
import javax.swing.JPanel;
59
import javax.swing.JScrollPane;
60
import javax.swing.JTextArea;
61
import javax.swing.JTextField;
62
63 33662 cordinyana
import org.slf4j.Logger;
64
import org.slf4j.LoggerFactory;
65
66 29628 jpiera
import org.gvsig.andami.PluginServices;
67 29199 jmvivo
import org.gvsig.fmap.dal.store.db.DBStoreParameters;
68 35341 jpiera
import org.gvsig.fmap.mapcontrol.swing.dynobject.DynObjectEditor;
69 22653 vcaballero
import org.gvsig.gui.beans.swing.JButton;
70 33662 cordinyana
import org.gvsig.tools.service.ServiceException;
71 11971 caballero
72 22653 vcaballero
73
74 11971 caballero
/**
75
 * Utility class that holds a single table settings controls.
76
 *
77
 * @author jldominguez
78
 *
79
 */
80
public class UserTableSettingsPanel extends JPanel implements ActionListener,
81
    KeyListener {
82 33662 cordinyana
83
    private static final long serialVersionUID = -9205704982299200912L;
84
85
    private static Logger LOG = LoggerFactory
86
                        .getLogger(UserTableSettingsPanel.class);
87
88 11971 caballero
    private FieldComboItem[] ids;
89
    private String initLayerName = "";
90
    private JComboBox idComboBox = null;
91
    private JTextArea sqlTextArea = null;
92
    private JLabel idLabel = null;
93
    private JLabel sqlLabel = null;
94
    private JCheckBox activateSQLCheckBox = null;
95 29199 jmvivo
    protected JLabel tableNamejLabel = null;
96 11971 caballero
    private JTextField layerNameTextField = null;
97
    private JScrollPane sqlTextAreaScroll = null;
98 29199 jmvivo
    protected WizardDB parent = null;
99
        private JButton advanzedButton;
100
        protected DBStoreParameters parameters;
101 11971 caballero
102 29199 jmvivo
    protected UserTableSettingsPanel() {
103
                super();
104
        }
105
106
        protected void setInitValues(FieldComboItem[] idComboItems,
107
                        String initialLayerName, boolean empty, WizardDB _p,DBStoreParameters parameters) {
108 11971 caballero
        parent = _p;
109
110
        initLayerName = initialLayerName;
111 29199 jmvivo
                ids = idComboItems;
112
                this.parameters = parameters;
113
114
        }
115
116
    public UserTableSettingsPanel(FieldComboItem[] idComboItems,
117
        String initialLayerName, boolean empty, WizardDB _p,
118
                        DBStoreParameters parameters) {
119
                setInitValues(idComboItems, initialLayerName, empty, _p, parameters);
120 11971 caballero
        initialize(empty);
121
    }
122
123
    public boolean hasValidValues() {
124
        if (!combosHaveItems()) {
125
            return false;
126
        }
127
128
        if ((activateSQLCheckBox.isSelected()) &&
129
                (getSqlTextArea().getText().trim().length() == 0)) {
130
            return false;
131
        }
132
133
        if (getLayerNameTextField().getText().trim().length() == 0) {
134
            return false;
135
        }
136
137
        return true;
138
    }
139
140 29199 jmvivo
    protected void initialize(boolean _empty) {
141 11971 caballero
        tableNamejLabel = new JLabel();
142 29199 jmvivo
        tableNamejLabel.setText(PluginServices.getText(this, "name"));
143
        tableNamejLabel.setSize(new java.awt.Dimension(86, 21));
144
        tableNamejLabel.setLocation(new java.awt.Point(5, 25));
145 11971 caballero
        sqlLabel = new JLabel();
146 29199 jmvivo
        // sqlLabel.setBounds(new java.awt.Rectangle(30, 90, 116, 21));
147
                sqlLabel.setBounds(new java.awt.Rectangle(30, 55, 116, 21));
148 11971 caballero
        sqlLabel.setText(PluginServices.getText(this, "sql_restriction"));
149
        idLabel = new JLabel();
150 29199 jmvivo
        // idLabel.setBounds(new java.awt.Rectangle(5, 55, 86, 21));
151
                idLabel.setBounds(new java.awt.Rectangle(260, 25, 86, 21));
152 11971 caballero
        idLabel.setText(PluginServices.getText(this, "id_field"));
153
154
        setLayout(null);
155 29199 jmvivo
        setBounds(new java.awt.Rectangle(3, 225, 501, 246));
156 11971 caballero
        setBorder(javax.swing.BorderFactory.createTitledBorder(null,
157
                PluginServices.getText(this, "specify_table_settings"),
158
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
159
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
160
        add(getIdComboBox(), null);
161
        add(getSqlTextAreaScroll(), null);
162
        add(idLabel, null);
163
        add(sqlLabel, null);
164
        add(getActivateSQLCheckBox(), null);
165
        add(getLayerNameTextField(), null);
166
        add(tableNamejLabel, null);
167 29199 jmvivo
        add(getAdvancedButton(), null);
168 11971 caballero
169
        loadValues(_empty);
170
    }
171
172 22653 vcaballero
    public void enableAlphaControls(boolean enable) {
173 11971 caballero
        getIdComboBox().setEnabled(enable);
174 22653 vcaballero
        getLayerNameTextField().setEnabled(enable);
175 29199 jmvivo
        getSqlTextArea().setEnabled(enable);
176
        getActivateSQLCheckBox().setEnabled(enable);
177
        getAdvancedButton().setEnabled(enable);
178 22653 vcaballero
    }
179 29199 jmvivo
180 22653 vcaballero
    public void enableSpatialControls(boolean enable) {
181 11971 caballero
182
    }
183
184
    public void loadValues() {
185
        loadValues(false);
186
    }
187
188 29199 jmvivo
    protected void loadValues(boolean is_empty) {
189 11971 caballero
        if (is_empty) {
190 22653 vcaballero
            enableAlphaControls(false);
191
            enableSpatialControls(false);
192 11971 caballero
            getLayerNameTextField().setText("");
193
            getActivateSQLCheckBox().setSelected(false);
194
        }
195
        else {
196 29199 jmvivo
            enableAlphaControls(true);
197
                        enableSpatialControls(true);
198
                        getActivateSQLCheckBox().setEnabled(true);
199 11971 caballero
            getIdComboBox().removeAllItems();
200
201
            for (int i = 0; i < ids.length; i++) {
202
                getIdComboBox().addItem(ids[i]);
203
            }
204
205
206
            getLayerNameTextField().setText(initLayerName);
207 22653 vcaballero
208 11971 caballero
        }
209
    }
210
211
    private JComboBox getIdComboBox() {
212
        if (idComboBox == null) {
213
            idComboBox = new JComboBox();
214
215 29199 jmvivo
            // idComboBox.setBounds(new java.awt.Rectangle(105, 55, 126, 21));
216
                        idComboBox.setBounds(new java.awt.Rectangle(351, 25, 134, 21));
217 11971 caballero
        }
218
219
        return idComboBox;
220
    }
221
222 29199 jmvivo
    private JButton getAdvancedButton() {
223
            if (advanzedButton == null) {
224
                        advanzedButton = new JButton();
225
                        advanzedButton.setLocation(new Point(350, 110));
226
                        advanzedButton.setText(PluginServices.getText(this,
227
                                        "advanced_properties"));
228
                        advanzedButton.addActionListener(this);
229
                }
230
                return advanzedButton;
231
        }
232 11971 caballero
233
    private JCheckBox getActivateSQLCheckBox() {
234
        if (activateSQLCheckBox == null) {
235
            activateSQLCheckBox = new JCheckBox();
236
            activateSQLCheckBox.addActionListener(this);
237 29199 jmvivo
            //activateSQLCheckBox
238
                                        //.setBounds(new java.awt.Rectangle(5, 90, 21, 21));
239
                        activateSQLCheckBox
240
                                        .setBounds(new java.awt.Rectangle(5, 55, 21, 21));
241 11971 caballero
        }
242
243
        return activateSQLCheckBox;
244
    }
245
246
    private JTextField getLayerNameTextField() {
247
        if (layerNameTextField == null) {
248
            layerNameTextField = new JTextField();
249 29199 jmvivo
            layerNameTextField.setSize(new java.awt.Dimension(118, 21));
250
                        // layerNameTextField.setLocation(new java.awt.Point(105, 25));
251
                        layerNameTextField.setLocation(new java.awt.Point(120, 25));
252 11971 caballero
            layerNameTextField.addKeyListener(this);
253
        }
254
255
        return layerNameTextField;
256
    }
257
258
    private JTextArea getSqlTextArea() {
259
        if (sqlTextArea == null) {
260
            sqlTextArea = new JTextArea();
261
            sqlTextArea.setLineWrap(true);
262
            sqlTextArea.setWrapStyleWord(true);
263
            sqlTextArea.addKeyListener(this);
264
265
            // sqlTextArea.setBounds(new java.awt.Rectangle(160,90,326,41));
266
        }
267
268
        return sqlTextArea;
269
    }
270
271
    private JScrollPane getSqlTextAreaScroll() {
272
        if (sqlTextAreaScroll == null) {
273
            sqlTextAreaScroll = new JScrollPane();
274 29199 jmvivo
            // sqlTextAreaScroll.setBounds(new java.awt.Rectangle(160, 90, 326,
275
                        // 41));
276
                        sqlTextAreaScroll
277
                                        .setBounds(new java.awt.Rectangle(160, 55, 326, 41));
278 11971 caballero
            sqlTextAreaScroll.setViewportView(getSqlTextArea());
279
            sqlTextAreaScroll.updateUI();
280
        }
281
282
        return sqlTextAreaScroll;
283
    }
284
285
    public void actionPerformed(ActionEvent e) {
286
        Object src = e.getSource();
287
288
        if (src == activateSQLCheckBox) {
289
            enableSQLSettings(activateSQLCheckBox.isSelected());
290
            parent.checkFinishable();
291 29199 jmvivo
        } else if (src == advanzedButton) {
292
                List<String> toHide = new ArrayList<String>();
293 32880 jjdelcerro
                        toHide.add(DBStoreParameters.PASSWORD_PARAMTER_NAME);
294
                        toHide.add(DBStoreParameters.HOST_PARAMTER_NAME);
295
                        toHide.add(DBStoreParameters.PORT_PARAMTER_NAME);
296
                        toHide.add(DBStoreParameters.USER_PARAMTER_NAME);
297
                        toHide.add(DBStoreParameters.DBNAME_PARAMTER_NAME);
298
                        toHide.add(DBStoreParameters.DEFAULTGEOMETRY_PARAMTER_NAME);
299
                        toHide.add(DBStoreParameters.PKFIELDS_PARAMTER_NAME);
300
                        toHide.add(DBStoreParameters.FIELDS_PARAMTER_NAME);
301
                        toHide.add(DBStoreParameters.BASEFILTER_PARAMTER_NAME);
302
                        toHide.add(DBStoreParameters.WORKINGAREA_PARAMTER_NAME);
303
                        toHide.add(DBStoreParameters.TABLE_PARAMTER_NAME);
304
                        toHide.add(DBStoreParameters.CRS_PARAMTER_NAME);
305 29199 jmvivo
                        try {
306
                                parameters.validate();
307
                        } catch (Exception ex) {
308
                                // ignore... only for fill default values
309
                        }
310 33662 cordinyana
                        try {
311
                DynObjectEditor editor = new DynObjectEditor(parameters);
312
                editor.editObject(true);
313
                } catch (ServiceException ex) {
314
                    LOG.error(
315
                        "Error creating a Swing component for the DynObject: "
316
                            + parameters, ex);
317
            }
318 11971 caballero
319 33662 cordinyana
320 29199 jmvivo
                        return;
321
322 11971 caballero
        }
323
324
    }
325
326 29199 jmvivo
327 11971 caballero
    private void enableSQLSettings(boolean b) {
328
        sqlTextArea.setEnabled(b);
329
    }
330
331 29199 jmvivo
    protected String getFormattedDouble(double d) {
332 11971 caballero
        DecimalFormat df = new DecimalFormat("#.###");
333
        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
334
        dfs.setDecimalSeparator('.');
335
        df.setDecimalFormatSymbols(dfs);
336
        return df.format(d);
337
    }
338
339
    public void keyPressed(KeyEvent e) {
340
    }
341
342
    public void keyReleased(KeyEvent e) {
343
        parent.checkFinishable();
344
    }
345
346
    public void keyTyped(KeyEvent e) {
347
    }
348
349
350
    public String getUserLayerName() {
351
        return getLayerNameTextField().getText();
352
    }
353
354
    public boolean combosHaveItems() {
355
        if (getIdComboBox().getItemCount() == 0) {
356
            return false;
357
        }
358
359
        return true;
360
    }
361
362
    public void repaint() {
363
        super.repaint();
364
        getIdComboBox().updateUI();
365
    }
366
367
    public String getIdFieldName() {
368
        return getIdComboBox().getSelectedItem().toString();
369
    }
370
371
    public String getWhereClause() {
372
        return getSqlTextArea().getText();
373
    }
374
375
    public boolean isSqlActive() {
376
        return getActivateSQLCheckBox().isSelected();
377
    }
378
}