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
-
-
-
title="Cadastro de Estados" fontSize="10" xmlns="flexmdi.containers.*"
-
xmlns:controls="com.flexpernambuco.controls.*"
-
creationComplete="{init()}">
-
-
-
-
toolTip="Código Gerado Automático" text="{estado.idEstado.toString()}"/>
-
-
-
-
Nesta linha é que dizemos onde está as ações desta View, então vamos criar este arquivo:
EstadoAction.as
-
// ActionScript file
-
import com.saberprogramar.controllers.IEstadoController;
-
import com.saberprogramar.events.EstadoEvent;
-
import com.saberprogramar.models.entitys.Estado;
-
-
import org.swizframework.Swiz;
-
-
[Bindable]
-
private var estado:Estado;
-
-
[Bindable]
-
[Autowire(bean="estadoController")]
-
public var controller:IEstadoController;
-
-
private function init():void{
-
-
Swiz.addEventListener(EstadoEvent.SAVE,onSaveComplete);
-
Swiz.addEventListener(EstadoEvent.REMOVE,onRemoveComplete);
-
-
findAll();
-
}
-
-
private function findAll():void{
-
controller.findAll();
-
}
-
-
private function save():void{
-
estado = new Estado();
-
stack.selectedChild = canvasForm;
-
}
-
-
private function update():void{
-
-
if (dgEstado.selectedItem != null){
-
-
dgEstado.setStyle("bordercolor",'black');
-
dgEstado.errorString = "";
-
-
estado = dgEstado.selectedItem as Estado;
-
stack.selectedChild = canvasForm;
-
-
}else {
-
dgEstado.setStyle("bordercolor",'red');
-
dgEstado.errorString = "Selecione um Estado para alterar";
-
}
-
-
}
-
-
private function remove():void{
-
-
if (dgEstado.selectedItem != null){
-
-
dgEstado.setStyle("bordercolor",'black');
-
dgEstado.errorString = "";
-
-
estado = dgEstado.selectedItem as Estado;
-
-
controller.remove(estado);
-
-
}else {
-
dgEstado.setStyle("bordercolor",'red');
-
dgEstado.errorString = "Selecione um Estado para excluir";
-
}
-
-
}
-
-
private function confirm():void{
-
-
estado.idEstado = new Number(txtIdEstado.text);
-
estado.nome = txtNome.text;
-
estado.uf = txtUF.text;
-
-
controller.save(estado);
-
-
}
-
-
private function cancel():void{
-
estado = new Estado();
-
stack.selectedChild = canvasDefault;
-
}
-
-
private function find():void{
-
-
if (txtFind.text != null){
-
controller.findByName(txtFind.text);
-
}
-
-
}
-
-
private function onSaveComplete(event:EstadoEvent):void{
-
stack.selectedChild = canvasDefault;
-
findAll();
-
}
-
-
private function onRemoveComplete(event:EstadoEvent):void{
-
stack.selectedChild = canvasDefault;
-
findAll();
-
}
Algumas explicações:
-
[Bindable]
-
[Autowire(bean="estadoController")]
-
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:
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:
-
Swiz.addEventListener(EstadoEvent.SAVE,onSaveComplete);
-
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:
-
public function onSave(event:ResultEvent):void{
-
Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.SAVE));
-
}
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
-
<!--?xml version="1.0" encoding="utf-8"?-->
-
preinitialize="{iniciar(event)}">
-
<![CDATA[
-
import com.saberprogramar.views.EstadoView;
-
import mx.managers.PopUpManager;
-
import org.swizframework.Swiz;
-
import mx.events.FlexEvent;
-
-
private function iniciar(event:FlexEvent):void{
-
Swiz.setStrict(false).loadBeans( [Beans] );
-
chamarView();
-
}
-
-
private function chamarView():void{
-
PopUpManager.createPopUp(this,EstadoView,false);
-
}
-
-
]]>
-
-
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.




Pingback: TUTORIAL JAVA + FLEX NA PRÁTICA 7/6 - Bônus | SaberProgramar.com