I added the following code and it correctly refreshed the node:

DefaultTreeModel model = (DefaultTreeModel)tree.getModelObject();
int[] changes = new int[]{model.getIndexOfChild(parentNode, newNode)};
model.nodesWereInserted((TreeNode)parentNode, changes);

The time difference seemed close to invalidateAll().  invalidateAll() took
about 24 seconds while the new method took 23 seconds.  It is likely that
they are the same speed as I was counting in my head and only ran the test
once.  The test was with 875 nodes open in the tree...so that is about 1
second for every 35 nodes.  I think a typical user will have about 90 nodes
in the tree at the most and 30 on average, so between 2.5 and 1 second(s) to
wait for the node to display after clicking save.  The speed I am seeing may
just be the time it takes to render in the browser.  If that is the case,
then I am fine with it.  I just want to make sure I am correctly updating
the tree and not making it work harder than it needs to.

I also tried tree.updateTree() after I added the node and found that it did
not solve the refresh problem.  When you said call update() on the model
what function should I be calling (I don't see update in the API)?

Thanks for your help!


Matej Knopp-2 wrote:
> 
> Make sure your tree model fires the appropriate events when your tree
> is modified. The Tree implementation should properly update the
> changed portions of tree (assuming you call the update() method).
> 
> -Matej
> 
> On Fri, Mar 14, 2008 at 1:27 AM, jeredm <[EMAIL PROTECTED]>
> wrote:
>>
>>  I have a LinkTree where am adding new nodes via AJAX where the node is
>> not
>>  visually refreshing until I call myLinkTree.invalidateAll();.  The
>> problem
>>  is that the tree refresh takes too long when I have a bunch of nodes
>>  displayed.  AbstractTree.invalidateAll() appears to "redraw" the whole
>> tree,
>>  but I only need to "redraw" the single node (I may be wrong on this and
>> it
>>  may be working exactly as I need it to, but it is slow).
>>
>>  My basic setup is a tree on the left that dynamically swaps out panels
>> via
>>  AJAX on the right based on the node selected.  The tree itself only
>> starts
>>  with the root and first children.  All first children load their child
>> nodes
>>  via an AJAX call on expand.  These nodes will correctly refresh as the
>> nodes
>>  are added and then the parent is expanded.  I cannot collapse and
>> re-expand
>>  the parent node in this case as expanding a node would cause the tree to
>>  close nodes the user has already opened.  What I need is to be able to
>>  insert a node like so...
>>
>>  - My Root
>>   |--First Child
>>       |-- First Grandchild
>>       |-- NEW NODE
>>       |-- Last Grandchild
>>
>>  I need the First Grandchild and Last Grandchild to already be expanded
>> and
>>  displaying before I add NEW NODE.
>>
>>  --
>>  View this message in context:
>> http://www.nabble.com/LinkTree-Node-Refresh-tp16041813p16041813.html
>>  Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>>  ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>>  For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> 
> 
> -- 
> Resizable and reorderable grid components.
> http://www.inmethod.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/LinkTree-Node-Refresh-tp16041813p16048613.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to