You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/06/12 23:43:35 UTC
svn commit: r546639 -
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Author: knopp
Date: Tue Jun 12 14:43:27 2007
New Revision: 546639
URL: http://svn.apache.org/viewvc?view=rev&rev=546639
Log:
Fix for header contribution of TreeItems
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?view=diff&rev=546639&r1=546638&r2=546639
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Tue Jun 12 14:43:27 2007
@@ -36,6 +36,7 @@
import org.apache.wicket.behavior.HeaderContributor;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.html.resources.JavascriptResourceReference;
import org.apache.wicket.model.IDetachable;
@@ -176,7 +177,7 @@
{
return getFlag(FLAG_RENDER_CHILDREN);
}
-
+
/**
* @see org.apache.wicket.MarkupContainer#onRender(org.apache.wicket.markup.MarkupStream)
*/
@@ -207,30 +208,70 @@
{
public void visitItem(TreeItem item)
{
- try
- {
- item.beforeRender();
- // rewind markupStream
- markupStream.setCurrentIndex(index);
- // render child
- item.onRender(markupStream);
- }
- finally
- {
- item.afterRender();
- }
- }
+ // rewind markupStream
+ markupStream.setCurrentIndex(index);
+ // render child
+ item.onRender(markupStream);
+ }
});
- // children are rendered, clear the flag
- setRenderChildren(false);
+ //
}
}
}
+
+ public void renderHead(final HtmlHeaderContainer container)
+ {
+ super.renderHead(container);
+
+ if (isRenderChildren())
+ {
+ // visit every child
+ visitItemChildren(this, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ // write header contributions from the children of item
+ item.visitChildren(new Component.IVisitor()
+ {
+ public Object component(Component component)
+ {
+ if (component.isVisible())
+ {
+ component.renderHead(container);
+ return CONTINUE_TRAVERSAL;
+ }
+ else
+ {
+ return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
+ }
+ }
+ });
+ }
+ });
+ }
+ }
protected final void setRenderChildren(boolean value)
{
setFlag(FLAG_RENDER_CHILDREN, value);
}
+
+ protected void onAttach()
+ {
+ super.onAttach();
+
+ if (isRenderChildren())
+ {
+ // visit every child
+ visitItemChildren(this, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ item.attach();
+ }
+ });
+ }
+ }
protected void onDetach()
{
@@ -240,12 +281,55 @@
{
((IDetachable)object).detach();
}
+
+ if (isRenderChildren())
+ {
+ // visit every child
+ visitItemChildren(this, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ item.detach();
+ }
+ });
+ }
+
+ //children are rendered, clear the flag
+ setRenderChildren(false);
}
protected void onBeforeRender()
{
AbstractTree.this.onBeforeRender();
super.onBeforeRender();
+
+ if (isRenderChildren())
+ {
+ // visit every child
+ visitItemChildren(this, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ item.beforeRender();
+ }
+ });
+ }
+ }
+
+ protected void onAfterRender()
+ {
+ super.onAfterRender();
+ if (isRenderChildren())
+ {
+ // visit every child
+ visitItemChildren(this, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ item.afterRender();
+ }
+ });
+ }
}
}