root / trunk / libraries / libCq_CMS_praster / src / org / cresques / ui / raster / DataInputProps.java @ 8026
History | View | Annotate | Download (22.7 KB)
1 |
/*
|
---|---|
2 |
* Cresques Mapping Suite. Graphic Library for constructing mapping applications.
|
3 |
*
|
4 |
* Copyright (C) 2004-5.
|
5 |
*
|
6 |
* This program is free software; you can redistribute it and/or
|
7 |
* modify it under the terms of the GNU General Public License
|
8 |
* as published by the Free Software Foundation; either version 2
|
9 |
* of the License, or (at your option) any later version.
|
10 |
*
|
11 |
* This program is distributed in the hope that it will be useful,
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
* GNU General Public License for more details.
|
15 |
*
|
16 |
* You should have received a copy of the GNU General Public License
|
17 |
* along with this program; if not, write to the Free Software
|
18 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
19 |
*
|
20 |
* For more information, contact:
|
21 |
*
|
22 |
* cresques@gmail.com
|
23 |
*/
|
24 |
package org.cresques.ui.raster; |
25 |
|
26 |
import java.awt.BorderLayout; |
27 |
import java.awt.Dimension; |
28 |
import java.awt.FlowLayout; |
29 |
|
30 |
import javax.swing.JComboBox; |
31 |
import javax.swing.JPanel; |
32 |
|
33 |
import org.cresques.io.CXMLParser; |
34 |
import org.cresques.io.GeoRasterWriter; |
35 |
|
36 |
|
37 |
/*
|
38 |
* Created on 04-mar-2005
|
39 |
*
|
40 |
*/
|
41 |
|
42 |
/**
|
43 |
* Panel que contiene las propiedades de un driver de escritura.
|
44 |
* Este panel se monta a partir de un XML que es solicitado al driver
|
45 |
* porque dependiendo del driver tendr? unas propiedades u otras.
|
46 |
* Los elementos del panel son XMLObjects que se almacenan en
|
47 |
* vectores. El XML se procesa con la clase ProcessXML que ser? la
|
48 |
* encargada a partir del texto en XML de crear los XMLObjects que
|
49 |
* compondran el panel.
|
50 |
* @author Nacho Brodin <brodin_ign@gva.es>
|
51 |
*/
|
52 |
public class DataInputProps extends JPanel { |
53 |
final private static long serialVersionUID = -3370601314380922368L; |
54 |
private GeoRasterWriter writer = null; |
55 |
private String formato = null; |
56 |
private JPanel jPanel = null; |
57 |
private JPanel panelSup = null; |
58 |
private JComboBox jComboBox = null; |
59 |
private XMLPanel[] panels = null; |
60 |
private XMLCombo[] combos = null; |
61 |
private XMLLabel[] labels = null; |
62 |
private XMLSlider[] sliders = null; |
63 |
private XMLCheck[] checks = null; |
64 |
private XMLText[] texts = null; |
65 |
|
66 |
public DataInputProps(){};
|
67 |
|
68 |
public DataInputProps(GeoRasterWriter writer) {
|
69 |
super();
|
70 |
this.writer = writer;
|
71 |
this.formato = writer.getIdent();
|
72 |
|
73 |
ProcessXML pXML = new ProcessXML(writer.getXMLPropertiesDialog());
|
74 |
panels = pXML.getPanels(); |
75 |
labels = pXML.getLabels(); |
76 |
combos = pXML.getCombos(); |
77 |
sliders = pXML.getSliders(); |
78 |
checks = pXML.getChecks(); |
79 |
texts = pXML.getTexts(); |
80 |
initialize(); |
81 |
addComponents(); |
82 |
|
83 |
//showElements();
|
84 |
} |
85 |
|
86 |
/**
|
87 |
* Inicializa el panel central con los datos del primer panel de la lista
|
88 |
*/
|
89 |
private void initialize() { |
90 |
for (int i = 0; i < this.panels.length; i++) { |
91 |
if (i == 0) { |
92 |
if (panels[i].layout.equals("FlowLayout")) { |
93 |
this.setLayout(new FlowLayout()); |
94 |
} |
95 |
|
96 |
if (panels[i].layout.equals("BorderLayout")) { |
97 |
this.setLayout(new BorderLayout()); |
98 |
} |
99 |
this.setPreferredSize(new Dimension(panels[i].sizex, panels[i].sizey)); |
100 |
this.setSize(panels[i].sizex, panels[i].sizey);
|
101 |
} else {
|
102 |
if ((panels[i].position != null) && |
103 |
!panels[i].position.equals("")) {
|
104 |
this.add(panels[i], panels[i].position);
|
105 |
} else {
|
106 |
this.add(panels[i]);
|
107 |
} |
108 |
} |
109 |
} |
110 |
} |
111 |
|
112 |
/**
|
113 |
* A?ade los componentes de los vectores al panel
|
114 |
*
|
115 |
*/
|
116 |
public void addComponents() { |
117 |
for (int iPanel = 1; iPanel < panels.length; iPanel++) { |
118 |
int nElemInsert = 0; |
119 |
|
120 |
while (nElemInsert < panels[iPanel].nElements) {
|
121 |
for (int i = 0; i < labels.length; i++) { |
122 |
if ((labels[i].numPanel == iPanel) &&
|
123 |
(labels[i].posIntoPanel == nElemInsert)) { |
124 |
if ((labels[i].position != null) && |
125 |
!labels[i].position.equals("")) {
|
126 |
panels[iPanel].add(labels[i], labels[i].position); |
127 |
} else {
|
128 |
panels[iPanel].add(labels[i]); |
129 |
} |
130 |
|
131 |
nElemInsert++; |
132 |
} |
133 |
} //for(int i=0;i<labels.length;i++)
|
134 |
|
135 |
for (int i = 0; i < combos.length; i++) { |
136 |
if ((combos[i].numPanel == iPanel) &&
|
137 |
(combos[i].posIntoPanel == nElemInsert)) { |
138 |
if ((combos[i].position != null) && |
139 |
!combos[i].position.equals("")) {
|
140 |
panels[iPanel].add(combos[i], combos[i].position); |
141 |
} else {
|
142 |
panels[iPanel].add(combos[i]); |
143 |
} |
144 |
|
145 |
nElemInsert++; |
146 |
} |
147 |
} //for(int i=0;i<combos.length;i++)
|
148 |
|
149 |
for (int i = 0; i < sliders.length; i++) { |
150 |
if ((sliders[i].numPanel == iPanel) &&
|
151 |
(sliders[i].posIntoPanel == nElemInsert)) { |
152 |
if ((sliders[i].position != null) && |
153 |
!sliders[i].position.equals("")) {
|
154 |
panels[iPanel].add(sliders[i], sliders[i].position); |
155 |
} else {
|
156 |
panels[iPanel].add(sliders[i]); |
157 |
} |
158 |
|
159 |
nElemInsert++; |
160 |
} |
161 |
} //for(int i=0;i<sliders.length;i++)
|
162 |
|
163 |
for (int i = 0; i < checks.length; i++) { |
164 |
if ((checks[i].numPanel == iPanel) &&
|
165 |
(checks[i].posIntoPanel == nElemInsert)) { |
166 |
if ((checks[i].position != null) && |
167 |
!checks[i].position.equals("")) {
|
168 |
panels[iPanel].add(checks[i], checks[i].position); |
169 |
} else {
|
170 |
panels[iPanel].add(checks[i]); |
171 |
} |
172 |
|
173 |
nElemInsert++; |
174 |
} |
175 |
} //for(int i=0;i<checks.length;i++)
|
176 |
|
177 |
for (int i = 0; i < texts.length; i++) { |
178 |
if ((texts[i].numPanel == iPanel) &&
|
179 |
(texts[i].posIntoPanel == nElemInsert)) { |
180 |
if ((texts[i].position != null) && |
181 |
!texts[i].position.equals("")) {
|
182 |
panels[iPanel].add(texts[i], texts[i].position); |
183 |
} else {
|
184 |
panels[iPanel].add(texts[i]); |
185 |
} |
186 |
|
187 |
nElemInsert++; |
188 |
} |
189 |
} //for(int i=0;i<checks.length;i++)
|
190 |
} //while(nElemInsert<panels[iPanel].nElements)
|
191 |
} //for(int iPanel=1;iPanel<panels.length;iPanel++)
|
192 |
} |
193 |
|
194 |
/**
|
195 |
* Obtiene el n?mero de componentes que recogen propiedades
|
196 |
* para el driver cargado
|
197 |
* @return N?mero de componentes
|
198 |
*/
|
199 |
public int getNElements() { |
200 |
return (combos.length + sliders.length + checks.length + texts.length);
|
201 |
} |
202 |
|
203 |
/**
|
204 |
* Obtiene los identificadores de las propiedades del cuadro de dialogo
|
205 |
* @return Lista con los identificadores de propiedades
|
206 |
*/
|
207 |
public String[] getElements() { |
208 |
String[] lista = new String[this.getNElements()]; |
209 |
|
210 |
for (int i = 0; i < combos.length; i++) |
211 |
lista[i] = combos[i].id + "=" +
|
212 |
combos[i].getSelectedItem().toString(); |
213 |
|
214 |
for (int i = 0; i < sliders.length; i++) |
215 |
lista[combos.length + i] = sliders[i].id + "=" +
|
216 |
sliders[i].getSlider().getValue(); |
217 |
|
218 |
for (int i = 0; i < checks.length; i++) { |
219 |
String sel = null; |
220 |
|
221 |
if (checks[i].isSelected()) {
|
222 |
sel = new String("yes"); |
223 |
} else {
|
224 |
sel = new String("no"); |
225 |
} |
226 |
|
227 |
lista[combos.length + sliders.length + i] = checks[i].id + "=" +
|
228 |
sel; |
229 |
} |
230 |
|
231 |
for (int i = 0; i < texts.length; i++) |
232 |
lista[i] = texts[i].id + "=" + texts[i].getText();
|
233 |
|
234 |
return lista;
|
235 |
} |
236 |
|
237 |
/**
|
238 |
* Obtiene la lista de Combos
|
239 |
* @return XMLCombo[]
|
240 |
*/
|
241 |
public XMLCombo[] getCombos() { |
242 |
return combos;
|
243 |
} |
244 |
|
245 |
/**
|
246 |
* Obtiene la lista de Sliders
|
247 |
* @return XMLSlider[]
|
248 |
*/
|
249 |
public XMLSlider[] getSliders() { |
250 |
return sliders;
|
251 |
} |
252 |
|
253 |
/**
|
254 |
* Obtiene la lista de CheckBoxs
|
255 |
* @return XMLCheck[]
|
256 |
*/
|
257 |
public XMLCheck[] getChecks() { |
258 |
return checks;
|
259 |
} |
260 |
|
261 |
/**
|
262 |
* Muestra informaci?n sobre los elementos a?adidos al panel
|
263 |
*
|
264 |
*/
|
265 |
public void showElements() { |
266 |
for (int i = 0; i < panels.length; i++) |
267 |
System.out.println("PANEL " + i + " NElem=" + panels[i].nElements); |
268 |
|
269 |
for (int i = 0; i < labels.length; i++) |
270 |
System.out.println("LABEL " + i + " Panel=" + labels[i].numPanel + |
271 |
" PosIntoPanel=" + labels[i].posIntoPanel);
|
272 |
|
273 |
for (int i = 0; i < combos.length; i++) |
274 |
System.out.println("COMBO " + i + " Panel=" + combos[i].numPanel + |
275 |
" PosIntoPanel=" + combos[i].posIntoPanel);
|
276 |
|
277 |
for (int i = 0; i < checks.length; i++) |
278 |
System.out.println("CHECK " + i + " Panel=" + checks[i].numPanel + |
279 |
" PosIntoPanel=" + checks[i].posIntoPanel);
|
280 |
|
281 |
for (int i = 0; i < sliders.length; i++) |
282 |
System.out.println("SLIDER " + i + " Panel=" + sliders[i].numPanel + |
283 |
" PosIntoPanel=" + sliders[i].posIntoPanel);
|
284 |
} |
285 |
} |
286 |
|
287 |
|
288 |
/**
|
289 |
* Clase para procesar el XML que manda un driver de escritura y
|
290 |
* que corresponde a la ventana de dialogo para las propiedades del mismo.
|
291 |
*
|
292 |
* @author Nacho Brodin <brodin_ign@gva.es>
|
293 |
*
|
294 |
*/
|
295 |
class ProcessXML { |
296 |
private XMLPanel[] panels = null; |
297 |
private XMLCombo[] combos = null; |
298 |
private XMLLabel[] labels = null; |
299 |
private XMLSlider[] sliders = null; |
300 |
private XMLCheck[] checks = null; |
301 |
private XMLText[] texts = null; |
302 |
private int contPanels = 0; |
303 |
private int contCombos = 0; |
304 |
private int contLabels = 0; |
305 |
private int contSliders = 0; |
306 |
private int contChecks = 0; |
307 |
private int contTexts = 0; |
308 |
|
309 |
/**
|
310 |
* Constructor
|
311 |
* @param XML XML correspondiente a la ventana de dialogo
|
312 |
*/
|
313 |
public ProcessXML(String XML) { |
314 |
CXMLParser parser = new CXMLParser(XML);
|
315 |
|
316 |
//Reservamos memoria para el n?mero de paneles
|
317 |
panels = new XMLPanel[parser.getNumTags("panel")]; |
318 |
combos = new XMLCombo[parser.getNumTags("combo")]; |
319 |
labels = new XMLLabel[parser.getNumTags("label")]; |
320 |
sliders = new XMLSlider[parser.getNumTags("slider")]; |
321 |
checks = new XMLCheck[parser.getNumTags("check")]; |
322 |
texts = new XMLText[parser.getNumTags("text")]; |
323 |
|
324 |
String valor = parser.getValue("window", true); |
325 |
|
326 |
while (!valor.equals("")) { |
327 |
String tag = parser.getTag();
|
328 |
|
329 |
if (tag.equals("panel")) { |
330 |
processPanel(parser); |
331 |
} else if (tag.equals("label")) { |
332 |
processLabel(parser); |
333 |
} else if (tag.equals("combo")) { |
334 |
processCombo(parser); |
335 |
} else if (tag.equals("check")) { |
336 |
processCheck(parser); |
337 |
} else if (tag.equals("slider")) { |
338 |
processSlider(parser); |
339 |
} else if (tag.equals("text")) { |
340 |
processText(parser); |
341 |
} else if (tag.equals("")) { |
342 |
valor = new String(""); |
343 |
} else {
|
344 |
valor = parser.getXML(); |
345 |
} |
346 |
} |
347 |
|
348 |
if (!valor.equals("")) { |
349 |
System.err.println("Se ha interrumpido el proceso!!!"); |
350 |
} |
351 |
} |
352 |
|
353 |
/**
|
354 |
* Obtiene los paneles leidos del XML como objetos XMLPanel
|
355 |
* @return Listado de XMLPanel
|
356 |
*/
|
357 |
public XMLPanel[] getPanels() { |
358 |
return panels;
|
359 |
} |
360 |
|
361 |
/**
|
362 |
* Obtiene los combos leidos del XML como objetos XMLCombo
|
363 |
* @return Listado de XMLCombo
|
364 |
*/
|
365 |
public XMLCombo[] getCombos() { |
366 |
return combos;
|
367 |
} |
368 |
|
369 |
/**
|
370 |
* Obtiene los label leidos del XML como objetos XMLLabel
|
371 |
* @return Listado de XMLLabel
|
372 |
*/
|
373 |
public XMLLabel[] getLabels() { |
374 |
return labels;
|
375 |
} |
376 |
|
377 |
/**
|
378 |
* Obtiene los slider leidos del XML como objetos XMLSlider
|
379 |
* @return Listado de XMLSlider
|
380 |
*/
|
381 |
public XMLSlider[] getSliders() { |
382 |
return sliders;
|
383 |
} |
384 |
|
385 |
/**
|
386 |
* Obtiene los checks leidos del XML como objetos XMLCheks
|
387 |
* @return Listado de XMLCheck
|
388 |
*/
|
389 |
public XMLCheck[] getChecks() { |
390 |
return checks;
|
391 |
} |
392 |
|
393 |
/**
|
394 |
* Obtiene los texts leidos del XML como objetos XMLText
|
395 |
* @return Listado de XMLText
|
396 |
*/
|
397 |
public XMLText[] getTexts() { |
398 |
return texts;
|
399 |
} |
400 |
|
401 |
/**
|
402 |
* Procesa un tag panel
|
403 |
* @param parser Objeto parser con el XML
|
404 |
*/
|
405 |
public void processPanel(CXMLParser parser) { |
406 |
panels[contPanels] = new XMLPanel();
|
407 |
|
408 |
String sizex = parser.getAttr("panel", "sizex"); |
409 |
String sizey = parser.getAttr("panel", "sizey"); |
410 |
|
411 |
if ((sizex != null) && !sizex.equals("")) { |
412 |
panels[contPanels].sizex = Integer.parseInt(sizex);
|
413 |
} |
414 |
|
415 |
if ((sizey != null) && !sizey.equals("")) { |
416 |
panels[contPanels].sizey = Integer.parseInt(sizey);
|
417 |
} |
418 |
|
419 |
panels[contPanels].layout = parser.getAttr("panel", "layout"); |
420 |
panels[contPanels].border = parser.getAttr("panel", "border"); |
421 |
panels[contPanels].position = parser.getAttr("panel", "position"); |
422 |
panels[contPanels].align = parser.getAttr("panel", "align"); |
423 |
panels[contPanels].init(); |
424 |
contPanels++; |
425 |
|
426 |
//System.out.println("PANEL="+sizex+"X"+sizey+" Layout="+layout+" Border="+border+" Pos="+position+" Align="+align);
|
427 |
parser.getValue("panel", true); |
428 |
} |
429 |
|
430 |
/**
|
431 |
* Procesa un tag label
|
432 |
* @param parser Objeto parser con el XML
|
433 |
*/
|
434 |
public void processLabel(CXMLParser parser) { |
435 |
labels[contLabels] = new XMLLabel();
|
436 |
|
437 |
//Posicionamiento. En q panel y su posici?n dentro de este
|
438 |
labels[contLabels].numPanel = contPanels - 1;
|
439 |
panels[contPanels - 1].nElements++;
|
440 |
labels[contLabels].posIntoPanel = panels[contPanels - 1].nElements - 1; |
441 |
|
442 |
labels[contLabels].position = parser.getAttr("label", "position"); |
443 |
labels[contLabels].text = parser.getValue("label", true); |
444 |
labels[contLabels].init(); |
445 |
contLabels++; |
446 |
} |
447 |
|
448 |
/**
|
449 |
* Procesa un tag combo
|
450 |
* @param parser Objeto parser con el XML
|
451 |
*/
|
452 |
public void processCombo(CXMLParser parser) { |
453 |
combos[contCombos] = new XMLCombo();
|
454 |
|
455 |
//Posicionamiento. En q panel y su posici?n dentro de este
|
456 |
combos[contCombos].numPanel = contPanels - 1;
|
457 |
panels[contPanels - 1].nElements++;
|
458 |
combos[contCombos].posIntoPanel = panels[contPanels - 1].nElements - 1; |
459 |
|
460 |
combos[contCombos].selected = parser.getAttr("combo", "selected"); |
461 |
combos[contCombos].position = parser.getAttr("combo", "position"); |
462 |
combos[contCombos].id = parser.getAttr("combo", "ident"); |
463 |
|
464 |
String sizex = parser.getAttr("combo", "sizex"); |
465 |
String sizey = parser.getAttr("combo", "sizey"); |
466 |
|
467 |
if ((sizex != null) && !sizex.equals("")) { |
468 |
combos[contCombos].sizex = Integer.parseInt(sizex);
|
469 |
} |
470 |
|
471 |
if ((sizey != null) && !sizey.equals("")) { |
472 |
combos[contCombos].sizey = Integer.parseInt(sizey);
|
473 |
} |
474 |
|
475 |
String valoresCombo = parser.getValue("combo", true); |
476 |
|
477 |
processComboValues(parser, combos[contCombos]); |
478 |
combos[contCombos].init(); |
479 |
contCombos++; |
480 |
} |
481 |
|
482 |
/**
|
483 |
* Procesa los elementos de un combo
|
484 |
* @param parser Objeto parser con el XML
|
485 |
* @param combo Objeto XMLCombo del cual se procesan los elementos
|
486 |
*/
|
487 |
public void processComboValues(CXMLParser parser, XMLCombo combo) { |
488 |
String elem = parser.getValue("elem", true); |
489 |
|
490 |
if (elem != null) { |
491 |
combo.addItem(elem); |
492 |
} |
493 |
|
494 |
if (parser.getTag().equals("elem")) { |
495 |
processComboValues(parser, combo); |
496 |
} |
497 |
} |
498 |
|
499 |
/**
|
500 |
* Procesa un tag check
|
501 |
* @param parser Objeto parser con el XML
|
502 |
*/
|
503 |
public void processCheck(CXMLParser parser) { |
504 |
String select = parser.getAttr("check", "selected"); |
505 |
|
506 |
if (select.equals("yes")) { |
507 |
checks[contChecks] = new XMLCheck(parser.getAttr("check", "text"), |
508 |
true);
|
509 |
} else {
|
510 |
checks[contChecks] = new XMLCheck(parser.getAttr("check", "text"), |
511 |
false);
|
512 |
} |
513 |
|
514 |
checks[contChecks].position = parser.getAttr("check", "position"); |
515 |
checks[contChecks].id = parser.getAttr("check", "ident"); |
516 |
|
517 |
String sizex = parser.getAttr("check", "sizex"); |
518 |
String sizey = parser.getAttr("check", "sizey"); |
519 |
|
520 |
if ((sizex != null) && !sizex.equals("")) { |
521 |
checks[contChecks].sizex = Integer.parseInt(sizex);
|
522 |
} |
523 |
|
524 |
if ((sizey != null) && !sizey.equals("")) { |
525 |
checks[contChecks].sizey = Integer.parseInt(sizey);
|
526 |
} |
527 |
|
528 |
parser.getValue("check", true); |
529 |
|
530 |
//Posicionamiento. En q panel y su posici?n dentro de este
|
531 |
checks[contChecks].numPanel = contPanels - 1;
|
532 |
panels[contPanels - 1].nElements++;
|
533 |
checks[contChecks].posIntoPanel = panels[contPanels - 1].nElements - 1; |
534 |
|
535 |
checks[contChecks].init(); |
536 |
contChecks++; |
537 |
} |
538 |
|
539 |
/**
|
540 |
* Procesa un tag slider
|
541 |
* @param parser Objeto parser con el XML
|
542 |
*/
|
543 |
public void processSlider(CXMLParser parser) { |
544 |
String min = null; |
545 |
String max = null; |
546 |
String value = null; |
547 |
String minorspacing = null; |
548 |
String majorspacing = null; |
549 |
String name = parser.getAttr("slider", "name"); |
550 |
String id = parser.getAttr("slider", "ident"); |
551 |
String position = parser.getAttr("slider", "position"); |
552 |
String sizex = parser.getAttr("slider", "sizex"); |
553 |
String sizey = parser.getAttr("slider", "sizey"); |
554 |
String elem = parser.getValue("slider", true); |
555 |
|
556 |
String tag = parser.getTag();
|
557 |
|
558 |
while (tag.equals("min") || tag.equals("max") || tag.equals("value") || |
559 |
tag.equals("minorspacing") || tag.equals("majorspacing")) { |
560 |
if (tag.equals("min")) { |
561 |
min = parser.getValue("min", true); |
562 |
} |
563 |
|
564 |
if (tag.equals("max")) { |
565 |
max = parser.getValue("max", true); |
566 |
} |
567 |
|
568 |
if (tag.equals("value")) { |
569 |
value = parser.getValue("value", true); |
570 |
} |
571 |
|
572 |
if (tag.equals("minorspacing")) { |
573 |
minorspacing = parser.getValue("minorspacing", true); |
574 |
} |
575 |
|
576 |
if (tag.equals("majorspacing")) { |
577 |
majorspacing = parser.getValue("majorspacing", true); |
578 |
} |
579 |
|
580 |
tag = parser.getTag(); |
581 |
} |
582 |
|
583 |
sliders[contSliders] = new XMLSlider(name, min, max, value,
|
584 |
minorspacing, majorspacing); |
585 |
sliders[contSliders].position = position; |
586 |
sliders[contSliders].id = id; |
587 |
|
588 |
if ((sizex != null) && !sizex.equals("")) { |
589 |
sliders[contSliders].sizex = Integer.parseInt(sizex);
|
590 |
} |
591 |
|
592 |
if ((sizey != null) && !sizey.equals("")) { |
593 |
sliders[contSliders].sizey = Integer.parseInt(sizey);
|
594 |
} |
595 |
|
596 |
//Posicionamiento. En q panel y su posici?n dentro de este
|
597 |
sliders[contSliders].numPanel = contPanels - 1;
|
598 |
panels[contPanels - 1].nElements++;
|
599 |
sliders[contSliders].posIntoPanel = panels[contPanels - 1].nElements -
|
600 |
1;
|
601 |
|
602 |
contSliders++; |
603 |
} |
604 |
|
605 |
/**
|
606 |
* Procesa un tag text
|
607 |
* @param parser Objeto parser con el XML
|
608 |
*/
|
609 |
public void processText(CXMLParser parser) { |
610 |
texts[contTexts] = new XMLText(parser.getAttr("text", "text")); |
611 |
|
612 |
String sizex = parser.getAttr("text", "sizex"); |
613 |
String sizey = parser.getAttr("text", "sizey"); |
614 |
|
615 |
if ((sizex != null) && !sizex.equals("")) { |
616 |
texts[contTexts].sizex = Integer.parseInt(sizex);
|
617 |
} |
618 |
|
619 |
if ((sizey != null) && !sizey.equals("")) { |
620 |
texts[contTexts].sizey = Integer.parseInt(sizey);
|
621 |
} |
622 |
|
623 |
//Posicionamiento. En q panel y su posici?n dentro de este
|
624 |
texts[contTexts].numPanel = contPanels - 1;
|
625 |
panels[contPanels - 1].nElements++;
|
626 |
texts[contTexts].posIntoPanel = panels[contPanels - 1].nElements - 1; |
627 |
|
628 |
texts[contTexts].position = parser.getAttr("text", "position"); |
629 |
texts[contTexts].text = parser.getValue("text", true); |
630 |
texts[contTexts].init(); |
631 |
contTexts++; |
632 |
} |
633 |
} |
634 |
|
635 |
|
636 |
/**
|
637 |
* Clase que representa a un panel obtenido a partir del XML
|
638 |
* que manda un driver de escritura.
|
639 |
*
|
640 |
* @author Nacho Brodin <brodin_ign@gva.es>
|
641 |
*
|
642 |
*/
|
643 |
class XMLPanel extends JPanel { |
644 |
final private static long serialVersionUID = -3370601314380922368L; |
645 |
public int sizex = 0; |
646 |
public int sizey = 0; |
647 |
public String layout = null; |
648 |
public String border = null; |
649 |
public String position = null; |
650 |
public String align = null; |
651 |
public int nElements = 0; |
652 |
|
653 |
/**
|
654 |
* Inicializaci?n del XMLPanel
|
655 |
*
|
656 |
*/
|
657 |
public void init() { |
658 |
if (layout.equals("FlowLayout")) { |
659 |
FlowLayout fl = new FlowLayout(); |
660 |
this.setLayout(fl);
|
661 |
|
662 |
if (align.equals("left")) { |
663 |
fl.setAlignment(java.awt.FlowLayout.LEFT); |
664 |
} else if (align.equals("center")) { |
665 |
fl.setAlignment(java.awt.FlowLayout.CENTER); |
666 |
} else if (align.equals("right")) { |
667 |
fl.setAlignment(java.awt.FlowLayout.RIGHT); |
668 |
} else if (align.equals("leading")) { |
669 |
fl.setAlignment(java.awt.FlowLayout.LEADING); |
670 |
} else if (align.equals("trailing")) { |
671 |
fl.setAlignment(java.awt.FlowLayout.TRAILING); |
672 |
} |
673 |
} else if (layout.equals("BorderLayout")) { |
674 |
this.setLayout(new BorderLayout()); |
675 |
} |
676 |
|
677 |
if ((sizex != 0) && (sizey != 0)) { |
678 |
this.setPreferredSize(new java.awt.Dimension(sizex, sizey)); |
679 |
} |
680 |
|
681 |
if (border.equals("yes")) { |
682 |
this.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.gray,
|
683 |
1));
|
684 |
} |
685 |
} |
686 |
} |
687 |
|
688 |
|
689 |
|
690 |
|
691 |
|
692 |
|
693 |
|
694 |
|