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:30:23 UTC

svn commit: r1062394 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/markup/html/link/ wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/

Author: mgrigorov
Date: Sun Jan 23 11:30:23 2011
New Revision: 1062394

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

Remove the constructor parameter for label (body).
Now all Link impls can call #setBodyLabel(IModel) if they want to set the link's body.
Add an example.

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
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.html
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.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=1062394&r1=1062393&r2=1062394&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:30:23 2011
@@ -32,7 +32,7 @@ public abstract class AbstractLink exten
 	private static final long serialVersionUID = 1L;
 
 	/** this link's label/body. */
-	private final IModel<?> label;
+	private IModel<?> bodyModel;
 
 	/**
 	 * Construct.
@@ -54,22 +54,7 @@ public abstract class AbstractLink exten
 	 */
 	public AbstractLink(String id, IModel<?> model)
 	{
-		this(id, model, null);
-	}
-
-	/**
-	 * Construct.
-	 * 
-	 * @param id
-	 *            the component id
-	 * @param model
-	 *            the link's model
-	 * @param labelModel
-	 */
-	public AbstractLink(String id, IModel<?> model, final IModel<?> labelModel)
-	{
 		super(id, model);
-		label = wrap(labelModel);
 	}
 
 	/**
@@ -185,10 +170,10 @@ public abstract class AbstractLink exten
 			getResponse().write(getBeforeDisabledLink());
 		}
 
-		if ((label != null) && (label.getObject() != null))
+		if ((bodyModel != null) && (bodyModel.getObject() != null))
 		{
 			replaceComponentTagBody(markupStream, openTag,
-				getDefaultModelObjectAsString(label.getObject()));
+				getDefaultModelObjectAsString(bodyModel.getObject()));
 		}
 		else
 		{
@@ -233,10 +218,22 @@ public abstract class AbstractLink exten
 	}
 
 	/**
-	 * @return the link's label/body
+	 * @return the link's body model
 	 */
-	public IModel<?> getLabel()
+	public IModel<?> getBodyModel()
 	{
-		return label;
+		return bodyModel;
+	}
+
+	/**
+	 * Sets the link's body model
+	 * 
+	 * @param bodyModel
+	 * @return <code>this</code> for method chaining
+	 */
+	public AbstractLink setBodyModel(final IModel<?> bodyModel)
+	{
+		this.bodyModel = bodyModel;
+		return this;
 	}
 }

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=1062394&r1=1062393&r2=1062394&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:30:23 2011
@@ -52,9 +52,10 @@ public class ExternalLink extends Abstra
 	 */
 	public ExternalLink(final String id, final String href, final String label)
 	{
-		super(id, null, Model.of(label));
+		super(id);
 
 		setDefaultModel(href != null ? new Model<String>(href) : null);
+		setBodyModel(Model.of(label));
 	}
 
 	/**
@@ -67,37 +68,38 @@ public class ExternalLink extends Abstra
 	 */
 	public ExternalLink(final String id, final String href)
 	{
-		this(id, href, null);
+		this(id, Model.of(href));
 	}
 
 	/**
 	 * Constructor.
 	 * 
 	 * @param id
-	 *            See Component
+	 *            The name of this component
 	 * @param href
 	 *            the href attribute to set
-	 * @param label
-	 *            the label (body)
 	 */
-	public ExternalLink(final String id, final IModel<String> href, final IModel<?> label)
+	public ExternalLink(final String id, final IModel<String> href)
 	{
-		super(id, null, label);
-
-		setDefaultModel(wrap(href));
+		this(id, href, null);
 	}
 
 	/**
 	 * Constructor.
 	 * 
 	 * @param id
-	 *            The name of this component
+	 *            See Component
 	 * @param href
 	 *            the href attribute to set
+	 * @param label
+	 *            the label (body)
 	 */
-	public ExternalLink(final String id, final IModel<String> href)
+	public ExternalLink(final String id, final IModel<String> href, final IModel<?> label)
 	{
-		this(id, href, null);
+		super(id);
+
+		setDefaultModel(wrap(href));
+		setBodyModel(wrap(label));
 	}
 
 	/**
@@ -212,4 +214,14 @@ public class ExternalLink extends Abstra
 		this.contextRelative = contextRelative;
 		return this;
 	}
+
+	/**
+	 * @deprecated use {@link #getBodyModel()} instead
+	 * @return the model used for the link's body
+	 */
+	@Deprecated
+	public IModel<?> getLabel()
+	{
+		return getBodyModel();
+	}
 }
