Normalmente não faço isso, mas dá uma estudada aí:
private function inicializar(evt:FlexEvent):void{
/*
* Registros de classes
*/
registerClassAlias("Interfaces.Ajuda.FrmAjuda",FrmAjuda);
registerClassAlias("Interfaces.Faturamento.TabelasDePreco.RegraDescontoEscalonada.FrmRegraDescEsc",FrmRegraDescEsc);
registerClassAlias("Interfaces.Parametrizacao.Genericas.FrmCadGener",FrmCadGener);
registerClassAlias("Interfaces.Parametrizacao.Menus.FrmCadMenusSFA",FrmCadMenusSFA);
registerClassAlias("Interfaces.Parametrizacao.ParamEmailSmtp.FrmParamEmailSmtp",FrmParamEmailSmtp);
registerClassAlias("Interfaces.Faturamento.TabelasDePreco.ParametrizacaoRotaTabela.FrmParamRotaTabela",FrmParamRotaTabela);
_menuTree.addEventListener(ListEvent.ITEM_CLICK, handlerSelectTree);
IntMenusSFA.getMenusSFA(parentApplication.idModulo, 0
,rstSucGetMenus
,function(evt:FaultEvent):void{
Funcoes.faultEvent("Falha ao requisitar menus sistema.", evt);
}
);
}
private function rstSucGetMenus(evt:ResultEvent):void{
if (evt.result != null){
/*
* RECEBE OS MENUS
*/
menus = new ArrayCollection();
menus = ArrayCollection(evt.result);
/*
* MONTA MENU TREE
*/
for(var j:uint=0; j<evt.result.length;j++){
if(evt.result[j].children != null){
montarMenuTree(j);
return;
}
}
}
}
private function montarMenuTree(index:uint):void{
/*
* MONTA O TREE CONFORME ÍNDICE
*/
acChildrens = new ArrayCollection();
acChildrens = ArrayCollection(menus[index].children);
var obj: Object = new Object();
obj.label = menus[index].label;
obj.type = "Normal";
obj.id = 466;
obj.children = acChildrens;
acMenusPai = new ArrayCollection();
acMenusPai.addItem(obj);
_menuTree.dataProvider = acMenusPai;
callLater(expandFirstNode);
_menuTree.width = 263;//reseta o tamanho do menu tree
/*
* FUNÇÃO RECURSIVA PARA SETAR OS ÍCONES NO TREE: VER COMO CONVERTER
BYTEARRAY PARA BITMAPDATA EM TEMPO DE EXECUÇÃO
*/
setarIconesRecursivo(ArrayCollection(_menuTree.dataProvider));
}
private function setarIconesRecursivo(dataProvider:ArrayCollection):void{
for(var i:uint=0; i<dataProvider.length;i++){
if(dataProvider[i].icone != null){
loaderCustomizado = new LoaderCustomizado();
//passo o parâmetro para o loader
loaderCustomizado.paramCustom = dataProvider[i];
loaderCustomizado.contentLoaderInfo.addEventListener(Event.COMPLETE,
getBitmapData);
loaderCustomizado.loadBytes(dataProvider[i].icone);
}
if(dataProvider[i].children != null){
setarIconesRecursivo(ArrayCollection(dataProvider[i].children));
//return;
}
}
}
private function getBitmapData(evt:Event):void{
//recupero a imagem e o parâmetro no evento
var conteudo:* = evt.target.content;
bitmapData = new BitmapData(conteudo.width,conteudo.height,true,0x00000000);
var matrix:Matrix = new Matrix();
bitmapData.draw(conteudo, matrix,null,null,null,true);
var icone:Class = RuntimeBitmapAsset.getClass(bitmapData);
_menuTree.setItemIcon(evt.target.loader.paramCustom, icone, null);
}
private function handlerSelectTree(evt:ListEvent):void{
/*
* VERIFICA SE É PASTA OU JANELA (PAI OU FILHO)
*/
var item:Object = Tree(evt.currentTarget).selectedItem;
if(_menuTree.dataDescriptor.isBranch(item)){
/*
* EXPANDE PASTA
*/
_menuTree.expandItem(item, !_menuTree.isItemOpen(item), true);
}
else{
/*
* ABRE JANELA, POPUP OU LINK CORRESPONDENTE
*/
if(evt.itemRenderer.data.popup == "link"){
var request:URLRequest = new URLRequest();
request.url = evt.itemRenderer.data.interfaces.toString();
navigateToURL(request,evt.itemRenderer.data.target.toString());
return;
}
if(evt.itemRenderer.data.interfaces == "" ||
evt.itemRenderer.data.interfaces == null){
Funcoes.mensagem("Interface não registrada ou não contida no renderer.
Aguarde atualizações.", "I", null);
return;
}
var ClassReference:Class =
getDefinitionByName(evt.itemRenderer.data.interfaces) as Class;
if(evt.itemRenderer.data.popup == "popup"){
var painel:UIComponent = new ClassReference();
PopUpManager.addPopUp(painel, parent, true);
PopUpManager.centerPopUp(painel);
}
else{
var janela:Object = new ClassReference();
MDIWindow(janela).left = 0;
MDIWindow(janela).top = 0;
MDIWindow(janela).resizable = true;
_cnvAreaTrabalho.windowManager.add(MDIWindow(janela));
}
}
}
private function expandFirstNode():void{
/*
* EXPANDE O PRIMEIRO NÓ (PASTA PAI: NOME DO MÓDULO)
*/
_menuTree.expandItem(_menuTree.dataProvider[0], true, true);
}
Em domingo, 16 de março de 2014 22h43min57s UTC-3, Robinho de Morais
escreveu:
>
> Pessoal me dá uma ajuda para eu popular um tree de acordo com os acessos
> do usuário logado...
>
> eu populei um tree manualmente assim :
>
> var obj1:Object = {name:'Administração',children:[{name:'Cadastro de
> Usuários', data:'telas.adm.cadUsuarios', icon:icCad},
> {name:'Cadastro de Empresas', data:'telas.inn.cadEmpresas', icon:icCad} ]};
> var obj2:Object = {name:'Sistema', children:[{name:'Cadastro de Telas'}]};
> var tree:ArrayCollection = new ArrayCollection([obj1, obj2]);
>
>
> treeMenu.dataprovider = tree;
>
> dessa maneira o meu tree ficou assim :
>
>
> <https://lh4.googleusercontent.com/-Am-JFChYd8k/UyZSpX_ISfI/AAAAAAAAE90/5nS4wp3bkPg/s1600/Sem+t%C3%ADtulo.png>
>
>
> Show de bola....agora criei os acessos dos usuários....e retornou ele em
> um result....
>
>
> mas não estou conseguindo criar o objeto do menu Administração e adicionar
> os filhos Cadastro de Usuários e empresas...aparece só [Object],[Object]
>
> Criei até um view para retornar os dados do banco somente com o campo name
> e data...mas não sei como incluir o filho...
>
>
> Um help por favor.....
>
>
--
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
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
---
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/d/optout.