Archive for the ‘Swiz Framework’ Category

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

janeiro 26th, 2010, posted in #JAVA + FLEX NA PRÁTICA, Action Script 3.0, Adobe Flex, Dicas, MVC, Swiz Framework

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.

Popularity: 33% [?]

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

julho 20th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Hibernate, Java, MVC, Spring, Swiz Framework

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

Não definitivamente você não está delirando e nem eu esqueci conceitos simples da matemática, realmente criei mais um tutorial, a 7/6, o que estou considerando Bônus, para fazer algumas modificações e implementar algumas funcionalidades.

Antes gostaria de agradecer pela participação do pessoal, muitos entenderam o objetivo do tutorial e com certeza fizeram bom proveito, fiquei sabendo este mês de julho que alguns mudaram a forma de trabalhar com Java + flex através deste tutorial :P . Através do mesmo recebi ótimos contatos e oportunidades profissionais, porém, como sempre há alguém que quer mais e gostaria de mais um empurram, então vamos direto ao assunto que tempo é dinheiro.

Essa parte vamos tratar mais de relacionamentos entre tabelas, como tratar esses relacionamentos no Flex e como mostrar mais de um objeto no datagrid… vamos a prática.

Popularity: 48% [?]

TUTORIAL JAVA + FLEX NA PRÁTICA 6/6

maio 28th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework

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:

Popularity: 46% [?]

TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

maio 25th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework

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

Como tenho feito nos outros artigos que fazem parte deste tutorial vou colocar o projeto para vocês não se perderem

package crudFlex TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

EVENTS

Eventos é forma que encontramos de criar uma comunicação entre Objetos que não tem ou não podem se comunicar de uma forma direta. Algumas coisas são muito bonito falar porém é muito Simples fazer, um exemplo típico são os eventos customizados em flex, como o tutorial é NA PRÁTICA vamos ao código:

EstadoEvent.as

ACTIONSCRIPT:
  1. package com.saberprogramar.events
  2. {
  3.     import flash.events.Event;
  4.  
  5.     public class EstadoEvent extends Event
  6.     {
  7.  
  8.         public static const SAVE:String = "saveEstado";
  9.         public static const REMOVE:String = "removeEstado";
  10.  
  11.  
  12.         public function EstadoEvent(type:String)
  13.         {
  14.             super(type);
  15.         }
  16.  
  17.  
  18.     }
  19. }

Os eventos são muito utilizados no Flex e recomendo por todos que procuram um código limpo, como você consegue perceber declaro variáveis Static com o nome de "SAVE" e "REMOVE", neste caso representa os métodos que será necessário disparar eventos, a necessidade de ter esses eventos no nosso caso de um MVC é que a Controller ele não pode mudar um status na view, isso é responsabilidade da própria view, por isso a necessidade de ter eventos. A view fica a escuta deste evento, então quando a controller dispara esse evento a própria view muda o seu status.

Para criar um evento customizado é só criar uma sub-classe da Classe "Event", na construtora da nossa classe recebemos como parâmetro uma String, que no caso é uma das nossas variáveis que declaramos como static na mesma classe (Mais a frente você verá a utilização da nossa classe e vai entender mais).

CONTROLLER

Agora vamos falar da C(Controller) do nosso MVC, essa parte é a melhor de todas, Aliás é a parte da implementação do MVC mais importante.

A Controller recebe requisições da View e passa para Model e o mesmo acontece no sentido contrário, além disso a Controller dispara os eventos que acabamos de criar no ínicio deste tutorial.

Se você analisar a figura acima vai perceber que existem duas classes na nossa Controller uma interface e a implementação da mesma, vamos ao código:

IEstadoController.as

ACTIONSCRIPT:
  1. package com.saberprogramar.controllers
  2. {
  3.     import com.saberprogramar.models.entitys.Estado;
  4.  
  5.     import mx.collections.ArrayCollection;
  6.  
  7.     public interface IEstadoController
  8.     {
  9.  
  10.         function get estadoList():ArrayCollection;
  11.  
  12.         function findAll():void;
  13.  
  14.         function findByName(nome:String):void;
  15.  
  16.         function save(estado:Estado):void;
  17.  
  18.         function remove(estado:Estado):void;
  19.  
  20.     }
  21. }

