Not sure where to go with this next.
The following kinda works...the Tree listens for Event.ADDED_TO_STAGE then go
thru:
var _opened:Array = (m_tree.openItems as Array).concat([]);
tree.openItems = [];
callLater(reOpenItems, [_opened]);
...then in reOpenItems just:
m_tree.openItems = _opened;
..the above works as long as the Tree is kept with the branches in their
initial open/closed state. So the first time the Tree is shown a certain set of
initial branches are opened...the user dismisses the Tree...I remove it from
the display....the user asks for the Tree view again...I readd the Tree & the
above code runs & everything is ok as all its open like it was initially.
But if the user requests the Tree...closes a branch (or branches)...dismisses
the Tree..then later requests the Tree..I get an exception:
TypeError: Error #1010: A term is undefined and has no properties.
at
mx.controls::List/createItemRenderer()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\List.as:1796]
at
mx.controls::List/http://www.adobe.com/2006/flex/mx/internal::getMeasuringRenderer()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\List.as:1734]
at
mx.controls::List/commitProperties()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\List.as:764]
at
mx.controls::Tree/commitProperties()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\Tree.as:1028]
at
mx.core::UIComponent/validateProperties()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5670]
...the line \framework\src\mx\controls\List.as:1796 sez:
delete freeItemRenderersByFactory[factory][renderer];
and there really isnt a value for freeItemRenderersByFactory[factory] . The
var freeItemRenderersByFactory does contain a single element Dictionary but the
debugger wont reveal what its contents are.
What can cause this condition?
- Ivo
----- Original Message ----
From: ivo <[EMAIL PROTECTED]>
To: [email protected]
Sent: Wednesday, March 5, 2008 11:47:01 AM
Subject: [flexcoders] How to maintain a Tree opened/close state after
removed/added to stage?
Hello all,
There is a behavior that is not apparent when building against Flex 3 beta 3
but shows up of Flex 3 release.
I have a Tree that is added/removed from the stage at various times. In Beta 3
if I remove it from the display list & add it back at a later time the tree is
with the branches opened/closed as they were when it was removed.
In the Flex Release the Tree always has all the branches closed once it is
added to the stage. Looking at the Tree properties shows Tree.openItems does
have a correct list of open branches. Iterating over this list to to open them,
or close then open, or saving this list when removedFromStage and setting it
again on addedToStage, or invalidating the display list does not do anything.
My next shot is simulating mouse clicks on the renderers travelling from the
outermost branches inward but this feels like overkill.
Any suggestions on how to trigger the display so it matched the internal
open/closed state?
Thanks,
- Ivo
<!--
#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#0000ff;text-decoration:none;}
-->
<!--
#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
-->
<!--
#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean,
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}
#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}
#ygrp-vital a:hover{
text-decoration:underline;}
#ygrp-sponsor #hd{
color:#999;font-size:77%;}
#ygrp-sponsor #ov{
padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;margin:0;}
#ygrp-sponsor #ov li{
list-style-type:square;padding:6px 0;font-size:77%;}
#ygrp-sponsor #ov li a{
text-decoration:none;font-size:130%;}
#ygrp-sponsor #nc{
background-color:#eee;margin-bottom:20px;padding:0 8px;}
#ygrp-sponsor .ad{
padding:8px 0;}
#ygrp-sponsor .ad #hd1{
font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
#ygrp-sponsor .ad a{
text-decoration:none;}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;}
#ygrp-sponsor .ad p{
margin:0;}
o{font-size:0;}
.MsoNormal{
margin:0 0 0 0;}
#ygrp-text tt{
font-size:120%;}
blockquote{margin:0 0 0 4px;}
.replbq{margin:4;}
-->