Um exemplo genérico... e alguma explicação abaixo...

ARQUIVO: /model/ExemploModel.as
package model{
 import com.adobe.cairngorm.model.IModelLocator;
 import mx.collections.ArrayCollection;
 import vo.ProjetoVO;
 [Bindable]
public class ExemploModel implements IModelLocator{
 // Singleton structure ============================================
private static var instance:ExemploModel;
 public function ExemploModel(enforcer:Enforcer){
if(enforcer == null){
 throw new Error("Singleton. Please use getInstance()");
}
 }
public static function getInstance():ExemploModel{
if(instance == null){
 instance = new ExemploModel(new Enforcer);
}
return instance;
 }
// Singleton structure ============================================
 public var vo:ProjetoVO;
                public var projetos:ArrayCollection;

}
 }
class Enforcer{}

ARQUIVO: /vo/ProjetoVO.as

package vo {

import com.adobe.cairngorm.vo.IValueObject;
 [RemoteClass(alias="cfc.vo.ProjetoVO")] //uso coldfusion/LiveCycle
 [Bindable]
public class ProjetoVO implements IValueObject {

public var prop:String;
                //outras propriedades que descrevem o objeto de valor

}

}

ARQUIVO: /view/DataGridForm.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox
 xmlns:mx="http://www.adobe.com/2006/mxml";
 creationComplete="{init()}"
>

 <mx:Script>
<![CDATA[

                     import model.ExemploModel;

                     [Bindable] private var exemploModel:ExemploModel;

                     private function init():void{
                        exemploModel = ExemploModel.getInstance();
                     }

]]>
</mx:Script>

   <mx:DataGrid id="dgProjetos" dataProvider="{exemploModel.projetos}"
selectedItem="{exemploModel.projeto}" change="{exemploModel.projeto =
lsProjetos.selectedItem as ProjetoVO}">
      <!-- Colums -->
   </mx:DataGrid>

</mx:VBox>

ARQUIVO: /view/Form.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox
 xmlns:mx="http://www.adobe.com/2006/mxml";
 creationComplete="{init()}"
 >

<mx:Script>
<![CDATA[

                     import model.ExemploModel;

                     [Bindable] private var exemploModel:ExemploModel;

                     private function init():void{
                        exemploModel = ExemploModel.getInstance();
                     }

]]>
</mx:Script>

   <mx:List id="lsProjetos" dataProvider="{exemploModel.projetos}"
selectedItem="{exemploModel.projeto}" label="prop"
change="{exemploModel.projeto = lsProjetos.selectedItem as ProjetoVO}"/>

   <mx:TextInput text="{exemploModel.projeto.prop}"/>

</mx:VBox>

O conceito está ai... desculpe se houver alguns erros de sintaxe... digitei
aqui mesmo no email. Mas dá pra perceber a estrutura. O "ExemploModel"
possui as propriedades: "projetos:ArrayCollection" (ao qual você vai colocar
os dados que você quer listar no DataGrid por exemplo) e "projeto:ProjetoVO"
(a qual vamos fazer o 'bind' nos controles que podem apresentar o dado
selecionado).

OBS: Eu uso Cairngorm em meus projetos, mas veja que essa aí é uma parte do
Cairngorm que você poderia facilmente adotar sem precisar consumir o
framework. Por exemplo, a depender do seu projeto, no exemplo acima não
faria o menor sentido (ou seja, nao teria nenhuma funcionalidade)
implementar o IModelLocator e/ou o IValueObject. Essas interfaces são apenas
"marcadoras" (no Cairngorm 2.2.1). O IModelLocator para mim só fez sentidos
em projetos com Modules e o IValueObjet só apresentou "funcionalidade"
quando trabalhei o FlashRemoting,LiveCycle ou BlazeDS, mas acredito que
também faça sentido com AMFPHP pela natureza da funcionalidade de "traduzir"
objetos ServerSide/ClientSide do AMF.

IMPORTANTE: Para o código acima funcionar, é necessário que você faça suas
implementações nele... eu só tentei responder a sua questão com os trechos
mais importantes. Espero que ajude esclarecer.

Qualquer coisa, mande ai suas dúvidas! O que eu souber, e tiver tempo,
ajudo. Mas certamente tem bastante gente aqui pra te ajudar.


-- 
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 71 9212-0909 / 8120-0035
MSN: [EMAIL PROTECTED] / Twitter: macieljr
http://teclandoalto.blogspot.com




2008/10/19 Flávio Tomazio <[EMAIL PROTECTED]>

>
> Como eu faria isso usando o Model Locator do Cairngorm?
> >

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a