TUTORIAL JAVA + FLEX NA PRÁTICA (9) – Atualizando o Swiz

Outra dúvida muito solicitada por email pela galera é a respeito da atualização do swiz, quando atualiza o framework logo de kara dá erro,confesso que esse tempo todo não trabalhei com projetos usando o swiz, só quando fiz esse Tutorial, e também por falta de tempo, não atualizei o framework, mas esse final de semana para minha surpresa tentei migrar e foi super tranquilo, então vou passar a dica para vocês agora.

Esse artigo é continuação do

TUTORIAL JAVA + FLEX NA PRÁTICA 1/6

TUTORIAL JAVA + FLEX NA PRÁTICA 2/6

TUTORIAL JAVA + FLEX NA PRÁTICA 3/6

TUTORIAL JAVA + FLEX NA PRÁTICA 4/6

TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

TUTORIAL JAVA + FLEX NA PRÁTICA 6/6

TUTORIAL JAVA + FLEX NA PRÁTICA 7/6 – Bônus

TUTORIAL JAVA + FLEX NA PRÁTICA 8 – Datas

Caso queira o projeto java é só baixar aqui (sem as libs).

Caso queira o projeto java é só baixar aqui.(com as libs).

Caso queira o projeto flex é só baixar aqui.

ATUALIZANDO O SWIZ FRAMEWORK

Primeira coisa que vamos fazer é baixar a última versão stable e atualmente (25/01/2009) é a swiz-0.6.4-flex3.swz. Digo isso porque vi no site da swiz que existe a versão alpha 1.0 do framework, esse sim pelo que vi terá algumas novidades notável, como metadata personalizado, estou migrando para essa versão 0.6.4 e quando lançar a 1.0 atualizo vocês por aqui no blog ;) . vamos ao que interessa .

  1. se ainda não baixou baixe o swiz-0.6.4-flex3.swz.
  2. na pasta libs do nosso projeto flex (CrudFlex) retiramos a antiga lib (swiz-0.0.5-010609.swc) e adicionamos a nova 0.6.4.

depois de ter feito isso vai dar erro na nossa models.delegates, isso porque a classe AbstractDelegate foi retirada do framework do swiz, basta retirar o extends AbstractDelegate que nossa classe voltará a funcionar, se vc tentar rodar agora já vai funcionar, blz.. espero que tenha ajudado muita gente.

Tô brincando galera... já que é para atualizar vamos atualizar direito..hehe assim funciona mais não está de acordo com a documentação do Swiz.

Próximo passo nosso será criar o nosso SwizConfig, no nosso projeto na index.mxml temos um preinitialize que invocava a funcção que iniciava o Swiz, agora temos o Swiz config que substitui essa antiga configuração, então nosso index.mxml era assim:

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  3.     preinitialize="{iniciar(event)}">
  4.    
  5.     <mx:Script>
  6.         <![CDATA[
  7.             import com.saberprogramar.views.CidadeView;
  8.             import com.saberprogramar.views.EstadoView;
  9.             import mx.managers.PopUpManager;
  10.             import org.swizframework.Swiz;     
  11.             import mx.events.FlexEvent;   
  12.            
  13.             private function iniciar(event:FlexEvent):void{    
  14.                 Swiz.setStrict(false).loadBeans( [Beans] );           
  15.             }
  16.            
  17.             private function chamarCidadeView():void{
  18.                 PopUpManager.createPopUp(this,CidadeView,false);
  19.             }
  20.            
  21.             private function chamarEstadoView():void{
  22.                 PopUpManager.createPopUp(this,EstadoView,false);
  23.             }
  24.            
  25.         ]]>
  26.     </mx:Script>
  27.     <mx:Button x="10" y="22" label="Estado" height="52" width="88" click="{chamarEstadoView()}"/>
  28.     <mx:Button x="10" y="93" label="Cidade" width="88" height="54" click="{chamarCidadeView()}"/>
  29.    
  30.    
  31. </mx:Application>

ficou agora assim:

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  3.     xmlns:swiz="http://swiz.swizframework.org">
  4.    
  5.     <mx:Script>
  6.         <![CDATA[
  7.             import mx.logging.LogEventLevel;
  8.             import com.saberprogramar.views.CidadeView;
  9.             import com.saberprogramar.views.EstadoView;
  10.             import mx.managers.PopUpManager;
  11.             import org.swizframework.Swiz;     
  12.             import mx.events.FlexEvent;   
  13.                                    
  14.             private function chamarCidadeView():void{
  15.                 PopUpManager.createPopUp(this,CidadeView,false);
  16.             }
  17.            
  18.             private function chamarEstadoView():void{
  19.                 PopUpManager.createPopUp(this,EstadoView,false);
  20.             }
  21.            
  22.         ]]>
  23.     </mx:Script>
  24.    
  25.     <swiz:SwizConfig
  26.         strict="true"
  27.         eventPackages="com.saberprogramar.events"
  28.         mediateBubbledEvents="true"
  29.         viewPackages="com.saberprogramar.views"
  30.         beanLoaders="{[Beans]}"  
  31.         logEventLevel="{LogEventLevel.WARN}"
  32.     />
  33.    
  34.     <mx:Button x="10" y="22" label="Estado" height="52" width="88" click="{chamarEstadoView()}"/>
  35.     <mx:Button x="10" y="93" label="Cidade" width="88" height="54" click="{chamarCidadeView()}"/>
  36.        
  37. </mx:Application>

