El Objeto Lista es un widget de selección genérica, algo como una Lista de Selección HTML pero mucho más configurable. He creado este objeto con la intención específicamente de que este sea incorporado adentro de widgets más largos y complejos - esta se forma a los principios básicos como otros widgets son creados. Los widgets que he creado cuales utilizan este objeto son Lista de Selección, Lista de Scroll, y Lista de Menu.
Aquí esta como la Lista default aparecerá:
Todos los colores, espacios, letras, y por supuesto los artículos contenidos son cambiables fácilmente. También he incluido código para que así puedas hacer una lista con columnas múltiples, y tener un imagen cambiable adentro de la lista. El último es principalmente utilizado por el Objeto MenuList.
objectName = new List(x,y,width,itemH)
El parámetro itemH es opcional. Esto da referencia a la altura y cada artículo en la lista. Para hacer el Objeto Lista un poco mejor, he dejado esto que sea indefinido, y hacer que la lista se produzca automáticamente ella misma de acuerdo con la altura mínima que cada artículo tiene que ser. Esto evita cualquier problema con el tamaño de las letras dentro de plataformas así no importa cuales letras son utilizadas, el texto adentro de la lista estará siempre compacto y igualmente espaciado. La única desventaja para esto es que toma un poquito mas largo para iniciar y nunca podrás saber la altura de la lista. Si fijas el artículoH "itemH" apropiadamente podrás entonces fijar una altura específica.
Ejemplos:
mylist = new List(30,40,150) // itemH estara siendo cuidado automaticamente mylist = new List(30,40,150,30) // cada articulo "item" sera de 30 pixeles de altura
Agregando artículos a la Lista
Para agregar artículos a la lista tienes que utilizar el método add():
objectName.add(value,text)
El valor value especificado es de como cada artículo contendrá la data. Esto podrá ser cualquier variable; un número, una tira (como un URL), o hasta arrays y objetos. El texto text será el texto mostrado en la Lista.
Ejemplo:
mylist.add('index.html','Home') mylist.add('page1.html','Page 1') mylist.add('page2.html','Page 2')
Lista de Múltiples Columnas
Este objeto Lista puede ser utilizado para imitar una tabla de artículos con solamente utilizar la característica de múltiples columnas. Para hacer esto debes de añadir en número deseado de los valores de la célula de texto en el método add() también:
objectName.add(value,text1,text2,text3 etc....)
Debes de fijar los anchos de las columnas antes de que hagas esto. Solamente manda una lista del ancho de los pixeles al método setCols(). Aquí hay un ejemplo:
mylist = new List(50,50,150) mylist.setCols(50,50,50) // 3 columnas, harán el total del ancho mylist.add(0,'item','0','zero') mylist.add(1,'item','1','one') mylist.add(2,'item','2','two') mylist.add(3,'item','3','three') mylist.add(4,'item','4','four')
Creando y Activando la Lista
Esto está hecho como todos mis widgets. Llama al método build() cuando hayas terminado de fijar todo, escribe las CSS y Div´s en la página y luego llama al método activate(). Aquí hay un ejemplo completo:
function init() { mylist.activate() } mylist = new List(50,50,150) mylist.add('zero','item 0') mylist.add('one','item 1') mylist.add('two','item 2') mylist.add('three','item 3') mylist.add('four','item 4') mylist.build() writeCSS ( mylist.css ) // HTML <script language="JavaScript"> document.write(mylist.div) </script>
Ejemplo list1.html. [fuente].
Ejemplo list2-multicol.html [fuente] para un ejemplo de una lista con múltiple columnas.
Las propiedades abajo pueden ser utilizadas para cambiar como se ve la lista. Estos son los defaults:
itemSpacing = 1 fontname = 'Helvetica' fontsize = 11 visibility = 'inherit' color.textNormal = '#000000' color.textSelected = '#FFFFFF' color.bgNormal = '#E6E6E6' color.bgSelected = '#0000A0' color.bgRollover = '#D1D1D1' color.bg = '#C0C0C0'
Los únicos que son necesarios de explicar son las propiedades itemSpacing y color.bg. El itemSpacing es el número de pixeles que separa a cada artículo en la lista. El color de fondo (color.bg) será un color entre los artículos. Las otras propiedades se explican ellas mismas.
Ejemplo list3-custom.html [fuente]para un ejemplo de una Lista que tiene diferentes colores y cosas.
La Lista tiene propiedades y métodos creados adentro de ella, para que puedas utilizarlos en cualquiera ocasión.
Propiedades:
preSelect (integer)
w (integer)
h (integer)
Métodos:
Ejemplo list4-props.html [fuente] para un ejemplo utilizando casi todas estas propiedades, te daré un mejor idea de como utilizarlas.
El evento onSelect es llamado después que un artículo es seleccionado. Usualmente debes de asignar un controlador a este evento para hacer algo como redirigir el browser a un url (el cual debe de ser fijado por los valores de los artículos en la lista). Para asignar el controlador, solamente fíjelo a una función que tu creas:
objectName.onSelect = myFunction
Esa función vendrá a ser parte del Objeto List y podrás utilizar cualquiera de las propiedades. Como un ejemplo de la función, ya he incluido un controlador para redirigir en el Objeto List ( tu tienes que asignar el controlador manualmente):
function ListRedirect() { location.href = this.value }
Para asignar este solamente tienes que escribir:
objectName.onSelect = ListRedirect
Ejemplo list5-redirect.html [fuente] para un ejemplo de redirigir.
He implementado una opción imagen especialmente para el uso en el objeto MenuLista, pero esto puede ser de uso en otro lugar. Lo que esto hace es pegar a una imagen en el lado derecho del artículo, y cambiará a esta con un estado 'selected' imagen cuando cliqueas en ello. Para la ListaMenu, esto usualmente será una imagen de una fecha. Por default esta imagen aparecerá en el lado derecho, pero esto puede ser cambiable si editaras la fuente de código para el Objeto Lista.
Para utilizar esta opción tienes que utilizar dos etapas. Primero tienes que llamar al método setImage():
object.setImage(image0,image1,width,height)
Donde:
Ejemplo:
mylist.setImage('image-off.gif','image-on.gif',20,20)
Después de llamar a este método, debes de asignar la imagen a los artículos que deseas. Puedes hacer esto con solo fijando una propiedad adicional, hasImage, a los artículos que deseas:
mylist.setImage('image-off.gif','image-on.gif',20,20) mylist.items[0].hasImage = true
Ejemplo list6-image.html [fuente]para un ejemplo de una imagen.
Este objeto por el mismo es suave, no lo he escrito con la intención de que este sea utilizado individualmente, en lugar para ser utilizado como las bases en otros widgets que tengo en mente. Para ver lo que he hecho para extender este objeto lee sobre este en las lecciones siguientes:
Casa | Próxima Lección: SelectList Objeto |