Valeu Mário...

2010/10/2 Mário Júnior <juninho...@gmail.com>

> Lá no LoginForm.mxml vc pode criar um callback q será acionado pelo
> controller
>
> [Mediate(event="UsuarioEvent.USUARIO_LOGADO", properties="usuarioLogado")]
> public function usuarioLogadoCallback(uusario:Usuario):void {
>    //aqui vc recebe o mesmo evento q disparou lá do controller, sacou?
> }
>
> Ou poderia colocar isso no presentation model tb, pode ser.
>
>
> O "cilo de vida" é mais ou menos assim:
>
> 1) view dispara evento
> 2) controller recebe evento mediando-o (mediate), e logo dispara chamada
> para back-end
> 3) o controller ainda trata o resultado do back-end e dispara outro evento
> para notificar a view (callback)
> 4) a view vai "ouvir" o evento do controller e mediá-lo (mediate), tomando
> o comportamento q vc desejar.
>
> Isso é uma das formas, outra forma (a que usavamos 'antigamente') seria
> controlar por meio de atributos no model, mas isso implicava em criar muitos
> atributos de controle de view nos models, coisa q incomodava muito até o
> pessoal do Swiz Team, por isso criaram esse esquema de callback
> reaproveitando o central dispatcher e a criação dinamica de mediators.
>
>
> []s
>
>
>
>
>
>
>
>
>
> Em 2 de outubro de 2010 14:00, Leonardo Ribeiro 
> <leojribe...@gmail.com>escreveu:
>
>> Pessoal,
>>
>> Estou começando com o Swiz + Flex4 e estou tendo uma dificuldade em
>> relação a quando e como fechar uma janela, no caso específico, a janela de
>> Login.
>>
>> Segue abaixo:
>>
>> *main.mxml*
>>
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
>>    xmlns:s="library://ns.adobe.com/flex/spark"
>>    xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
>> minHeight="600"
>>    xmlns:view="r2.view.*"
>>    xmlns:config="r2.config.*"
>>    creationComplete="{init()}">
>> <fx:Style source="main.css"/>
>>  <fx:Declarations>
>> <config:SwizConfig/>
>> <s:BasicLayout/>
>>  </fx:Declarations>
>>  <fx:Script>
>>  <![CDATA[
>> import mx.managers.PopUpManager;
>>  import r2.view.LoginForm;
>>  private function init():void {
>>  var form:LoginForm = new LoginForm();
>> PopUpManager.addPopUp(form, this, true);
>>  PopUpManager.centerPopUp(form);
>> }
>>  ]]>
>> </fx:Script>
>> </s:Application>
>>
>>
>>
>> *LoginForm.mxml*
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009";
>>  xmlns:s="library://ns.adobe.com/flex/spark"
>>  xmlns:mx="library://ns.adobe.com/flex/mx" width="286" height="142"
>> title="R2 - Login" skinClass="spark.skins.spark.PanelSkin">
>>  <s:layout>
>> <s:VerticalLayout/>
>> </s:layout>
>>  <fx:Declarations>
>>
>> </fx:Declarations>
>>  <fx:Script>
>> <![CDATA[
>> import mx.rpc.remoting.RemoteObject;
>>  import r2.model.presentation.LoginPM;
>>  [Inject(source="loginPM")]
>> [Bindable]
>> public var loginPM:LoginPM;
>>
>> ]]>
>> </fx:Script>
>>  <mx:Form width="100%" height="114" >
>> <mx:FormItem label="Usuário" width="250" required="true">
>>  <s:TextInput width="100%" id="tfUsuario"/>
>> </mx:FormItem>
>>  <mx:FormItem label="Senha" width="250" required="true">
>> <s:TextInput width="100%" displayAsPassword="true" id="tfSenha"/>
>>  </mx:FormItem>
>> <mx:FormItem width="250" horizontalAlign="right">
>>  <s:Button label="Entrar" id="btnLogin"
>> click="{loginPM.btnLogin(tfUsuario.text, tfSenha.text)}"/>
>> </mx:FormItem>
>>  </mx:Form>
>> </s:Panel>
>>
>>
>> *LoginPM.as*
>> *
>> *
>> *
>> [Bindable]
>>  public class LoginPM {
>>
>> [Dispatcher]
>>  public var dispatcher:IEventDispatcher;
>>
>> public var usuario:Usuario;
>>
>> public function LoginPM() {
>>  this.usuario = new Usuario;
>>  }
>>
>>  public function btnLogin(login:String, senha:String):void {
>>  var usuarioEvent:UsuarioEvent = new UsuarioEvent(UsuarioEvent.LOGIN);
>>  usuario.login = login;
>>  usuario.senha = senha;
>>  usuarioEvent.usuario = usuario;
>>  this.dispatcher.dispatchEvent(usuarioEvent);
>>  }
>> }
>> *
>>
>>
>> *LoginController.as*
>>
>> package r2.controller
>> {
>> import flash.events.IEventDispatcher;
>>  import mx.collections.ArrayCollection;
>> import mx.controls.Alert;
>>  import mx.rpc.events.FaultEvent;
>> import mx.rpc.events.ResultEvent;
>> import mx.rpc.remoting.RemoteObject;
>>  import org.swizframework.utils.services.ServiceHelper;
>>  import r2.event.UsuarioEvent;
>> import r2.model.entities.Usuario;
>>  import spark.components.Application;
>>  public class LoginController {
>>  [Dispatcher]
>> public var dispatcher:IEventDispatcher;
>>  [Inject(source="serviceHelper")]
>> public var serviceHelper:ServiceHelper;
>>  [Inject(source="usuarioService")]
>> public var usuarioService:mx.rpc.remoting.RemoteObject;
>>
>> //----------------------------------------------------------------------
>>  public function LoginController() {}
>>
>> //----------------------------------------------------------------------
>>  [Mediate(event="UsuarioEvent.LOGIN", properties="usuario")]
>>  public function login(usuario:Usuario):void {
>> this.serviceHelper.executeServiceCall(
>>  usuarioService.login(usuario.login, usuario.senha),
>> usuarioService_login_resultHandler,
>>  usuarioService_faultHandler
>> );
>> }
>>  //----------------------------------------------------------------------
>>  // handlers
>> private function usuarioService_faultHandler(event:FaultEvent):void {
>>  Alert.show(event.fault.message, "Erro comunicação BlazeDS");
>> }
>>  private function
>> usuarioService_login_resultHandler(event:ResultEvent):void {
>>                         *//Aqui tenho o retorno do login OK...precisaria
>> setar o usuario logado do sistema e fechar o Panel de login*
>> var usuarioEvent:UsuarioEvent = new UsuarioEvent(
>> UsuarioEvent.USUARIO_LOGADO );
>>  usuarioEvent.usuarioLogado = event.result as Usuario;
>> this.dispatcher.dispatchEvent(usuarioEvent);
>>  }
>> }
>> }
>>
>>
>>
>> --
>> []'s
>> Leonardo
>>
>> Linux User #488650
>> Ubuntu User #27045
>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
>> Para sair da lista, envie um email em branco para
>> flexdev-unsubscr...@googlegroups.com
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
>
>
>
> --
> Mario Junior
> http://blog.mariojunior.com/
> @mariojunior
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev




-- 
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a