You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2009/11/28 15:30:23 UTC
svn commit: r885097 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/ main/java/org/apache/wicket/markup/
main/java/org/apache/wicket/markup/html/
main/java/org/apache/wicket/markup/html/border/
main/java/org/apache/wicket/markup/html/form/ m...
Author: jdonnerstag
Date: Sat Nov 28 14:30:22 2009
New Revision: 885097
URL: http://svn.apache.org/viewvc?rev=885097&view=rev
Log:
cleanup IMarkupFragment API
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupFragment.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/Markup.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupFragment.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupStream.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPage_5.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Sat Nov 28 14:30:22 2009
@@ -394,10 +394,12 @@
* Flag that makes we are in before-render callback phase Set after component.onBeforeRender is
* invoked (right before invoking beforeRender on children)
*/
- private static final int FLAG_PREPARED_FOR_RENDER = 0x4000000;
private static final int FLAG_RENDERING = 0x2000000;
+ private static final int FLAG_PREPARED_FOR_RENDER = 0x4000000;
private static final int FLAG_AFTER_RENDERING = 0x8000000;
+ private static final int FLAG_MARKUP_ATTACHED = 0x10000000;
+
/**
* Flag that restricts visibility of a component when set to true. This is usually used when a
* component wants to restrict visibility of another component. Calling
@@ -718,6 +720,34 @@
}
/**
+ * Called when the component gets added to a parent
+ *
+ * @return false, if it was called the first time
+ */
+ final boolean internalOnMarkupAttached()
+ {
+ boolean rtn = getFlag(FLAG_MARKUP_ATTACHED);
+ if (rtn == false)
+ {
+ onMarkupAttached();
+ }
+ setFlag(FLAG_MARKUP_ATTACHED, true);
+ return rtn;
+ }
+
+ /**
+ * Can be subclassed by any user to implement init-like logic which requires the markup to be
+ * available
+ */
+ protected void onMarkupAttached()
+ {
+ if (log.isDebugEnabled())
+ {
+ log.debug("Markup available " + toString());
+ }
+ }
+
+ /**
* Set the markup for the component. Note that the component's markup variable is transient and
* thus must only be used for one render cycle. E.g. auto-component are using it.
*
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java Sat Nov 28 14:30:22 2009
@@ -146,6 +146,33 @@
throw new IllegalArgumentException(exceptionMessage("A child with id '" +
child.getId() + "' already exists"));
}
+
+ // Check if the markup is available after the child has been added to the parent
+ try
+ {
+ if ((getParent() != null) && (child.getMarkup() != null))
+ {
+ child.internalOnMarkupAttached();
+
+ // Tell all children of "component" as well
+ if (child instanceof MarkupContainer)
+ {
+ MarkupContainer container = (MarkupContainer)child;
+ container.visitChildren(new IVisitor<Component>()
+ {
+ public Object component(final Component component)
+ {
+ return component.internalOnMarkupAttached()
+ ? CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER : CONTINUE_TRAVERSAL;
+ }
+ });
+ }
+ }
+ }
+ catch (WicketRuntimeException exception)
+ {
+ // ignore
+ }
}
return this;
}
@@ -439,7 +466,7 @@
}
// Find the child's markup
- markup = markup.find(child.getId(), 0);
+ markup = markup.find(child.getId());
if (markup != null)
{
return markup;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupFragment.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupFragment.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupFragment.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupFragment.java Sat Nov 28 14:30:22 2009
@@ -61,24 +61,9 @@
* The component path expression
* @param id
* The component's id to search for
- * @param startIndex
- * Index to start searching
* @return -1, if not found
*/
- int findComponentIndex(final String id, final int startIndex);
-
- /**
- * Find the markup element index of the component with 'path'
- *
- * @param path
- * The component path expression
- * @param id
- * The component's id to search for
- * @param startIndex
- * Index to start searching
- * @return -1, if not found
- */
- IMarkupFragment find(final String id, final int startIndex);
+ IMarkupFragment find(final String id);
/**
*
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/Markup.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/Markup.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/Markup.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/Markup.java Sat Nov 28 14:30:22 2009
@@ -151,10 +151,9 @@
}
/**
- * @see org.apache.wicket.markup.IMarkupFragment#findComponentIndex(java.lang.String,
- * java.lang.String, int)
+ * @see org.apache.wicket.markup.IMarkupFragment#find(java.lang.String)
*/
- public final int findComponentIndex(final String id, final int startIndex)
+ public final IMarkupFragment find(final String id)
{
if (Strings.isEmpty(id))
{
@@ -162,7 +161,7 @@
}
MarkupStream stream = new MarkupStream(this);
- stream.setCurrentIndex(Math.max(0, startIndex));
+ stream.setCurrentIndex(0);
while (stream.hasMore())
{
MarkupElement elem = stream.get();
@@ -173,7 +172,7 @@
{
if (tag.getId().equals(id))
{
- return stream.getCurrentIndex();
+ return stream.getMarkupFragment();
}
if (tag.isOpen() && !tag.hasNoCloseTag() && !(tag instanceof WicketTag) &&
!"head".equals(tag.getName()) && !tag.isAutoComponentTag())
@@ -186,21 +185,6 @@
stream.next();
}
- return -1;
- }
-
- /**
- *
- * @param that
- * @return true, if equal
- */
- public final IMarkupFragment find(final String id, final int startIndex)
- {
- int index = findComponentIndex(id, startIndex);
- if (index >= 0)
- {
- return new MarkupFragment(this, index);
- }
return null;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupFragment.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupFragment.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupFragment.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupFragment.java Sat Nov 28 14:30:22 2009
@@ -143,10 +143,9 @@
}
/**
- * @see org.apache.wicket.markup.IMarkupFragment#findComponentIndex(java.lang.String,
- * java.lang.String)
+ * @see org.apache.wicket.markup.IMarkupFragment#find(java.lang.String)
*/
- public final int findComponentIndex(final String id, final int startIndex)
+ public final IMarkupFragment find(final String id)
{
if (Strings.isEmpty(id))
{
@@ -154,7 +153,7 @@
}
MarkupStream stream = new MarkupStream(this);
- stream.setCurrentIndex(Math.max(1, startIndex));
+ stream.setCurrentIndex(1);
while (stream.hasMore())
{
MarkupElement elem = stream.get();
@@ -165,7 +164,7 @@
{
if (tag.getId().equals(id))
{
- return stream.getCurrentIndex();
+ return stream.getMarkupFragment();
}
if (tag.isOpen() && !tag.hasNoCloseTag() && !(tag instanceof WicketTag))
{
@@ -177,19 +176,6 @@
stream.next();
}
- return -1;
- }
-
- /**
- * @see org.apache.wicket.markup.IMarkupFragment#find(java.lang.String, java.lang.String, int)
- */
- public final IMarkupFragment find(final String id, final int startIndex)
- {
- int index = findComponentIndex(id, startIndex);
- if (index >= 0)
- {
- return new MarkupFragment(this, index);
- }
return null;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupStream.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupStream.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupStream.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupStream.java Sat Nov 28 14:30:22 2009
@@ -188,20 +188,6 @@
}
/**
- * Find the markup element index of the component with 'path'
- *
- * @param path
- * The component path expression
- * @param id
- * The component's id to search for
- * @return -1, if not found
- */
- public final int findComponentIndex(final String id)
- {
- return markup.findComponentIndex(id, 0);
- }
-
- /**
* @return The current markup element
*/
public MarkupElement get()
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java Sat Nov 28 14:30:22 2009
@@ -101,13 +101,13 @@
ComponentTag tag = iter.next();
if ((child != null) && "_header_".equals(tag.getId()))
{
- childMarkup = iter.getMarkupFragment().find(child.getId(), 0);
+ childMarkup = iter.getMarkupFragment().find(child.getId());
}
else if ((child != null) && "_head".equals(tag.getId()))
{
if (tag.getMarkupClass() == null)
{
- childMarkup = iter.getMarkupFragment().find(child.getId(), 0);
+ childMarkup = iter.getMarkupFragment().find(child.getId());
}
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java Sat Nov 28 14:30:22 2009
@@ -382,8 +382,8 @@
}
// Find <wicket:border>
- int i;
- for (i = 0; i < markup.size(); i++)
+ IMarkupFragment childMarkup = null;
+ for (int i = 0; i < markup.size(); i++)
{
MarkupElement elem = markup.get(i);
if (elem instanceof WicketTag)
@@ -391,6 +391,7 @@
WicketTag tag = (WicketTag)elem;
if (tag.isBorderTag())
{
+ childMarkup = new MarkupFragment(markup, i);
break;
}
}
@@ -399,16 +400,14 @@
// If child == null, return the markup fragment starting with the <wicket:border> tag
if (child == null)
{
- return new MarkupFragment(markup, i);
+ return childMarkup;
}
- IMarkupFragment childMarkup = null;
-
// Since we created the body component instance, identifying that we found it is easy.
if (child == body)
{
// Find the markup for the child component. Make sure you use the preset default value.
- childMarkup = markup.find(BODY_ID, i);
+ childMarkup = childMarkup.find(BODY_ID);
if (childMarkup != null)
{
return childMarkup;
@@ -416,7 +415,7 @@
}
// Find the markup for the child component
- childMarkup = markup.find(child.getId(), i);
+ childMarkup = childMarkup.find(child.getId());
if (childMarkup != null)
{
return childMarkup;
@@ -532,7 +531,7 @@
return markup;
}
- return markup.find(child.getId(), 0);
+ return markup.find(child.getId());
}
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java Sat Nov 28 14:30:22 2009
@@ -20,7 +20,6 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.IMarkupFragment;
import org.apache.wicket.markup.MarkupException;
-import org.apache.wicket.markup.MarkupFragment;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper;
import org.apache.wicket.markup.html.HeaderPartContainer;
@@ -247,8 +246,8 @@
}
// Find <wicket:panel>
- int index = markup.findComponentIndex("_panel", 0);
- if (index == -1)
+ IMarkupFragment panelMarkup = markup.find("_panel");
+ if (panelMarkup == null)
{
throw new MarkupException(
"Expected to find <wicket:panel> in associated markup file. Markup: " +
@@ -258,10 +257,10 @@
// If child == null, return the markup starting with <wicket:panel>
if (child == null)
{
- return new MarkupFragment(markup, index);
+ return panelMarkup;
}
// else, find the markup fragment for the child component
- return markup.find(child.getId(), index);
+ return panelMarkup.find(child.getId());
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java Sat Nov 28 14:30:22 2009
@@ -358,13 +358,13 @@
return null;
}
- markup = markup.find(markupId, 0);
+ markup = markup.find(markupId);
if (child == null)
{
return markup;
}
- return markup.find(child.getId(), 0);
+ return markup.find(child.getId());
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java Sat Nov 28 14:30:22 2009
@@ -20,7 +20,6 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.IMarkupFragment;
import org.apache.wicket.markup.MarkupException;
-import org.apache.wicket.markup.MarkupFragment;
import org.apache.wicket.markup.MarkupNotFoundException;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup;
@@ -156,8 +155,8 @@
}
// Find <wicket:panel>
- int index = markup.findComponentIndex("_panel", 0);
- if (index == -1)
+ IMarkupFragment panelMarkup = markup.find("_panel");
+ if (panelMarkup == null)
{
throw new MarkupNotFoundException(
"Expected to find <wicket:panel> in associated markup file. Markup: " +
@@ -167,11 +166,11 @@
// If child == null, than return the markup fragment starting with <wicket:panel>
if (child == null)
{
- return new MarkupFragment(markup, index);
+ return panelMarkup;
}
// Find the markup for the child component
- IMarkupFragment childMarkup = markup.find(child.getId(), index);
+ IMarkupFragment childMarkup = panelMarkup.find(child.getId());
if (childMarkup != null)
{
return childMarkup;
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPage_5.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPage_5.java?rev=885097&r1=885096&r2=885097&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPage_5.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPage_5.java Sat Nov 28 14:30:22 2009
@@ -80,7 +80,7 @@
return markup;
}
- return markup.find(child.getId(), 0);
+ return markup.find(child.getId());
}
}
}