Uma simples interface sem muitas explicações que é implementada pela:

EstadoController.as

ACTIONSCRIPT:
  1. package com.saberprogramar.controllers
  2. {
  3.     import com.saberprogramar.events.EstadoEvent;
  4.     import com.saberprogramar.models.delegates.EstadoDelegate;
  5.     import com.saberprogramar.models.entitys.Estado;
  6.  
  7.     import mx.collections.ArrayCollection;
  8.     import mx.controls.Alert;
  9.     import mx.rpc.events.FaultEvent;
  10.     import mx.rpc.events.ResultEvent;
  11.  
  12.     import org.swizframework.Swiz;
  13.     import org.swizframework.controller.AbstractController;
  14.  
  15.     public class EstadoController extends AbstractController
  16.         implements IEstadoController{
  17.  
  18.         [Bindable]
  19.         public var estadoList:ArrayCollection;
  20.  
  21.         [Autowire(bean="estadoDelegate")]
  22.         public var estadoDelegate:EstadoDelegate;
  23.  
  24.         public function EstadoController()
  25.         {
  26.             super();
  27.         }
  28.  
  29.         public function findAll():void{
  30.             executeServiceCall(estadoDelegate.findAll(),onFindAll,onError);
  31.         }
  32.  
  33.         public function findByName(nome:String):void{
  34.             executeServiceCall(estadoDelegate.findByName(nome),onFindByName,onError);
  35.         }
  36.  
  37.         public function save(estado:Estado):void{
  38.             executeServiceCall(estadoDelegate.save(estado),onSave,onError);
  39.         }
  40.  
  41.         public function remove(estado:Estado):void{
  42.             executeServiceCall(estadoDelegate.remove(estado),onRemove,onError);
  43.         }
  44.  
  45.         //*************** Handle Results ************************//
  46.  
  47.         public function onFindAll(event:ResultEvent):void{
  48.             estadoList = ArrayCollection(event.result);
  49.         }
  50.  
  51.         public function onFindByName(event:ResultEvent):void{
  52.             estadoList = event.result as ArrayCollection;
  53.         }
  54.  
  55.         public function onSave(event:ResultEvent):void{
  56.             Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.SAVE));
  57.         }
  58.  
  59.         public function onRemove(event:ResultEvent):void{
  60.             Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.REMOVE));
  61.         }
  62.  
  63.         private function onError(event:FaultEvent):void{
  64.             Alert.show(event.fault.message,"ERROR");
  65.         }
  66.  
  67.  
  68.  
  69.  
  70.     }
  71. }

Vamos a algumas explicações:

AbastractController -> uma classe que faz parte do Framework Swiz, ao estendermos esta classe além de ter a mesma funcionalidade que ganhamos no caso do Delegate podemos usar um método que facilita e muito a forma de tratar as funções, o método executeServiceCall.

executeServiceCall - > recebe como parâmetro um método, o nossa função que vai receber o retorno em caso de sucesso e a nossa função que vai receber o retorno no caso de algum erro.

Na linha abaixo adicionamos uma escuta para nosso bean criado no Bean.mxml chamado de estadoDelegate que mapea e instancia a nossa classe já criada e explicada EstadoDelegate.

ACTIONSCRIPT:
  1. [Autowire(bean="estadoDelegate")]
  2. public var estadoDelegate:EstadoDelegate;



//*************** Handle Results ************************//


Desta linha para baixo estão todas as nossas funções que trata o retorno que vem do nosso Delegate, pode perceber no caso onSave e OnRemove eu disparo o Nosso Evento Criado no ínicio deste artigo pelo framework Swiz e não pelo dispatchEvent do SDK padrão do Flex(Flash), esse disparo de Evento é necessário para que a view saiba que ocorreu tudo certo e mude o seu “status” atual.

OK, na próxima parte vamos mostrar a View feita em Flex, a view que vai ser responsável por “consumir”(se comunicar) com o nosso Controller.

Espero o feedback de vocês galera, se está bom, ruim, péssimo. Podem ficar a vontade para comentar no blog e se gostarem divulgar, o intuito é ajudar quem quer usar um MVC no Flex, espero está ajudando alguém ;)

Vlw e até a próx.

Popularity: 36% [?]