logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

TUTORIAL JAVA + FLEX NA PRÁTICA 6/6

Colocado por Janderson Cardoso na(s) categoria(s): Action Script 3.0, Adobe Flex, Blazeds, código fonte Flex, Código Fonte java, Data Service, DomainDriveDesign, Frameworks, Hibernate, hibernate Annotations, Indico a Leitura, Java, mvc, pratica java flex, Spring, SPRING ANNOTATIONS, Swiz Framework, Tutorial, TUTORIAL FLEX, TUTORIAL JAVA em 05 28th, 2009 | Sem comentários

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

Na última parte do nosso tutorial vamos fazer a V(View) do nosso MVC, no caso são 2 tipos de arquivo, a interface em si e a Ação da mesma, lembrando que essa separação não é necessária, eu faço porque gosto de tudo bem dividido, isso ajuda e muito na manutenção ou até mesmo na alteração do Layout, uma vez eu já expliquei o porque disso no artigo Separando MXML do Action Script.

Para terminar com chave de ouro vamos ao código:

EstadoView.mxml

PLAIN TEXT
XML:

  1. <?xml version=“1.0″ encoding=“utf-8″?>
  2.  
  3. <mx:TitleWindow xmlns:mx=“http://www.adobe.com/2006/mxml” layout=“absolute” width=“518″ height=“422″
  4.      title=“Cadastro de Estados” fontSize=“10″ xmlns=“flexmdi.containers.*”
  5.      xmlns:controls=“com.flexpernambuco.controls.*”
  6.      creationComplete=“{init()}”>
  7.    
  8.     <mx:ViewStack x=“10″ y=“10″ id=“stack” width=“486″ height=“362″>
  9.        
  10.         <mx:Canvas label=“View 1″ width=“100%” height=“100%” id=“canvasDefault”>
  11.             <mx:Button x=“138″ y=“330″ label=“Incluir” id=“btnIncluir” click=“{save()}”/>
  12.             <mx:Button x=“209″ y=“330″ label=“Alterar” id=“btnAlterar” click=“{update()}”/>
  13.             <mx:Button x=“284″ y=“330″ label=“Excluir” id=“btnExcluir” click=“{remove()}”/>
  14.             <mx :D ataGrid x=“10″ y=“40″ width=“466″ height=“282″ dataProvider=“{controller.estadoList}” id=“dgEstado”>
  15.                 <mx:columns>
  16.                     <mx :D ataGridColumn headerText=“ID” dataField=“codEstado” width=“70″/>
  17.                     <mx :D ataGridColumn headerText=“Nome do Estado” dataField=“nome”/>
  18.                     <mx :D ataGridColumn headerText=“UF” dataField=“uf” width=“70″/>
  19.                 </mx:columns>
  20.             </mx :D ataGrid>
  21.             <mx:TextInput x=“273″ y=“10″ id=“txtFind”/>
  22.             <mx:Button x=“441″ y=“10″ width=“35″ icon=“@Embed(source=’com/saberprogramar/assets/images/find-16×16.png’)” id=“btnFind” click=“{find()}”/>
  23.         </mx:Canvas>
  24.        
  25.         <mx:Canvas label=“” width=“100%” height=“100%” id=“canvasForm”>
  26.             <mx:Form x=“10″ y=“67″ width=“466″ height=“131″>
  27.                 <mx:FormItem label=“ID:”>
  28.                     <mx:TextInput width=“72″ id=“txtIdEstado” editable=“false” tabIndex=“0″
  29.                         toolTip=“Código Gerado Automático” text=“{estado.idEstado.toString()}”/>
  30.                 </mx:FormItem>
  31.                 <mx:FormItem label=“Nome:” required=“true”>
  32.                     <mx:TextInput width=“339″ id=“txtNome” text=“{estado.nome}” tabIndex=“1″/>
  33.                 </mx:FormItem>
  34.                 <mx:FormItem label=“UF:” required=“true”>
  35.                     <mx:TextInput width=“43″ id=“txtUF” maxChars=“2″ text=“{estado.uf}” tabIndex=“2″ />
  36.                 </mx:FormItem>
  37.             </mx:Form>
  38.             <mx:FormHeading x=“157.5″ y=“21″ label=“Formulário de Estado” width=“171″/>
  39.             <mx:Button x=“160″ y=“206″ label=“Cancelar” id=“btnCancelar” click=“{cancel()}” tabIndex=“5″/>
  40.             <mx:Button x=“243″ y=“206″ label=“Confirmar” id=“btnConfirmar” click=“{confirm()}” tabIndex=“4″/>
  41.         </mx:Canvas>
  42.     </mx:ViewStack>
  43.    
  44.     <mx:Script source=“actions/EstadoAction.as”/>   
  45.    
  46. </mx:TitleWindow>
