root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / gui / cad / panels / JPanelFieldDefinition.java @ 6117
History | View | Annotate | Download (8.28 KB)
1 | 4364 | fjp | package com.iver.cit.gvsig.gui.cad.panels; |
---|---|---|---|
2 | |||
3 | 4380 | fjp | import java.awt.BorderLayout; |
4 | 6010 | caballero | import java.awt.Component; |
5 | 4385 | fjp | import java.sql.Types; |
6 | 4380 | fjp | |
7 | import javax.swing.DefaultCellEditor; |
||
8 | import javax.swing.JButton; |
||
9 | import javax.swing.JComboBox; |
||
10 | 4364 | fjp | import javax.swing.JLabel; |
11 | 6010 | caballero | import javax.swing.JOptionPane; |
12 | 4380 | fjp | import javax.swing.JPanel; |
13 | 4367 | fjp | import javax.swing.JScrollPane; |
14 | import javax.swing.JTable; |
||
15 | 4380 | fjp | import javax.swing.ListSelectionModel; |
16 | import javax.swing.event.ListSelectionEvent; |
||
17 | import javax.swing.event.ListSelectionListener; |
||
18 | import javax.swing.table.DefaultTableModel; |
||
19 | import javax.swing.table.TableColumn; |
||
20 | 4364 | fjp | |
21 | 4584 | caballero | import com.iver.andami.PluginServices; |
22 | 4385 | fjp | import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
23 | |||
24 | 4380 | fjp | import jwizardcomponent.JWizardComponents; |
25 | import jwizardcomponent.JWizardPanel; |
||
26 | |||
27 | 4364 | fjp | /**
|
28 | * @author fjp
|
||
29 | 4584 | caballero | *
|
30 | 4364 | fjp | * Panel para que el usuario seleccione el driver que va a utilizar para
|
31 | * crear un tema desde cero.
|
||
32 | *
|
||
33 | */
|
||
34 | public class JPanelFieldDefinition extends JWizardPanel { |
||
35 | |||
36 | |||
37 | 4367 | fjp | private JLabel jLabel = null; |
38 | private JScrollPane jScrollPane = null; |
||
39 | private JTable jTable = null; |
||
40 | 4380 | fjp | private JPanel jPanelEast = null; |
41 | private JButton jButtonAddField = null; |
||
42 | private JButton jButtonDeleteField = null; |
||
43 | 4367 | fjp | |
44 | |||
45 | 4380 | fjp | public JPanelFieldDefinition(JWizardComponents wizardComponents) {
|
46 | super(wizardComponents, null); |
||
47 | 4364 | fjp | initialize(); |
48 | // TODO Auto-generated constructor stub
|
||
49 | } |
||
50 | |||
51 | 4584 | caballero | |
52 | 4380 | fjp | /* (non-Javadoc)
|
53 | * @see jwizardcomponent.JWizardPanel#next()
|
||
54 | */
|
||
55 | public void next() { |
||
56 | // TODO Auto-generated method stub
|
||
57 | 6010 | caballero | DefaultTableModel tm=(DefaultTableModel) jTable.getModel(); |
58 | boolean valid=true; |
||
59 | for (int i = 0;i<tm.getRowCount();i++) { |
||
60 | String s=(String)tm.getValueAt(0,i); |
||
61 | valid=validate(s); |
||
62 | |||
63 | } |
||
64 | if (valid)
|
||
65 | super.next();
|
||
66 | 5747 | fjp | /* getWizardComponents().getFinishButton().setVisible(true);
|
67 | 5178 | caballero | if (!((FileBasedPanel)getWizardComponents().getWizardPanel(2)).getPath().equals(""))
|
68 | getWizardComponents().getFinishButton().setEnabled(true);
|
||
69 | else
|
||
70 | 5747 | fjp | getWizardComponents().getFinishButton().setEnabled(false); */
|
71 | 4380 | fjp | } |
72 | |||
73 | |||
74 | 6010 | caballero | private boolean validate(String s) { |
75 | boolean valid=true; |
||
76 | if (s.indexOf(" ")!=-1) { |
||
77 | valid=false;
|
||
78 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
79 | PluginServices.getText(this,"no_puede_continuar")+"\n"+ |
||
80 | PluginServices.getText(this,"field")+" : "+s+"\n"+ |
||
81 | PluginServices.getText(this,"contiene_espacios_en_blanco")); |
||
82 | } |
||
83 | return valid;
|
||
84 | } |
||
85 | |||
86 | |||
87 | 4364 | fjp | /**
|
88 | * This method initializes this
|
||
89 | 4584 | caballero | *
|
90 | 4364 | fjp | */
|
91 | private void initialize() { |
||
92 | 4367 | fjp | jLabel = new JLabel(); |
93 | 4584 | caballero | jLabel.setText(PluginServices.getText(this,"define_fields")); |
94 | 4380 | fjp | this.setLayout(new BorderLayout(5,5)); |
95 | 4367 | fjp | this.setSize(new java.awt.Dimension(437,232)); |
96 | 4380 | fjp | this.add(jLabel, java.awt.BorderLayout.NORTH);
|
97 | this.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
|
||
98 | this.add(getJPanelEast(), java.awt.BorderLayout.EAST);
|
||
99 | 4364 | fjp | } |
100 | |||
101 | |||
102 | 4367 | fjp | /**
|
103 | 4584 | caballero | * This method initializes jScrollPane
|
104 | *
|
||
105 | * @return javax.swing.JScrollPane
|
||
106 | 4367 | fjp | */
|
107 | private JScrollPane getJScrollPane() { |
||
108 | if (jScrollPane == null) { |
||
109 | jScrollPane = new JScrollPane(); |
||
110 | jScrollPane.setViewportView(getJTable()); |
||
111 | } |
||
112 | return jScrollPane;
|
||
113 | } |
||
114 | 4364 | fjp | |
115 | 4367 | fjp | |
116 | /**
|
||
117 | 4584 | caballero | * This method initializes jTable
|
118 | *
|
||
119 | * @return javax.swing.JTable
|
||
120 | 4367 | fjp | */
|
121 | private JTable getJTable() { |
||
122 | if (jTable == null) { |
||
123 | jTable = new JTable(); |
||
124 | 4380 | fjp | DefaultTableModel tm = (DefaultTableModel) jTable.getModel(); |
125 | 4584 | caballero | tm.addColumn(PluginServices.getText(this,"field")); |
126 | |||
127 | 4380 | fjp | // TableColumn fieldTypeColumn = new TableColumn(1);
|
128 | // fieldTypeColumn.setHeaderValue("Type");
|
||
129 | // jTable.addColumn(fieldTypeColumn);
|
||
130 | 4584 | caballero | tm.addColumn(PluginServices.getText(this,"type")); |
131 | 4380 | fjp | // MIRAR EL C?DIGO DEL BOT?N DE A?ADIR CAMPO PARA VER EL CellEditor con comboBox
|
132 | |||
133 | 4584 | caballero | |
134 | 4380 | fjp | /* TableColumn fieldLengthColumn = new TableColumn(2);
|
135 | fieldLengthColumn.setHeaderValue("Length");
|
||
136 | // fieldLengthColumn.setCellRenderer(new DefaultTableCellRenderer());
|
||
137 | jTable.addColumn(fieldLengthColumn); */
|
||
138 | 4584 | caballero | tm.addColumn(PluginServices.getText(this,"length")); |
139 | |||
140 | 4380 | fjp | // Ask to be notified of selection changes.
|
141 | ListSelectionModel rowSM = jTable.getSelectionModel();
|
||
142 | rowSM.addListSelectionListener(new ListSelectionListener() { |
||
143 | public void valueChanged(ListSelectionEvent e) { |
||
144 | //Ignore extra messages.
|
||
145 | if (e.getValueIsAdjusting()) return; |
||
146 | |||
147 | ListSelectionModel lsm =
|
||
148 | (ListSelectionModel)e.getSource();
|
||
149 | if (lsm.isSelectionEmpty()) {
|
||
150 | //no rows are selected
|
||
151 | jButtonDeleteField.setEnabled(false);
|
||
152 | } else {
|
||
153 | // int selectedRow = lsm.getMinSelectionIndex();
|
||
154 | //selectedRow is selected
|
||
155 | jButtonDeleteField.setEnabled(true);
|
||
156 | } |
||
157 | } |
||
158 | }); |
||
159 | |||
160 | 4584 | caballero | |
161 | 4367 | fjp | } |
162 | return jTable;
|
||
163 | } |
||
164 | |||
165 | |||
166 | 4380 | fjp | /**
|
167 | 4584 | caballero | * This method initializes jPanelWest
|
168 | *
|
||
169 | * @return javax.swing.JPanel
|
||
170 | 4380 | fjp | */
|
171 | private JPanel getJPanelEast() { |
||
172 | if (jPanelEast == null) { |
||
173 | jPanelEast = new JPanel(); |
||
174 | jPanelEast.setLayout(null);
|
||
175 | jPanelEast.setPreferredSize(new java.awt.Dimension(100,100)); |
||
176 | jPanelEast.add(getJButtonAddField(), null);
|
||
177 | jPanelEast.add(getJButtonDeleteField(), null);
|
||
178 | } |
||
179 | return jPanelEast;
|
||
180 | } |
||
181 | 4367 | fjp | |
182 | 4380 | fjp | |
183 | /**
|
||
184 | 4584 | caballero | * This method initializes jButtonAddField
|
185 | *
|
||
186 | * @return javax.swing.JButton
|
||
187 | 4380 | fjp | */
|
188 | private JButton getJButtonAddField() { |
||
189 | if (jButtonAddField == null) { |
||
190 | jButtonAddField = new JButton(); |
||
191 | 4584 | caballero | jButtonAddField.setText(PluginServices.getText(this,"add_field")); |
192 | 4380 | fjp | jButtonAddField.setBounds(new java.awt.Rectangle(7,5,85,23)); |
193 | jButtonAddField.addActionListener(new java.awt.event.ActionListener() {
|
||
194 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
195 | // Add a new row
|
||
196 | DefaultTableModel tm = (DefaultTableModel) jTable.getModel(); |
||
197 | Object[] newRow = new Object[tm.getColumnCount()]; |
||
198 | 6010 | caballero | newRow[0] = PluginServices.getText(this,"field"); |
199 | 4380 | fjp | newRow[1] = "String"; |
200 | 4534 | fjp | newRow[2] = "20"; |
201 | 4380 | fjp | tm.addRow(newRow); |
202 | 4584 | caballero | |
203 | 4380 | fjp | // Esto lo a?ado aqu? porque si no tiene registros, no hace caso. (Por eso no
|
204 | // lo pongo en getJTable()
|
||
205 | TableColumn typeColumn = jTable.getColumnModel().getColumn(1); |
||
206 | JComboBox comboBox = new JComboBox(); |
||
207 | comboBox.addItem("Boolean");
|
||
208 | comboBox.addItem("Date");
|
||
209 | comboBox.addItem("Integer");
|
||
210 | comboBox.addItem("Double");
|
||
211 | comboBox.addItem("String");
|
||
212 | typeColumn.setCellEditor(new DefaultCellEditor(comboBox)); |
||
213 | 4534 | fjp | |
214 | TableColumn widthColumn = jTable.getColumnModel().getColumn(2); |
||
215 | 4584 | caballero | |
216 | 4380 | fjp | // tm.setValueAt("NewField", tm.getRowCount()-1, 0);
|
217 | } |
||
218 | }); |
||
219 | 4584 | caballero | |
220 | 4380 | fjp | } |
221 | return jButtonAddField;
|
||
222 | } |
||
223 | |||
224 | |||
225 | /**
|
||
226 | 4584 | caballero | * This method initializes jButton
|
227 | *
|
||
228 | * @return javax.swing.JButton
|
||
229 | 4380 | fjp | */
|
230 | private JButton getJButtonDeleteField() { |
||
231 | if (jButtonDeleteField == null) { |
||
232 | jButtonDeleteField = new JButton(); |
||
233 | 4584 | caballero | jButtonDeleteField.setText(PluginServices.getText(this,"delete_field")); |
234 | 4380 | fjp | jButtonDeleteField.setBounds(new java.awt.Rectangle(7,33,85,23)); |
235 | jButtonDeleteField.setEnabled(false);
|
||
236 | jButtonDeleteField.addActionListener(new java.awt.event.ActionListener() {
|
||
237 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
238 | int[] selecteds = jTable.getSelectedRows(); |
||
239 | DefaultTableModel tm = (DefaultTableModel) jTable.getModel(); |
||
240 | 4584 | caballero | |
241 | 4380 | fjp | for (int i=selecteds.length-1; i >=0; i--) |
242 | tm.removeRow(selecteds[i]); |
||
243 | } |
||
244 | }); |
||
245 | } |
||
246 | return jButtonDeleteField;
|
||
247 | } |
||
248 | |||
249 | |||
250 | 4385 | fjp | /**
|
251 | * Convierte lo que hay en la tabla en una definici?n de campos
|
||
252 | * adecuada para crear un LayerDefinition
|
||
253 | * @return
|
||
254 | */
|
||
255 | public FieldDescription[] getFieldsDescription() { |
||
256 | DefaultTableModel tm = (DefaultTableModel) jTable.getModel(); |
||
257 | FieldDescription[] fieldsDesc = new FieldDescription[tm.getRowCount()]; |
||
258 | 4584 | caballero | |
259 | 4385 | fjp | for (int i=0; i < tm.getRowCount(); i++) |
260 | { |
||
261 | fieldsDesc[i] = new FieldDescription();
|
||
262 | fieldsDesc[i].setFieldName((String) tm.getValueAt(i,0)); |
||
263 | String strType = (String) tm.getValueAt(i,1); |
||
264 | if (strType.equals("String")) |
||
265 | fieldsDesc[i].setFieldType(Types.VARCHAR);
|
||
266 | if (strType.equals("Double")) |
||
267 | fieldsDesc[i].setFieldType(Types.DOUBLE);
|
||
268 | if (strType.equals("Integer")) |
||
269 | fieldsDesc[i].setFieldType(Types.INTEGER);
|
||
270 | if (strType.equals("Boolean")) |
||
271 | fieldsDesc[i].setFieldType(Types.BOOLEAN);
|
||
272 | if (strType.equals("Date")) |
||
273 | fieldsDesc[i].setFieldType(Types.DATE);
|
||
274 | 4534 | fjp | int fieldLength = Integer.parseInt((String) tm.getValueAt(i,2)); |
275 | fieldsDesc[i].setFieldLength(fieldLength); |
||
276 | 4584 | caballero | |
277 | 4385 | fjp | // TODO: HACERLO BIEN
|
278 | if (strType.equals("Double")) |
||
279 | fieldsDesc[i].setFieldDecimalCount(5);
|
||
280 | 4584 | caballero | |
281 | 4385 | fjp | } |
282 | 4584 | caballero | |
283 | 4385 | fjp | return fieldsDesc;
|
284 | } |
||
285 | 4380 | fjp | |
286 | 4385 | fjp | |
287 | |||
288 | 4364 | fjp | } // @jve:decl-index=0:visual-constraint="10,10" |