That's really weird. updateTree() should work in all supported browsers.

-Matej

On Mon, Mar 17, 2008 at 6:34 PM, jeredm <[EMAIL PROTECTED]> wrote:
>
>  One more note.  The updateTree() call did work in Firefox, but not in IE6 or
>  IE7.
>
>
>
>
>  Matej Knopp-2 wrote:
>  >
>  > Hi,
>  >
>  > you shouldn't do target.addComponent(tree). You shouldo only call
>  > tree.upateTree() (or tree.updateTree(target), should do the same
>  > thing). Also you could consider using DefaultTreeModel.insertNodeInto
>  > instead of parent.addNode, as it automatically fires the listener for
>  > you.
>  >
>  > Btw. I was thinking of some code I could actually run (so also the
>  > page with tree and the prebuit tree). Thus if this answer doesn't help
>  > your problem you can consider providing a quickstart project I can use
>  > to reproduce it.
>  >
>  > -Matej
>  >
>  > On Sat, Mar 15, 2008 at 12:57 AM, jeredm <[EMAIL PROTECTED]>
>  > wrote:
>  >>
>  >>  Here is the code that pops up a modal for the user to enter a new option
>  >> for
>  >>  a
>  >>  multiple choice question.  When the modal returns I add the object it
>  >> sends
>  >>  back to
>  >>  a node and then add the the node to the tree.  Finally, I refresh the
>  >> tree.
>  >>
>  >>  The BaseTreeNode is an extended DefaultMutableTreeNode. The
>  >>  model on my link tree is a set of BaseTreeNodes...so
>  >>  tree = new MWLinkTree("tree", new
>  >> DefaultTreeModel(rootBaseTreeNode)){...};
>  >>
>  >>  I don't know if this will be much more help.  Keep in mind that I had
>  >> 875
>  >>  nodes that were
>  >>  in an expanded state during the tests.  Thanks again for your help.
>  >>
>  >>
>  >>  MWAjaxSubmitLink newButton = new MWAjaxSubmitLink("newButton",
>  >> indicatorImg,
>  >>  feedback){
>  >>   private static final long serialVersionUID = 1L;
>  >>
>  >>   @Override
>  >>   protected void onSubmit(AjaxRequestTarget target, Form form) {
>  >>     ARGS.addParam("QuestionPk", option.getQuestionPk());
>  >>     modal.setContent(new
>  >> Exam_QuestionsNewOptionPanel(modal.getContentId(),
>  >>  ARGS));
>  >>
>  >>     modal.setWindowClosedCallback(new
>  >> MWModalWindow.WindowClosedCallback(){
>  >>       private static final long serialVersionUID = 1L;
>  >>
>  >>       public void onClose(AjaxRequestTarget target){
>  >>         QuestionOption newOption =
>  >>  (QuestionOption)ARGS.getParam("NewQuestionOption");
>  >>
>  >>         // Check to see if the action was canceled
>  >>         if(newOption != null){
>  >>           PageData passArgs = new PageData();
>  >>           passArgs.addParam("QuestionOption", newOption);
>  >>
>  >>           TreeNodeFactory factory = TreeNodeFactory.getObject();
>  >>           BaseTreeNode newNode = factory.buildReplaceNode(treePanel,
>  >>  StringUtil.truncateForList(newOption.getShortDesc(), 18),
>  >> "QuestionOption",
>  >>  newOption, passArgs, "Exam_QuestionsOptionPanel", "swapPanel",
>  >>  TreeNodeState.NONE);
>  >>
>  >>           // ADD NEW NODE HERE --------------------------------
>  >>           // the node is the selected node
>  >>           ((BaseTreeNode)node.getParent()).add(newNode);
>  >>
>  >>           // REFRESH THE TREE HERE -----------------------------
>  >>
>  >>           DefaultTreeModel model =
>  >> (DefaultTreeModel)tree.getModelObject();
>  >>           int[] changes = new
>  >>  int[]{model.getIndexOfChild(newNode.getParent(), newNode)};
>  >>           model.nodesWereInserted((TreeNode)newNode.getParent(),
>  >> changes);
>  >>
>  >>           target.addComponent(tree);
>  >>         }
>  >>       }
>  >>     });
>  >>
>  >>     modal.show(target);
>  >>
>  >>
>  >> target.appendJavascript("document.getElementById('answerDesc').select()");
>  >>     target.addComponent(this.feedback);
>  >>   }
>  >>  };
>  >>  form.add(newButton);
>  >>
>  >>
>  >>
>  >>  Matej Knopp-2 wrote:
>  >>  >
>  >>  > Sorry, I meant the updateTree method. Anyway, 23 seconds seems quite a
>  >>  > lot to me. Any chance you could submit a stripped down example I can
>  >>  > take a look at?
>  >>  >
>  >>  > -Matej
>  >>  >
>  >>  > On Fri, Mar 14, 2008 at 6:01 PM, jeredm <[EMAIL PROTECTED]>
>  >>  > wrote:
>  >>  >>
>  >>  >>  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]
>  >>  >>
>  >>  >>
>  >>  >
>  >>  >
>  >>  >
>  >>  > --
>  >>  > 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-tp16041813p16062572.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-tp16041813p16097052.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]

Reply via email to