Our Country Sites: Argentina|Brazil|Chile|Mexico|Peru

Desarrollo Apps Blackberry (5) - Primera Aplicacion GUI Blackberry [Parte 2]

Versión para impresiónVersión para impresiónSend by emailSend by email

Desarrollo Apps Blackberry (5)
Primera Aplicación GUI Blackberry - Parte 2

En la primera parte de este post les hice una introducción al funcionamiento de una aplicación GUI de Blackberry, mediante la especificación de la clase main(); asi como mencionar conceptos tales como "EDT" y "Pila de Visualización". En este segundo post entraré en mayor detalle de los conceptos mencionados, asi como su empleo práctico en un código ejemplo complementario.

EDT (Event Dispatch Thread)
Si se han preguntado por que tenemos que adjuntar las pantallas manualmente con el EDT, la repuesta es: cuando el usuario corre su aplicación GUI al seleccionar su Icono dentro del menu de Blackberry, en realiadad se ejecuta el proceso que ejecuta la funcion main(). Ya que esta es una aplicación GUI, tu puedes crear elementos, pantallas, etc y luego "empujar" (push) la pantalla a la pila de visualización. Finalmente cuando desees pintar en pantalla y mostrar el UI, debes llamar a la funcion enterEventDispatcher().

PILA DE VISUALIZACIÓN
El Blackberry mantiene una pila de pantallas, y la pantalla que esta en la parte superior es la que se puede apreciar en la pantalla del equipo. Por ello si seguimos agregando pantallas a la pila, solo la última que se agregue es la que se podrá mostrar en pantalla. Podemos esconder las pantallas y removerlas de la pila una vez que hayan sido utilizadas. En realidad cuando la aplicacion esta lista para salir, tenemos que remover todas las pantallas que estan en la pila de visualización, y de ahi recien finalizarlo. Tambien puedes llamar a la funcion System.exit(0) para detener la ejecución de tu aplicación. Puedes tambien escribir una función de limpieza antes que se cierre una pantalla, lo cual representaría una buena practica a tomar en cuenta.

LAYOUT MANAGERS
En posts anteriores aborde el tema del funcionamiento de los layout managers (el del Vertical Field Manager y el Horizontal Field Manager). Por ello, es bueno recordar que cada pantalla utiliza la totalidad del ancho y alto de su zona visible. Dentro de cada pantalla hay un layout manager (field manager), el cual maneja el tamaño y la posición de los campos (fields) que estan dentro de este layout manager (el cual esta dentro de una pantalla, la cual a su vez esta incluida en la pila de visualización). Hay que tambien recordar que un layout manager es también un campo (field), por lo que pueden usarse tambien dentro de otro layout manager.

CONTRUYENDO NUESTRA PANTALLA
Ahora que tenemos conocimiento de como Blackberry maneja la visualización de los contenidos de las pantallas, les mostraré como crear una interface usando la clase MainScreen y agregando componentes dentro de el (recordar que del anterior post quedaba pendiente la implementacion de la clase "MyScreen").

public class MyScreen extends MainScreen {

  public MyScreen(){

    LabelField title = new LabelField("TITULO",LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
    LabelField banner = new LabelField("BANNER",LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
    LabelField status = new LabelField("STATUS",LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
    LabelField body1 = new LabelField("Contenido01",LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
    LabelField body2 = new LabelField("Contenido01",LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);

    VerticalFieldManager vfm = new VerticalFieldManager(Field.FIELD_VCENTER);
    vfm.add(body1);
    vfm.add(body2);

    add(vfm);

    setTitle(title);
    setBanner(banner);
    setStatus(status);

  }

}

1. La Clase "MyScreen" hereda de MainScreen, la cual es la clase base (para efectos de este ejemplo) para mostrar una ventana que tenga una area de "Status", "titulo" y "banner". La clase "Main Screen" de igual manera administra el boton de menu que se utiliza en el flujo de la pantalla. Esta es la pantalla tipica que se puede apreciar en casi todas las aplicaciones Blackberry que existen, como por ejemplo: la aplicacion de Mensajería. La otra clase base para el desarrollo de pantallas es la clase Full Screen, la cual hace menos cosas a comparacion de la clase MainScreen (le da mas libertades al desarrollador).
2. Se han creado Labels que se se van a colocar dentro de la pantalla. Los parámetros dentro de sus constructores le indican al Label como se va a dibujar en pantalla. Se indica colocar una elipsis si el ancho del Label es mas grande que el area de visualizacion de la pantalla. También se le indica que el Label utilice la totalidad de la pantalla.
3. Utilizamos un VerticalFieldManager, el cual coloca los campos creados de arriba hacia abajo, ademas de indicarle que centre verticalmente los campos adicionados.
4. Luego adiciono el VerticalFieldManager al MainScreen. No olvidar este paso sino no se mostrara nada en pantalla.
5. Finalmente configuro el "titulo","banner" y "status" con los Label (las funciones SetTitle() y SetStatus() forman parte de la Clase MainScreen, la funcion SetBanner() se las dejo mencionada para que la puedan investigar).

Espero sus comentarios.

Gerardo Chung
Desarrollo Blackberry Senior
Nextel del Peru S.A.