You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/03/13 15:21:13 UTC
[2/4] git commit: WICKET-5531 Create new placeholder tag to indicate
where header contributions should appear
WICKET-5531 Create new placeholder tag to indicate where header contributions should appear
Add containers for <wicket:head> to the HtmlHeader(Items)Container in the page
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c31f30f6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c31f30f6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c31f30f6
Branch: refs/heads/wicket-6.x
Commit: c31f30f6914b5d9bd146864015d5aebe16cd681c
Parents: 685f04c
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Mar 13 15:38:07 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Mar 13 15:38:07 2014 +0200
----------------------------------------------------------------------
.../markup/resolver/HtmlHeaderResolver.java | 59 +++++++++++++++-----
1 file changed, 46 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/c31f30f6/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
index 8ebe0ce..f5ab571 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
@@ -31,6 +31,8 @@ import org.apache.wicket.markup.html.internal.HtmlHeaderItemsContainer;
import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.visit.IVisit;
+import org.apache.wicket.util.visit.IVisitor;
/**
* This is a tag resolver which handles <head> and <wicket:head>tags. It must be
@@ -59,7 +61,7 @@ public class HtmlHeaderResolver implements IComponentResolver
{
final Page page = container.getPage();
- // Only <head> component tags have the id == "_header"
+ // <head> or <wicket:header-items/> component tags have the id == "_header_"
if (tag.getId().equals(HtmlHeaderSectionHandler.HEADER_ID))
{
// Create a special header component which will gather additional
@@ -74,22 +76,39 @@ public class HtmlHeaderResolver implements IComponentResolver
// head first.
if (container instanceof WebPage)
{
- // Create a special header component which will gather
- // additional input the <head> from 'contributors'.
- MarkupContainer header = newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
- page.getAutoIndex(), tag);
+ HtmlHeaderContainer header = container.visitChildren(new IVisitor<Component, HtmlHeaderContainer>()
+ {
+ @Override
+ public void component(final Component component, final IVisit<HtmlHeaderContainer> visit)
+ {
+ if (component instanceof HtmlHeaderContainer)
+ {
+ visit.stop((HtmlHeaderContainer) component);
+ } else if (component instanceof TransparentWebMarkupContainer == false)
+ {
+ visit.dontGoDeeper();
+ }
+ }
+ });
// It is <wicket:head>. Because they do not provide any
// additional functionality they are merely a means of surrounding relevant
// markup. Thus we simply create a WebMarkupContainer to handle
// the tag.
- WebMarkupContainer header2 = new TransparentWebMarkupContainer(
- HtmlHeaderSectionHandler.HEADER_ID);
+ WebMarkupContainer wicketHeadContainer = new WicketHeadContainer();
- header2.setRenderBodyOnly(true);
- header.add(header2);
+ if (header == null)
+ {
+ // Create a special header component which will gather
+ // additional input the <head> from 'contributors'.
+ header = newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
+ page.getAutoIndex(), tag);
+ header.add(wicketHeadContainer);
+ return header;
+ }
- return header;
+ header.add(wicketHeadContainer);
+ return wicketHeadContainer;
}
else if (container instanceof HtmlHeaderContainer)
{
@@ -97,9 +116,7 @@ public class HtmlHeaderResolver implements IComponentResolver
// additional functionality there are merely a means of surrounding
// relevant markup. Thus we simply create a WebMarkupContainer to handle
// the tag.
- WebMarkupContainer header = new TransparentWebMarkupContainer(
- HtmlHeaderSectionHandler.HEADER_ID);
- header.setRenderBodyOnly(true);
+ WebMarkupContainer header = new WicketHeadContainer();
return header;
}
@@ -150,4 +167,20 @@ public class HtmlHeaderResolver implements IComponentResolver
}
return htmlHeaderContainer;
}
+
+ /**
+ * A component for <wicket:head> elements
+ */
+ private static class WicketHeadContainer extends TransparentWebMarkupContainer
+ {
+ /**
+ * Constructor.
+ */
+ public WicketHeadContainer()
+ {
+ super(HtmlHeaderSectionHandler.HEADER_ID);
+
+ setRenderBodyOnly(true);
+ }
+ }
}