You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Sebastiaan van Erk <se...@sebster.com> on 2008/02/22 18:57:41 UTC

Wicket LinkTree subtree collapse/expand

Hi,

I'm trying to have a wicket LinkTree collapse and expand subtrees when I 
click on the respective nodes. I have the following code:

		tree = new LinkTree("tree", createTreeModel()) {
			@Override
			protected void onNodeLinkClicked(final TreeNode node, final BaseTree 
tree, final AjaxRequestTarget target) {
				if (!node.isLeaf()) {
					if (tree.getTreeState().isNodeExpanded(node)) {
						collapseAll(node);
					} else {
						expandAll(node);
					}
					tree.updateTree(target);
				} else {
					System.out.println(Arrays.toString(((DefaultMutableTreeNode) 
node).getUserObjectPath()));
				}
			}
		};


with the methods expandAll/collapseAll as follows:

	protected void collapseAll(final TreeNode treeNode) {
		tree.getTreeState().collapseNode(treeNode);
		for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
			collapseAll((TreeNode) e.nextElement());
		}
	}

	protected void expandAll(final TreeNode treeNode) {
		tree.getTreeState().expandNode(treeNode);
		for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
			expandAll((TreeNode) e.nextElement());
		}
	}

However, I keep getting the following errors (specifically, this happens 
when I collapse a subtree first, and then collapse a subtree of which 
the other subtree is a sibling):

java.lang.IllegalStateException: No Page found for component 
[MarkupContainer [Component id = 200, page = <No Page>, path = 
200.AbstractTree$TreeItem]]
      at org.apache.wicket.Component.getPage(Component.java:1639)
      at 
org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:689)
      at 
org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:605)
      at 
org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:520)
      at 
org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:103)
      at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
      at org.apache.wicket.RequestCycle.step(RequestCycle.java:1241)
      at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1316)
      at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
      at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
      at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
      at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
      at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
      at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:595)

Does anybody have any ideas what I'm doing wrong and what the correct 
way to implement this is?

Regards,
Sebastiaan

Re: Wicket LinkTree subtree collapse/expand

Posted by Matej Knopp <ma...@gmail.com>.
Hi, I will certainly look at this once i have some spare time.

-Matej

On Sat, Feb 23, 2008 at 2:09 PM, Kent Tong <ke...@cpttm.org.mo> wrote:
>
>
>  Sebastiaan van Erk wrote:
>  >
>  > Ok, thanks for the quick reply. :-)
>  >
>  > https://issues.apache.org/jira/browse/WICKET-1366
>  >
>
>  I've added some comments to it. For a workaround, try:
>
>  tree = new LinkTree("t", model) {
>         protected Component newNodeComponent(String id, IModel model) {
>                 return new LinkIconPanel(id, model, this) {
>                         protected void onNodeLinkClicked(TreeNode node,
>                                         BaseTree tree, AjaxRequestTarget target) {
>                                 tree.getTreeState().selectNode(node,
>                                                 !tree.getTreeState().isNodeSelected(node));
>                                 onClicked(node, tree, target);
>                         }
>                         protected Component newContentComponent(String componentId,
>                                         BaseTree tree, IModel model) {
>                                 return new Label(componentId, getNodeTextModel(model));
>                         }
>                 };
>         }
>
>         protected void onClicked(TreeNode node, BaseTree tree,
>
>                         AjaxRequestTarget target) {
>                 if (!node.isLeaf()) {
>                         if (tree.getTreeState().isNodeExpanded(node)) {
>                                 collapseAll(node);
>                         } else {
>                                 expandAll(node);
>                         }
>                         tree.updateTree(target);
>                 } else {
>                         System.out.println(Arrays
>                                         .toString(((DefaultMutableTreeNode) node)
>                                                         .getUserObjectPath()));
>                 }
>         }
>  };
>
>
>
>  -----
>  --
>  Kent Tong
>  Wicket tutorials freely available at http://www.agileskills2.org/EWDW
>  Axis2 tutorials freely available at http://www.agileskills2.org/DWSAA
>  --
>  View this message in context: http://www.nabble.com/Wicket-LinkTree-subtree-collapse-expand-tp15639680p15651849.html
>  Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>  For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
Resizable and reorderable grid components.
http://www.inmethod.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Wicket LinkTree subtree collapse/expand

