From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 25 Feb 2013 08:40:30 -0500
Subject: [PATCH] Merge pull request #75 from thefake/master

---
 src/com/gitblit/wicket/panels/LinkPanel.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/LinkPanel.java b/src/com/gitblit/wicket/panels/LinkPanel.java
index 475a71e..688a957 100644
--- a/src/com/gitblit/wicket/panels/LinkPanel.java
+++ b/src/com/gitblit/wicket/panels/LinkPanel.java
@@ -20,10 +20,14 @@
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.link.ExternalLink;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+
+import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.WicketUtils;
 
 public class LinkPanel extends Panel {
 
@@ -33,16 +37,31 @@
 
 	public LinkPanel(String wicketId, String linkCssClass, String label,
 			Class<? extends WebPage> clazz) {
-		this(wicketId, linkCssClass, new Model<String>(label), clazz, null);
+		this(wicketId, null, linkCssClass, new Model<String>(label), clazz, null, false);
 	}
 
 	public LinkPanel(String wicketId, String linkCssClass, String label,
 			Class<? extends WebPage> clazz, PageParameters parameters) {
-		this(wicketId, linkCssClass, new Model<String>(label), clazz, parameters);
+		this(wicketId, null, linkCssClass, new Model<String>(label), clazz, parameters, false);
+	}
+
+	public LinkPanel(String wicketId, String linkCssClass, String label,
+			Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
+		this(wicketId, null, linkCssClass, new Model<String>(label), clazz, parameters, newWindow);
+	}
+
+	public LinkPanel(String wicketId, String bootstrapIcon, String linkCssClass, String label,
+			Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
+		this(wicketId, bootstrapIcon, linkCssClass, new Model<String>(label), clazz, parameters, newWindow);
 	}
 
 	public LinkPanel(String wicketId, String linkCssClass, IModel<String> model,
 			Class<? extends WebPage> clazz, PageParameters parameters) {
+		this(wicketId, null, linkCssClass, model, clazz, parameters, false);
+	}
+
+	public LinkPanel(String wicketId, String bootstrapIcon, String linkCssClass, IModel<String> model,
+			Class<? extends WebPage> clazz, PageParameters parameters, boolean newWindow) {
 		super(wicketId);
 		this.labelModel = model;
 		Link<Void> link = null;
@@ -51,9 +70,39 @@
 		} else {
 			link = new BookmarkablePageLink<Void>("link", clazz, parameters);
 		}
+		if (newWindow) {
+			link.add(new SimpleAttributeModifier("target", "_blank"));
+		}
 		if (linkCssClass != null) {
 			link.add(new SimpleAttributeModifier("class", linkCssClass));
 		}
+		Label icon = new Label("icon");
+		if (StringUtils.isEmpty(bootstrapIcon)) {
+			link.add(icon.setVisible(false));
+		} else {
+			WicketUtils.setCssClass(icon, bootstrapIcon);
+			link.add(icon);
+		}
+		link.add(new Label("label", labelModel).setRenderBodyOnly(true));
+		add(link);
+	}
+
+	public LinkPanel(String wicketId, String linkCssClass, String label, String href) {
+		this(wicketId, linkCssClass, label, href, false);
+	}
+
+	public LinkPanel(String wicketId, String linkCssClass, String label, String href,
+			boolean newWindow) {
+		super(wicketId);
+		this.labelModel = new Model<String>(label);
+		ExternalLink link = new ExternalLink("link", href);
+		if (newWindow) {
+			link.add(new SimpleAttributeModifier("target", "_blank"));
+		}
+		if (linkCssClass != null) {
+			link.add(new SimpleAttributeModifier("class", linkCssClass));
+		}
+		link.add(new Label("icon").setVisible(false));
 		link.add(new Label("label", labelModel));
 		add(link);
 	}

--
Gitblit v1.9.1