PLAIN TEXT
CODE:

  1. <mx:Script source=“actions/EstadoAction.as”/>

Nesta linha é que dizemos onde está as ações desta View, então vamos criar este arquivo:

EstadoAction.as

PLAIN TEXT
ACTIONSCRIPT:

  1. // ActionScript file
  2. import com.saberprogramar.controllers.IEstadoController;
  3. import com.saberprogramar.events.EstadoEvent;
  4. import com.saberprogramar.models.entitys.Estado;
  5.  
  6. import org.swizframework.Swiz;
  7.  
  8. [Bindable]
  9. private var estado:Estado;
  10.  
  11. [Bindable]
  12. [Autowire(bean=“estadoController”)]
  13. public var controller:IEstadoController;
  14.  
  15. private function init():void{
  16.    
  17.     Swiz.addEventListener(EstadoEvent.SAVE,onSaveComplete);
  18.     Swiz.addEventListener(EstadoEvent.REMOVE,onRemoveComplete);
  19.    
  20.     findAll();
  21. }
  22.  
  23. private function findAll():void{   
  24.     controller.findAll();
  25. }
  26.  
  27. private function save():void{
  28.     estado = new Estado();
  29.     stack.selectedChild = canvasForm;
  30. }
  31.  
  32. private function update():void{
  33.    
  34.     if (dgEstado.selectedItem != null){
  35.        
  36.         dgEstado.setStyle(“bordercolor”,‘black’);
  37.         dgEstado.errorString = “”;
  38.        
  39.         estado = dgEstado.selectedItem as Estado;
  40.         stack.selectedChild = canvasForm;
  41.        
  42.     }else {
  43.         dgEstado.setStyle(“bordercolor”,‘red’);
  44.         dgEstado.errorString = “Selecione um Estado para alterar”;
  45.     }
  46.    
  47. }
  48.  
  49. private function remove():void{
  50.    
  51.     if (dgEstado.selectedItem != null){
  52.        
  53.         dgEstado.setStyle(“bordercolor”,‘black’);
  54.         dgEstado.errorString = “”;
  55.        
  56.         estado = dgEstado.selectedItem as Estado;
  57.        
  58.         controller.remove(estado);
  59.        
  60.        
  61.     }else {
  62.         dgEstado.setStyle(“bordercolor”,‘red’);
  63.         dgEstado.errorString = “Selecione um Estado para excluir”;
  64.     }
  65.    
  66. }
  67.  
  68. private function confirm():void{   
  69.    
  70.     estado.idEstado = new Number(txtIdEstado.text);
  71.     estado.nome = txtNome.text;
  72.     estado.uf = txtUF.text;
  73.    
  74.     controller.save(estado);   
  75.    
  76. }
  77.  
  78. private function cancel():void{
  79.     estado = new Estado();
  80.     stack.selectedChild = canvasDefault;
  81. }
  82.  
  83. private function find():void{
  84.    
  85.     if (txtFind.text != null){
  86.         controller.findByName(txtFind.text);   
  87.     }
  88.    
  89. }
  90.  
  91. private function onSaveComplete(event:EstadoEvent):void{   
  92.     stack.selectedChild = canvasDefault;
  93.     findAll();
  94. }
  95.  
  96. private function onRemoveComplete(event:EstadoEvent):void{
  97.     stack.selectedChild = canvasDefault;
  98.     findAll();
  99. }

Algumas explicações:

PLAIN TEXT
ACTIONSCRIPT:

  1. [Bindable]
  2. [Autowire(bean=“estadoController”)]
  3. public var controller:IEstadoController;