Posted by Kent Tong <ke...@cpttm.org.mo>.

Sebastiaan van Erk wrote:
> 
> Ok, thanks for the quick reply. :-)
> 
> https://issues.apache.org/jira/browse/WICKET-1366
> 

I've added some comments to it. For a workaround, try:

tree = new LinkTree("t", model) {
	protected Component newNodeComponent(String id, IModel model) {
		return new LinkIconPanel(id, model, this) {
			protected void onNodeLinkClicked(TreeNode node,
					BaseTree tree, AjaxRequestTarget target) {
				tree.getTreeState().selectNode(node,
						!tree.getTreeState().isNodeSelected(node));
				onClicked(node, tree, target);
			}
			protected Component newContentComponent(String componentId,
					BaseTree tree, IModel model) {
				return new Label(componentId, getNodeTextModel(model));
			}
		};
	}

	protected void onClicked(TreeNode node, BaseTree tree,
			AjaxRequestTarget target) {
		if (!node.isLeaf()) {
			if (tree.getTreeState().isNodeExpanded(node)) {
				collapseAll(node);
			} else {
				expandAll(node);
			}
			tree.updateTree(target);
		} else {
			System.out.println(Arrays
					.toString(((DefaultMutableTreeNode) node)
							.getUserObjectPath()));
		}
	}
};



-----
--
Kent Tong
Wicket tutorials freely available at http://www.agileskills2.org/EWDW
Axis2 tutorials freely available at http://www.agileskills2.org/DWSAA
-- 
View this message in context: http://www.nabble.com/Wicket-LinkTree-subtree-collapse-expand-tp15639680p15651849.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Wicket LinkTree subtree collapse/expand

Posted by Sebastiaan van Erk <se...@sebster.com>.
Ok, thanks for the quick reply. :-)

https://issues.apache.org/jira/browse/WICKET-1366

Regards,
Sebastiaan

Igor Vaynberg wrote:
> looks like a bug in the tree, please file a jira issue
> 
> -igor
> 
> 
> On Fri, Feb 22, 2008 at 9:57 AM, Sebastiaan van Erk <se...@sebster.com> wrote:
>> Hi,
>>
>>  I'm trying to have a wicket LinkTree collapse and expand subtrees when I
>>  click on the respective nodes. I have the following code:
>>
>>                 tree = new LinkTree("tree", createTreeModel()) {
>>                         @Override
>>                         protected void onNodeLinkClicked(final TreeNode node, final BaseTree
>>  tree, final AjaxRequestTarget target) {
>>                                 if (!node.isLeaf()) {
>>                                         if (tree.getTreeState().isNodeExpanded(node)) {
>>                                                 collapseAll(node);
>>                                         } else {
>>                                                 expandAll(node);
>>                                         }
>>                                         tree.updateTree(target);
>>                                 } else {
>>                                         System.out.println(Arrays.toString(((DefaultMutableTreeNode)
>>  node).getUserObjectPath()));
>>                                 }
>>                         }
>>                 };
>>
>>
>>  with the methods expandAll/collapseAll as follows:
>>
>>         protected void collapseAll(final TreeNode treeNode) {
>>                 tree.getTreeState().collapseNode(treeNode);
>>                 for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
>>                         collapseAll((TreeNode) e.nextElement());
>>                 }
>>         }
>>
>>         protected void expandAll(final TreeNode treeNode) {
>>                 tree.getTreeState().expandNode(treeNode);
>>                 for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
>>                         expandAll((TreeNode) e.nextElement());
>>                 }
>>         }
>>
>>  However, I keep getting the following errors (specifically, this happens
>>  when I collapse a subtree first, and then collapse a subtree of which
>>  the other subtree is a sibling):
>>
>>  java.lang.IllegalStateException: No Page found for component
>>  [MarkupContainer [Component id = 200, page = <No Page>, path =
>>  200.AbstractTree$TreeItem]]
>>       at org.apache.wicket.Component.getPage(Component.java:1639)
>>       at
>>  org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:689)
>>       at
>>  org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:605)
>>       at
>>  org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:520)
>>       at
>>  org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:103)
>>       at
>>  org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
>>       at org.apache.wicket.RequestCycle.step(RequestCycle.java:1241)
>>       at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1316)
>>       at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
>>       at
>>  org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
>>       at
>>  org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
>>       at
>>  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>       at
>>  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>       at
>>  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>       at
>>  org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>>       at
>>  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>       at
>>  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>       at
>>  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>       at
>>  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>       at
>>  org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>       at
>>  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>       at
>>  org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>       at java.lang.Thread.run(Thread.java:595)
>>
>>  Does anybody have any ideas what I'm doing wrong and what the correct
>>  way to implement this is?
>>
>>  Regards,
>>  Sebastiaan
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 

