Buscar este blog

miércoles, 3 de febrero de 2010

CENTRANDO POP-UPs RELATIVOS AL PARENTAPPLICATION EN FLEX BUILDER 3

Trabjando un poco en un pequeño proyecto llegue al punto en que deseaba poder centrar un elemento que era creado por un contenedor, digamos de "tercer nivel" (era un canvas, dentro de otro canvas que estaba dentro del parentApplication), en Flex Builder, pero nada me funcionaba. Lo que sucedia es que me centraba el pop-up que creaba relativo al control desde donde creaba el pop-up :(

Navegue un poco por la red y encontre propuestas de solucion tales como hacer lo siguiente:

var window:myWindow = myWindow(PopUpManager.createPopUp(parentApplication,myWindow,false));
PopUpManager.centerPopUp(window);

o bien

var window:myWindow = myWindow(PopUpManager.createPopUp(Application.application,myWindow,false));
PopUpManager.centerPopUp(window);

pero nada de eso me resulto :(. Asi que leyendo un poco se me ocurrio una "solucion" (no estoy seguro que sea la mejor, si encuentran otra pues que mejor que lo comenten por aca :D ).

Dado que necesitaba que funcionara para cualquier clase que tuviera las propiedades de poder desplegarse como pop-up, decidi crear un metodo publico en mi parentApplication, el cual es el siguiente:


public function centerWindowOnTop(className:Class):void
{
var window:IFlexDisplayObject = PopUpManager.createPopUp(this,className,false);
PopUpManager.centerPopUp(window);
}

y desde mi contenedor de "tercer nivel" basto con crear un metodo que se ejecute con el evento click del control que dispara dicho evento, como el siguiente:

private function showMyWindow():void
{
Application.application.centerWindowOnTop(myWindow);
}


y con esto pude mostrar las ventanas del tipo que deseaba centradas relativas al parentApplication y no al control que las manda a llamar :D.