tá, mas se funcionava antes porque vou fazer isso? explico, está vendo esse viewPackages e eventPackeges, isso é muito importante para usar uma nova Metadata do Swiz, o mediate, tinha na versão anterior mas não era interessante como agora , já que agora conseguimos passar para o nosso Mediate nosso Evento customizado, tudo isso graças a esse atributo eventPackeges. Além disso na 1.0 esse arquivo vai ser mantido pelo que vi, então você estará mais próximo para atualizar quando o mesmo for lançado.

USANDO O MEDIATE

Mas afinal o que é esse Mediate? o Mediate é uma Metadata, assim como usamos o Autowire, que serve para não precisar ficar adicionando escuta de eventos, vamos explicar na prática... vá em "views.action.CidadeAction" na função init temos duas escuta de evento

ACTIONSCRIPT:
  1. Swiz.addEventListener(CidadeEvent.SAVE,onSaveComplete);
  2.     Swiz.addEventListener(CidadeEvent.REMOVE,onRemoveComplete);

não precisamos fazer mais isso, pode apagar.. agora vá na função onSaveComplete e coloque o Mediate

ACTIONSCRIPT:
  1. [Mediate(event="CidadeEvent.SAVE")]
  2. public function onSaveComplete(event:CidadeEvent):void{ 
  3.     stack.selectedChild = canvasDefault;
  4.     findAll();
  5. }

o mesmo no onRemoveComplete

ACTIONSCRIPT:
  1. [Mediate(event="CidadeEvent.REMOVE")]
  2. public function onRemoveComplete(event:CidadeEvent):void{
  3.     stack.selectedChild = canvasDefault;
  4.     findAll();
  5. }

e como as duas funções fazem a mesma coisa podemos também utilizar de uma apenas assim:

ACTIONSCRIPT:
  1. [Mediate(event="CidadeEvent.SAVE")]
  2. [Mediate(event="CidadeEvent.REMOVE")]
  3. public function onSaveComplete(event:CidadeEvent):void{ 
  4.     stack.selectedChild = canvasDefault;
  5.     findAll();
  6. }

só observe que foi necessário modificar o "modificador de acesso" para public, caso contrário não funciona.

Agora sim é isso galera, o swiz está por enquanto atualizado, vi alguns exemplos na internet usando coisas que nunca vi no swiz(Documentação) por isso me retive e mostrei baseado na documentação... seguindo os passos do mesmo..(Os delegates não são mais necessários mas já que está aí resolvi manter). Espero que te ajude e estimule a manter o framework atualizado, porque esse merece seu carinho e atenção :)

Cumps.

Popularity: 33% [?]

Tags: , , , , ,

Categoria(s):#JAVA + FLEX NA PRÁTICA, Action Script 3.0, Adobe Flex, Dicas, MVC, Swiz Framework


Outros Artigos:

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

5 Responses to “TUTORIAL JAVA + FLEX NA PRÁTICA (9) – Atualizando o Swiz”

  1. [...] This post was mentioned on Twitter by Paulo Fagundes Stos, Janderson F.Cardoso, Janderson F.Cardoso, Felipe, Fabiano Frizzo and others. Fabiano Frizzo said: RT @jandersonfc: : TUTORIAL JAVA+FLEX(9) - Atualizando o Swiz http://bit.ly/6vs3Fu [...]

  2. Rener disse:

    Janderson, mais uma vez parabens por esse tutorial, e como vc ta dando sequencia nele, tem algumas q eu considero interessantes (melhor dizendo, eu tenho mais dificuldades), que seria tratamento de erros, e o relacionamento OneToMany,(tipo Venda e ItensVenda), onde todos so seriam gravados se nao houvesse nenhum tipo de erro, andei vendo algumas coisa na net, mas acabei nao conseguindo por pra rodar.

    • jandersonfc disse:

      obrigado pelo comentário Rener, fico feliz em saber que estou ajudando de alguma forma ;)

      Sobre as sugestões são muito válidas, vou preparar um post sobre tratamento de erros e OneToMany, mas antes vou mostra relatórios, estou devendo para uma turma..hehe ;)

      Cumps.

  3. Rener disse:

    Tá blz, o relatorio é algo q aguardo ansioso tbem, so nao havia comentado por que vc ja havia dito q iria mostrar, mas eu to ligadaço nessa sequencia e concerteza tudo que vier será lucro.

    Obrigadoooooooo!

Leave a Reply