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 2011/01/23 12:04:07 UTC

svn commit: r1062384 - in /wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link: AbstractLink.java ExternalLink.java

Author: mgrigorov
Date: Sun Jan 23 11:04:06 2011
New Revision: 1062384

URL: http://svn.apache.org/viewvc?rev=1062384&view=rev
Log:
WICKET-3338 Please provide a LabelLink or something similar

Move the logic for working with provided text for link label/body to AbstractLink.
Now all Link impls can use that, not only ExternalLink.

Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java?rev=1062384&r1=1062383&r2=1062384&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java Sun Jan 23 11:04:06 2011
@@ -31,25 +31,45 @@ public abstract class AbstractLink exten
 {
 	private static final long serialVersionUID = 1L;
 
+	/** this link's label/body. */
+	private final IModel<?> label;
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 */
+	public AbstractLink(String id)
+	{
+		this(id, null);
+	}
+
 	/**
 	 * Construct.
 	 * 
 	 * @param id
+	 *            the component id
 	 * @param model
+	 *            the link's model
 	 */
 	public AbstractLink(String id, IModel<?> model)
 	{
-		super(id, model);
+		this(id, model, null);
 	}
 
 	/**
 	 * Construct.
 	 * 
 	 * @param id
+	 *            the component id
+	 * @param model
+	 *            the link's model
+	 * @param labelModel
 	 */
-	public AbstractLink(String id)
+	public AbstractLink(String id, IModel<?> model, final IModel<?> labelModel)
 	{
-		super(id);
+		super(id, model);
+		label = wrap(labelModel);
 	}
 
 	/**
@@ -165,9 +185,16 @@ public abstract class AbstractLink exten
 			getResponse().write(getBeforeDisabledLink());
 		}
 
-		// Render the body of the link
-		super.onComponentTagBody(markupStream, openTag);
-
+		if ((label != null) && (label.getObject() != null))
+		{
+			replaceComponentTagBody(markupStream, openTag,
+				getDefaultModelObjectAsString(label.getObject()));
+		}
+		else
+		{
+			// Render the body of the link
+			super.onComponentTagBody(markupStream, openTag);
+		}
 		// Draw anything after the body?
 		if (!isLinkEnabled() && getAfterDisabledLink() != null)
 		{
@@ -204,4 +231,12 @@ public abstract class AbstractLink exten
 			tag.put("disabled", "disabled");
 		}
 	}
+
+	/**
+	 * @return the link's label/body
+	 */
+	public IModel<?> getLabel()
+	{
+		return label;
+	}
 }

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java?rev=1062384&r1=1062383&r2=1062384&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java Sun Jan 23 11:04:06 2011
@@ -17,7 +17,6 @@
 package org.apache.wicket.markup.html.link;
 
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.cycle.RequestCycle;
@@ -33,9 +32,6 @@ public class ExternalLink extends Abstra
 {
 	private static final long serialVersionUID = 1L;
 
-	/** this links' label. */
-	private final IModel<?> label;
-
 	private boolean contextRelative = false;
 
 	/**
@@ -56,10 +52,9 @@ public class ExternalLink extends Abstra
 	 */
 	public ExternalLink(final String id, final String href, final String label)
 	{
-		super(id);
+		super(id, null, Model.of(label));
 
 		setDefaultModel(href != null ? new Model<String>(href) : null);
-		this.label = (label != null ? new Model<String>(label) : null);
 	}
 
 	/**
@@ -87,10 +82,9 @@ public class ExternalLink extends Abstra
 	 */
 	public ExternalLink(final String id, final IModel<String> href, final IModel<?> label)
 	{
-		super(id);
+		super(id, null, label);
 
 		setDefaultModel(wrap(href));
-		this.label = wrap(label);
 	}
 
 	/**
@@ -198,42 +192,6 @@ public class ExternalLink extends Abstra
 	}
 
 	/**
-	 * Handle the container's body.
-	 * 
-	 * @param markupStream
-	 *            The markup stream
-	 * @param openTag
-	 *            The open tag for the body
-	 * @see org.apache.wicket.Component#onComponentTagBody(org.apache.wicket.markup.MarkupStream,
-	 *      org.apache.wicket.markup.ComponentTag)
-	 */
-	@Override
-	public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag)
-	{
-		// Draw anything before the body?
-		if (!isLinkEnabled() && getBeforeDisabledLink() != null)
-		{
-			getResponse().write(getBeforeDisabledLink());
-		}
-
-		if ((label != null) && (label.getObject() != null))
-		{
-			replaceComponentTagBody(markupStream, openTag,
-				getDefaultModelObjectAsString(label.getObject()));
-		}
-		else
-		{
-			super.onComponentTagBody(markupStream, openTag);
-		}
-
-		// Draw anything after the body?
-		if (!isLinkEnabled() && getAfterDisabledLink() != null)
-		{
-			getResponse().write(getAfterDisabledLink());
-		}
-	}
-
-	/**
 	 * @return True if this link is automatically prepended with ../ to make it relative to the
 	 *         context root.
 	 */
@@ -254,12 +212,4 @@ public class ExternalLink extends Abstra
 		this.contextRelative = contextRelative;
 		return this;
 	}
-
-	/**
-	 * @return label attribute
-	 */
-	public IModel<?> getLabel()
-	{
-		return label;
-	}
 }
\ No newline at end of file