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 | } |