\ No newline at end of file

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.html?rev=1062394&r1=1062393&r2=1062394&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.html (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.html Sun Jan 23 11:30:23 2011
@@ -45,6 +45,8 @@
 		<input wicket:id="redirectUrl" type="text" size="50" /><input type="submit" value="go"/>
 	</form>
 	</p><p>
+	<a wicket:id="linkWithLabel">[will be set in .java]</a>
+	</p><p>
     <div wicket:id="anchorLabel">[label for anchor]</div>
 	</p><p>
     <div id="anotherAnchor">This is another div that serves as an anchor</div>

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.java?rev=1062394&r1=1062393&r2=1062394&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/Home.java Sun Jan 23 11:30:23 2011
@@ -32,6 +32,7 @@ import org.apache.wicket.markup.html.pag
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.parser.filter.RelativePathPrefixHandler;
 import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.request.resource.SharedResourceReference;
@@ -117,7 +118,8 @@ public class Home extends WicketExampleP
 		add(new ClientSideImageMap("imageMap", imageForMap).addRectangleArea(
 			new BookmarkablePageLink<Page1>("page1", Page1.class), 0, 0, 100, 100)
 			.addCircleArea(new BookmarkablePageLink<Page2>("page2", Page2.class), 160, 50, 35)
-			.addPolygonArea(new BookmarkablePageLink<Page3>("page3", Page3.class), 212, 79, 241, 4, 279, 54, 212, 79)
+			.addPolygonArea(new BookmarkablePageLink<Page3>("page3", Page3.class), 212, 79, 241, 4,
+				279, 54, 212, 79)
 			.add(RelativePathPrefixHandler.RELATIVE_PATH_BEHAVIOR));
 
 		// Popup example
@@ -165,6 +167,17 @@ public class Home extends WicketExampleP
 			"this label is here to function as an anchor for a link").setOutputMarkupId(true);
 		add(anchorLabel);
 		linkToAnchor.setAnchor(anchorLabel);
+
+		Link<Void> linkWithLabel = new Link<Void>("linkWithLabel")
+		{
+
+			@Override
+			public void onClick()
+			{
+			}
+		};
+		linkWithLabel.setBodyModel(Model.of("A link that provides its body with Link.setBodyLabel(someModel)"));
+		add(linkWithLabel);
 	}
 
 	/**



Re: svn commit: r1062394 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/markup/html/link/ wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/

Posted by Martin Grigorov <mg...@apache.org>.
Improved with r1062672.
Thanks!

On Mon, Jan 24, 2011 at 6:09 AM, Igor Vaynberg <ig...@gmail.com>wrote:

> also it should just be setLabel() or setBody(), setBodyLabel() seems
> redundant
>
> -igor
>
> On Sun, Jan 23, 2011 at 3:17 PM, Jeremy Thomerson
> <jr...@apache.org> wrote:
> >
> >
> > On Sun, Jan 23, 2011 at 5:30 AM, <mg...@apache.org> wrote:
> >>
> >> +       public AbstractLink setBodyModel(final IModel<?> bodyModel)
> >> +       {
> >> +               this.bodyModel = bodyModel;
> >> +               return this;
> >>        }
> >
> > Should this be:
> >
> > this.bodyModel = wrap(bodyModel);
> >
> > --
> > Jeremy Thomerson
> > http://wickettraining.com
> > Need a CMS for Wicket?  Use Brix! http://brixcms.org
> >
> >
>

Re: svn commit: r1062394 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/markup/html/link/ wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/

Posted by Igor Vaynberg <ig...@gmail.com>.
also it should just be setLabel() or setBody(), setBodyLabel() seems redundant

-igor

On Sun, Jan 23, 2011 at 3:17 PM, Jeremy Thomerson
<jr...@apache.org> wrote:
>
>
> On Sun, Jan 23, 2011 at 5:30 AM, <mg...@apache.org> wrote:
>>
>> +       public AbstractLink setBodyModel(final IModel<?> bodyModel)
>> +       {
>> +               this.bodyModel = bodyModel;
>> +               return this;
>>        }
>
> Should this be:
>
> this.bodyModel = wrap(bodyModel);
>
> --
> Jeremy Thomerson
> http://wickettraining.com
> Need a CMS for Wicket?  Use Brix! http://brixcms.org
>
>

Re: svn commit: r1062394 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/markup/html/link/ wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/

Posted by Jeremy Thomerson <jr...@apache.org>.
On Sun, Jan 23, 2011 at 5:30 AM, <mg...@apache.org> wrote:

> +       public AbstractLink setBodyModel(final IModel<?> bodyModel)
> +       {
> +               this.bodyModel = bodyModel;
> +               return this;
>        }
>

Should this be:

   this.bodyModel = wrap(bodyModel);

-- 
Jeremy Thomerson
http://wickettraining.com
*Need a CMS for Wicket?  Use Brix! http://brixcms.org*