Criando um pop-up window
Flex / Flex Builder No Comments »Para criar um pop-up window, use o método PopUpManager’s createPopUp(). O método createPopUp() tem a seguinte sintaxe:
public static createPopUp(parent:DisplayObject, class:Class,modal:Boolean = false) : IFlexDisplayObject
O método tem o seguinte argumento
Argumento -> Descrição
parent -> Uma referência à uma janela para aparecer em cima.
class -> Uma referência à classe de objeto que você quer criar, tipicamente um componente de MXML personalizado que implementa um recipiente de TitleWindow
modal -> (Opcional) Um valor Booleano que indica se a janela é modal, e leva toda entrada do mouse até que seja fechado (true), ou se a interação tem permissão para com outros controles enquanto a janela é exibida (falso). O valor padrão é falsa.
Você também pode criar janela pop-up passando uma instância de uma classe TitleWindow ou componente customizado de addPopUp do método PopUpManager().
Definindo um componente de TitleWindow personalizado
Um dos modos mais comuns de criar um recipiente de TitleWindow é definir-lo como um componente de MXML personalizado.
·Você define o recipiente de TitleWindow, seus manipuladores de evento, e todas as seus filhos no componente personalizado.
·Você usa o createPopUp do método PopUpManager() e removePopUp() para criar e remover o recipiente de TitleWindow.
O código de exemplo seguinte define um componente de MyLoginForm TitleWindow personalizado que é usado como janela pop-up:
<?xml version=”1.0″?><mx:TitleWindow xmlns:mx=”http://www.adobe.com/2006/mxml” creationComplete=”doInit();”> <mx:Script> <![CDATA[ import mx.managers.PopUpManager;
private function doInit():void { // Centraliza o TitleWindow // acima do controle que criou-o.
PopUpManager.centerPopUp(this); }
private function processLogin():void { // Verifica credenciais (não mostradas) então remove o pop-up.
PopUpManager.removePopUp(this); }
]]> </mx:Script> <mx:Form> <mx:FormItem label=”User Name”> <mx:TextInput id=”username” width=”100%”/> </mx:FormItem> <mx:FormItem label=”Password”> <mx:TextInput id=”password” displayAsPassword=”true” width=”100%”/> </mx:FormItem> </mx:Form> <mx:HBox> <mx:Button click=”processLogin();” label=”OK”/> <mx:Button click=”PopUpManager.removePopUp(this);” label=”Cancel”/> </mx:HBox></mx:TitleWindow>
Este arquivo, chamado MyLoginForm.mxml, define um recipiente de TitleWindow usando a tag <mx:TitleWindow>. O recipiente de TitleWindow define dois controles TextInput, para nome de usuário e senha, e dois controles de Botão, para enviar o formulário e para fechar o recipiente de TitleWindow. Este exemplo não inclui o código para verificar o nome de usuário e senha no evento submitForm()
Neste exemplo, você processa os dados do formulário em um evento do componente de MyLoginForm.mxml. Para fazer este componente mais reutilizável, você pode definir os evento em sua aplicação principal. Este permite a você criar um formulário genérica que deixa a manipulação de dados para a aplicação que usa o formulário. Para um exemplo que define os eventos na aplicação principal, veja. Using TitleWindow and PopUpManager events.
Usando o PopUpManager para criar o pop-up TitleWindow
Para criar pop-up, você chama o createPopUp do método PopUpManager() e passe-o como parent, o nome da classe que cria o pop-up, e o valor Booleano modal. O código da aplicação principal seguinte cria o recipiente de TitleWindow definido em Defining a custom TitleWindow component:
<?xml version=”1.0″?><mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”> <mx:Script> <![CDATA[ // Importa o PopUpManager. import mx.managers.PopUpManager; import mx.core.IFlexDisplayObject;
private function showLogin():void { // Cria um container TitleWindow non-modal. var helpWindow:IFlexDisplayObject = PopUpManager.createPopUp(this, MyLoginForm, false); }
]]> </mx:Script>
<mx:VBox width=”300″ height=”300″> <mx:Button click=”showLogin();” label=”Login”/> </mx:VBox></mx:Application>
Neste exemplo, quando o usuário selecionar o botão de Login, o evento para o click evento usa o método createPopUp() criar um recipiente de TitleWindow, passando para ele o nome do arquivo MyLoginForm.mxml como o nome da classe.
Freqüentemente, você lança o valor de retorno do método createPopUp() para TitleWindow de forma que você pode manipular as propriedades do pop-up TitleWindow, como a versão seguinte do método showLogin() do exemplo seguinte:
// A declaração de importação adicional para usar o recipiente de TitleWindow. import mx.containers.TitleWindow;
private function showLogin():void { // Crie o recipiente de TitleWindow. var helpWindow:TitleWindow = TitleWindow(PopUpManager.createPopUp(this, MyLoginForm, false)); // Adicione título para o title bar. helpWindow.title=”Enter Login Information”; // Faz o título ficar ligeiramente transparente. helpWindow.setStyle(”borderAlpha”, 0.9);// Adicione um botão fechar.// Para fechar o recipiente, você deve também lidar com o evento close.
helpWindow.showCloseButton=true; }




