[Gvsig_desarrolladores] Ampliación del control <combo-scale> de GvSig

Pablo Piqueras Bartolomé pablo.piqueras en iver.es
Lun Mar 17 10:19:18 CET 2008


Jorge Bellido Diez escribió:
> Hola, 
> Estoy pensando en una herramienta similar al selector de escala que se presenta en el "Status bar" de gvSig
> Lo consigo aplicando la configuración <combo-scale> en el config.xml de mi extensión. El problema que tengo es que está pensado para números y no para textos. ¿Existe algo implementado que pueda utilizar? Alguien me podría orientar al respecto?
>
> Gracias de antemano y un Saludo.
>  
> Jorge Bellido
>  
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
>
>   
Hola Jorge,

me temo que actualmente el combo que deseas utilizar está adaptado para 
trabajar solo con números de tipo "long".

Hasta que no salga una nueva versión que supla tu necesidad, te propongo 
una posible solución, que puede ser algo costosa: deberías de modificar 
dicho combo y la parte del framework que lo utiliza para que soportase 
ítems de tipo /String/ en vez de /long:/

Por ejemplo: _líneas 881 - 915_  de /Launcher.java/ en el proyecto/ 
_fwAndami/ podrían quedar así:

//ArrayList componentList = new ArrayList();
            ComboScale[] comboScaleArray = ext.getComboScale();
            for (int k=0; k < comboScaleArray.length; k++) {
                org.gvsig.gui.beans.controls.comboscale.ComboScale combo 
= new org.gvsig.gui.beans.controls.comboscale.ComboScale();
                String label = comboScaleArray[k].getLabel();
                if (label!=null)
                    combo.setLabel(label);
                String name = comboScaleArray[k].getName();
                if (name!=null)
                    combo.setName(name);
                String[] elementsString = 
((String)comboScaleArray[k].getElements()).split(";");

                combo.setItems(elementsString);
                combo.setScale((String)comboScaleArray[k].getValue());

                try {
                    
frame.addStatusBarControl(loader.loadClass(ext.getClassName()),combo);
                } catch (ClassNotFoundException e1) {
                    
logger.error(Messages.getString("Launcher.error_getting_class_loader_for_status_bar_control"), 
e1);
                }
            }


Mientras que  /org.gvsig.gui.beans.controls.comboscale.ComboScale/ en el 
proyecto /libUI /habría de adaptarse para que sus ítems fuesen String.

Si en un momento dado se desea saber si un String es número: 
/s.matches("[0-9]+([.][0-9]+)?")) (siendo s de tipo String)

/
Espero que te haya servido de ayuda u orientación. El código no lo he 
probado :-) , y estoy suponiendo que estás con la distribución 1.0.X .

Ahora se delegaría la comprobación que los ítems sean de tipo /long /al 
código que los obtiene del del combo.


Saludos.


-- 
Pablo Piqueras Bartolomé

Equipo de gvSIG
IVER T.I. S.A.
C/. Lérida, 20
46005 - Valencia (Spain)
www.iver.es
www.gvsig.com



Este mensaje y sus archivos son confidenciales. No está permitida su reproducción o distribución sin la autorización expresa de "IVER Tecnologías de la Información". Si usted no es el destinatario previsto, queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20080317/2050b146/attachment.htm


Más información sobre la lista de distribución gvSIG_desarrolladores