martes, 11 de marzo de 2008

Data Binding

Update (2009-03-28): Una entrada mas reciente con un ejemplo

El data binding es una de las caracteristicas mas agradables que provee Flex.

Que es en realidad?

Es un mecanismo que permite que componentes y/o objetos escuchen a los cambios que ocurran en otra variable, objeto o funcion X.

Que permite?

Bueno, permite actualizar informacion en un objeto que escucha (y mostrar esa actualizacion si es necesario) en el momento en que una variable, objeto o funcion que es escuchada cambia su estado (osea alguna propiedad).

Como funciona?

La forma mas elemental ocupa de lo que se llaman Metadata, que es una sentencia especial reconocida por el compilador, que lo que hace es avisarle como debe tratar una cierta sentencia que sigue despues del tag. En el caso de binding se utiliza [Bindable] antes de una variable que se quiera 'bindear'. Los componentes en MXML bindean muchas de sus propiedades principales por default. Una vez que indicamos que una variable va ser bindeada, osea que otros objetos pueden llegar a escuchar cambios que se realicen en ella, procedemos a definir sus escuchas (que pueden ser cero, uno o muchos) Para reflejar esos cambios en MXML, se utiliza '{ variable_bindeada } '. En actionscript puro (no MXML) se usa otro tipo de forma como por ejemplo la clase BindingUtils que provee el framework de Flex.

Que es lo que pasa en realidad?

En realidad lo que es el binding en flex, es el patron Observer simplificado por el uso de Metadata [Bindable] y de { } o BindingUtils
El observer pattern indica una relacion entre dos objetos, en la cual uno notifica al otro u otros acerca de un cambio en su estado y los actualiza automaticamente.
Entonces explicando la teoria, el observador es la variable u objeto que definimos como Bindable

Ejemplos:

Base:

<Application>
<mx:TextInput id="texto1" x="50" y="20"/>
<mx:Label id="etiqueta1" x="50" y="40"/>
</Application>

MXML:
1. Reemplazo del Label:

<mx:Label id="etiqueta1" x="50" y="40" text="{texto1.text}"/>

2. Etiqueta mx:Binding

<mx:Binding source="ObjetoFuente.propiedadEscuchar" destination="ObjetoDestino.propiedad_actualizar" />

en este caso

<mx:Binding source="texto1.text" destination="etiqueta1.text" />

Actionscript:

 BindingUtils.bindProperty(ObjetoDestino, "propiedad_actualizar", ObjetoFuente, "propiedad_escuchar");

Ejm:
BindingUtils.bindProperty(etiqueta1, "text", texto1, "text");


Notas:

Aunque el codigo se vea tan sencillo, detras de todo esto de binding ocurren una gran cantidad de cosas que nosotros no vemos. El uso de binding genera muchisimos archivos y clases mas de lo que vemos y pueden ser vistas si compilamos la aplicacion con la opcion --keep-generated-actionscript que mantiene todos los archivos generados por el compilador que son abreviados por metadatas por ejemplo. Esto se genera debido a que se crean listeners y handlers de esos listeners para cada propiedad bindeada.

jueves, 6 de marzo de 2008

Seminario de Flex y Campamento... y lo mejor... GRATIS!!!

Alguna vez han sentido que han llegado a la cuspide de su carrera profesional? Ha llegado al tope de su conocimiento?? Si es asi... usted esta en problemas! Si usted piensa que ya ha alcanzado todo solo por tener un titulo colgado en una pared o por tener un buen trabajo.. pienselo dos veces... siempre hay algo mejor afuera para usted! Y no lo digo por la simple ambicion de tener mas.. lo digo por el hecho de querer ser mejor en toda area y no un simple conformista. Cual es su valor profesional en el mercado laboral? Es solo su titulo? Es solo un lenguaje lo que le da valor a usted? Entre mas cosas pueda anadirle a su curriculum pero mas importante a su cerebro y a su capacidad, mas oportunidades tendra de seguir avanzando profesionalmente.
Es por eso, que tal como habia dicho en un post anterior, la empresa donde trabajo actualmente esta preparando un evento de Flex para el publico en general.
En realidad son dos distintos, pero dentro de uno mismo :D

Lo primero, un seminario de 5 noches seguidas que empezara el 10 de marzo y terminara el 14 de Marzo. Todas las noches de 7 pm a 9 pm, en el auditorio de la Ulatina (que amablemente esta prestando sus instalaciones) y mencione que era GRATIS???? Gratis? Si.. gratis pero no como cuando te ofrecen una muestra gratis de un producto.. es GRATIS-GRATIS... El segundo es el 15 de Marzo, de 10 am a 3 pm. Gratis tambien.
El seminario seran 5 charlas teoricas y algo de practica con los fundamentos necesarios para aprender Flex...a distribuirse mas o menos asi:


Lunes:
Que es Flex?
Martes:
Componentes de Flex y ActionScript
Miercoles:
Manipulacion de Informacion
Jueves:
Eventos y Drag-n-Drop
Viernes:
Tópicos avanzados

Para Inscribirse aqui
Mas informacion aqui

El Camp Flex, es el evento principal a mi gusto.. en este esperamos que se llene el auditorio. Hicimos la solicitud a Adobe y muy amablemente estaran enviando un 'Evangelista' de ellos mismos para venir y dar una charla a todo el que quiera llegar... Mike Downey nos estara acompanando... Mike es uno de los principales propulsores de AIR, de Adobe. Una herramienta que permitira a los programadores de Flex o de Ajax crear aplicaciones para escritorio con todas las de la ley... solamente asistan al evento y podran ver TODO lo que podran hacer con esto. De verdad es algo increible!!! Tambien segun se me ha dicho nos presentara un demo de Thermo de 12 minutos... Que es Thermo?? Es a mi gusto una de las mejores herramientas que tendra adobe en unos meses que permitira la integracion del disenador grafico y del programador en flex en muy pocos minutos de una manera ASOMBROSA...!! Venga!! Compruebelo usted mismo.

Asi que ya no tiene excusa, si quiere crecer como profesional, si quiere tener mas valor en el mercado laboral, si quiere conocer mas, si quiere hacer algo mas productivo que ver tele y comer en el sillon despues del trabajo, algo mas productivo que despertarse a las 11 de la manana el sabado, acompanenos esta semana que viene, recuerde del 10 de Marzo al 14 de 7 a 9 pm. El 15 de marzo el evento con Mike Downey, de 10 am a 3pm....
Por cierto, mencione que todo es gratis???

Para Inscribirse aqui
Mas informacion aqui