nesta parte do código estamos fazendo a escuta da nossa controladora, repare que me refiro a interface e não a que implementa a mesma, isso é o que muitos chamam de Programação Orientado a Interface,  como essa escuta vai lá no nosso Bean.mxml e procura um bean com nome de “estadoController”, lembrando:

PLAIN TEXT
XML:

  1. <controllers:EstadoController id=“estadoController”/>

e como o nosso bean está mensionando a implementação e não a interface, ele instancia a implementação, é ou não é inteligente o Swiz :)

outra coisa que vale a pena explicar e somente isso a mais é a escuta que adicionamos aos nossos eventos no método init:

PLAIN TEXT
ACTIONSCRIPT:

  1. Swiz.addEventListener(EstadoEvent.SAVE,onSaveComplete);
  2. Swiz.addEventListener(EstadoEvent.REMOVE,onRemoveComplete);

quando fazemos esse comando acima estamos dizendo para nosso view ficar esperta, ou seja, ficar escutando qualquer disparo desses eventos, quando for disparado um dos eventos ele executa o método que se encontra no segundo parametro, exemplo o onSaveComplete que, por sua vez recebe como parametro um EstadoEvent. Lembra que no controller tem um método que dispara os nossos eventos, não lembra né, também teria esquecido :) , lembrando:

PLAIN TEXT
ACTIONSCRIPT:

  1. public function onSave(event:ResultEvent):void{
  2. Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.SAVE));
  3. }

ou seja, quando é feito esse disparo é executado o nosso onSaveComplete, para quem já conhece de eventos em Flex nenhuma surpresa, somente o fato de estar usando o dispatchEvent e addEventListener do swiz e não os do SDK do próprio flex, isso tem uma explicação, o famoso Mediate do Swiz, que não vamos entrar no mérito neste tutorial, ok!

Agora como respiro final deste tutorial o Index.mxml modificado para chamar a view que acabamos de criar

index.mxml

PLAIN TEXT
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.EstadoView;
  8.             import mx.managers.PopUpManager;
  9.             import org.swizframework.Swiz;     
  10.             import mx.events.FlexEvent;   
  11.            
  12.             private function iniciar(event:FlexEvent):void{    
  13.                 Swiz.setStrict(false).loadBeans( [Beans] ); 
  14.                 chamarView();                     
  15.             }
  16.            
  17.             private function chamarView():void{
  18.                 PopUpManager.createPopUp(this,EstadoView,false);
  19.             }
  20.            
  21.         ]]>
  22.     </mx:Script>
  23.    
  24. </mx:Application>

Como minha hospedagem não suporta java não tem como mostrar o resultado final :( mais….

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

Caso queira o projeto em flex é só baixar aqui.

Bem, é isso, uffa, nunca imaginei que criar um tutorial fosse  tão dificil e demorado :( espero que o resultado tenha sido bom :)

Considerações:

Antes de mais nada peço desculpas se o tutorial não foi muito bem explicado, se dei importância demais onde não era para dar e o que era importante não comentei, sei lá, esse tipo de coisas que pecamos por falta de experiência como blogueiro ;) mais podem ter certeza que o intuito foi o dos melhores e espero que ajude alguém, principalmente a usar MVC no flex, coisa que é muito falada mais tem poucos exemplos, principalmente na língua portuguesa.

Objetivo:

Mostrar que realmente sei o que falo que sei em meu currículo, mesmo não tendo nenhum portfólio, já que não considero meu portfólio o que faço na empresa onde trabalho, o portfólio é da empresa. Procuro contatos profissionais e serviços no que envolve desenvolvimento de sites e sistemas, quem tiver interessado é só entrar em Contato, Obrigado.

Não posso deixar de falar da minha Gata, Fernanda minha Esposa EU TE AMO MUITO, obrigado pela paciência com o seu Geek, hehhe!

Vlw, até a próx. Bons estudos para Todos e um Abraço. FIM.



Veja o post original no blog do autor aqui!  

Janderson Cardoso

Escrito por Janderson Cardoso @ http://www.jandersonfc.com/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Retrospectiva 2010 e Metas 2011
» Flash Catalyst Beta para Windows
» SaberProgramar.com na RedeRIA

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2750 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com