Re: Wicket LinkTree subtree collapse/expand

Posted by Igor Vaynberg <ig...@gmail.com>.
looks like a bug in the tree, please file a jira issue

-igor


On Fri, Feb 22, 2008 at 9:57 AM, Sebastiaan van Erk <se...@sebster.com> wrote:
> Hi,
>
>  I'm trying to have a wicket LinkTree collapse and expand subtrees when I
>  click on the respective nodes. I have the following code:
>
>                 tree = new LinkTree("tree", createTreeModel()) {
>                         @Override
>                         protected void onNodeLinkClicked(final TreeNode node, final BaseTree
>  tree, final AjaxRequestTarget target) {
>                                 if (!node.isLeaf()) {
>                                         if (tree.getTreeState().isNodeExpanded(node)) {
>                                                 collapseAll(node);
>                                         } else {
>                                                 expandAll(node);
>                                         }
>                                         tree.updateTree(target);
>                                 } else {
>                                         System.out.println(Arrays.toString(((DefaultMutableTreeNode)
>  node).getUserObjectPath()));
>                                 }
>                         }
>                 };
>
>
>  with the methods expandAll/collapseAll as follows:
>
>         protected void collapseAll(final TreeNode treeNode) {
>                 tree.getTreeState().collapseNode(treeNode);
>                 for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
>                         collapseAll((TreeNode) e.nextElement());
>                 }
>         }
>
>         protected void expandAll(final TreeNode treeNode) {
>                 tree.getTreeState().expandNode(treeNode);
>                 for (final Enumeration e = treeNode.children(); e.hasMoreElements();) {
>                         expandAll((TreeNode) e.nextElement());
>                 }
>         }
>
>  However, I keep getting the following errors (specifically, this happens
>  when I collapse a subtree first, and then collapse a subtree of which
>  the other subtree is a sibling):
>
>  java.lang.IllegalStateException: No Page found for component
>  [MarkupContainer [Component id = 200, page = <No Page>, path =
>  200.AbstractTree$TreeItem]]
>       at org.apache.wicket.Component.getPage(Component.java:1639)
>       at
>  org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:689)
>       at
>  org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:605)
>       at
>  org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:520)
>       at
>  org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:103)
>       at
>  org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
>       at org.apache.wicket.RequestCycle.step(RequestCycle.java:1241)
>       at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1316)
>       at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
>       at
>  org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
>       at
>  org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
>       at
>  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
>  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
>  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>       at
>  org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>       at
>  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>       at
>  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>       at
>  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>       at
>  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>       at
>  org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>       at
>  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>       at
>  org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>       at java.lang.Thread.run(Thread.java:595)
>
>  Does anybody have any ideas what I'm doing wrong and what the correct
>  way to implement this is?
>
>  Regards,
>  Sebastiaan
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org