Thats exactly what I am looking for, a way to access public variables from
within the custom item renederer.

Thank You
Dan Vega
[email protected]
http://www.danvega.org


On Fri, Jan 9, 2009 at 5:27 PM, Tracy Spratt <[email protected]> wrote:

>    I am not exactly sure what you are trying to do.  Are you trying to
> test the data Item to see if it is the root node of the tree?
>
>
>
> What is the dataProvider?  If it is xml, you could test for parent() ==
> null.
>
>
>
> If it is nested collections then your connections would need to exponse a
> parent poperty.
>
>
>
> Of course, within an itemRender instance, as with any instance you can
> access public members through the dom properties, like parentDocument, and
> Application.application
>
>
>
> Tracy Spratt
> Lariat Services
>
> Flex development bandwidth available
>   ------------------------------
>
> *From:* [email protected] [mailto:[email protected]] *On
> Behalf Of *Dan Vega
> *Sent:* Friday, January 09, 2009 3:50 PM
> *To:* [email protected]
> *Subject:* [flexcoders] Custom Tree Item Renderer
>
>
>
> I have a custom tree item renderer that is working out great except one
> little small problem. In my item renderer I have some actions for adding /
> removing / renaming directories. The only time I don't want the remove or
> rename context menu items is when its the home directory. I know that I can
> hack it and hard code it here because the data object is passed to each
> function.
>
> What I am trying to do though is going back to the main part of the
> applicaiton (or pass in) the baseDirectory so I can account for change. Has
> anyone got data in/or out of a renderer before? If it was just another class
> it would be easy to put in the constructor but there is no constructor when
> you add it to the tree.
>
> **** itemRenderer="com.rocketfm.CustomTreeItemRenderer"
>
> package com.rocketfm {
>
>     import flash.display.DisplayObject;
>     import flash.events.ContextMenuEvent;
>     import flash.ui.ContextMenu;
>     import flash.ui.ContextMenuItem;
>
>     import mx.collections.*;
>     import mx.controls.treeClasses.*;
>     import mx.core.Application;
>     import mx.managers.PopUpManager;
>
>     import views.AddDirectory;
>     import views.DeleteDirectory;
>     import views.RenameDirectory;
>
>     public class CustomTreeItemRenderer extends TreeItemRenderer {
>
>         private var renameWin:RenameDirectory;
>         private var addWin:AddDirectory;
>         private var delWin:DeleteDirectory;
>
>         public function CustomTreeItemRenderer(basePath) {
>             super();
>
>             var menu:ContextMenu = new ContextMenu();
>             var add:ContextMenuItem = new ContextMenuItem("Add Folder");
>             var remove:ContextMenuItem = new ContextMenuItem("Remove
> Folder");
>             var rename:ContextMenuItem = new ContextMenuItem("Rename
> Folder");
>             var download:ContextMenuItem = new ContextMenuItem("Download
> All");
>
>
> add.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,addDirectory);
>
> remove.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,removeDirectory);
>
> rename.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,renameDirectory);
>
>
>             menu.hideBuiltInItems();
>             menu.customItems.push(add);
>             menu.customItems.push(remove);
>             menu.customItems.push(rename);
>
>             this.contextMenu = menu;
>         }
>
>         private function addDirectory(event:ContextMenuEvent):void {
>             addWin = new AddDirectory();
>             addWin.dirPath = data.path;
>             addWin.parentPath = data.parent;
>             addWin.item = data;
>             // add window
>
> PopUpManager.addPopUp(addWin,DisplayObject(Application.application),true);
>         }
>
>         private function removeDirectory(event:ContextMenuEvent):void {
>             delWin = new DeleteDirectory();
>             delWin.item = data;
>             // delete window
>
> PopUpManager.addPopUp(delWin,DisplayObject(Application.application),true);
>         }
>
>         private function renameDirectory(event:ContextMenuEvent):void {
>             renameWin = new RenameDirectory();
>             renameWin.item = data;
>             renameWin.oldDirectoryName = data.name;
>             renameWin.parentPath = data.parent;
>             // rename window
>
> PopUpManager.addPopUp(renameWin,DisplayObject(Application.application),true);
>         }
>     }
> }
>
>
> Thank You
> Dan Vega
> [email protected]
> http://www.danvega.org
>
>  
>

Reply via email to