You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2012/10/05 09:54:00 UTC

git commit: New examples: Made top menu work properly

Updated Branches:
  refs/heads/master ea83e6b62 -> 22fa6fc45


New examples: Made top menu work properly


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/22fa6fc4
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/22fa6fc4
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/22fa6fc4

Branch: refs/heads/master
Commit: 22fa6fc4569e4109d66ad4428f87456579707cbd
Parents: ea83e6b
Author: Martijn Dashorst <da...@apache.org>
Authored: Thu Oct 4 23:55:30 2012 +0200
Committer: Martijn Dashorst <da...@apache.org>
Committed: Fri Oct 5 09:43:53 2012 +0200

----------------------------------------------------------------------
 .../wicket/examples/base/AbstractBasePage.java     |   31 ++++++---
 .../wicket/examples/base/ExamplesApplication.java  |    2 +
 .../wicket/examples/base/markup/ClassValue.java    |   50 +++++++++++++--
 .../wicket/examples/base/navbar/TopNavbar.html     |    4 +-
 .../wicket/examples/base/navbar/TopNavbar.java     |   27 +++++++-
 .../examples/base/navbar/TopNavbarMenuItem.html    |    3 +
 .../examples/base/navbar/TopNavbarMenuItem.java    |   51 +++++++++++++++
 7 files changed, 146 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
index 2e2b107..ca07f0d 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
@@ -3,6 +3,8 @@ package org.apache.wicket.examples.base;
 import org.apache.wicket.bootstrap.Bootstrap;
 import org.apache.wicket.examples.base.navbar.TopNavbar;
 import org.apache.wicket.examples.base.prettify.Prettify;
+import org.apache.wicket.examples.basic.BasicExamplesPage;
+import org.apache.wicket.examples.components.ComponentExamplesPage;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
@@ -10,29 +12,36 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
-public abstract class AbstractBasePage extends WebPage {
+public abstract class AbstractBasePage extends WebPage
+{
 	private static final long serialVersionUID = 1L;
 
 	@Override
-	protected void onConfigure() {
-		if (!hasBeenRendered()) {
-			add(new TopNavbar("topnavbar"));
+	protected void onConfigure()
+	{
+		if (!hasBeenRendered())
+		{
+			TopNavbar mainmenu = new TopNavbar("topnavbar");
+			mainmenu.addMenuItem("Home", HomePage.class);
+			mainmenu.addMenuItem("Basic", BasicExamplesPage.class);
+			mainmenu.addMenuItem("Components", ComponentExamplesPage.class);
+			add(mainmenu);
 		}
 	}
 
 	@Override
-	public void renderHead(IHeaderResponse response) {
+	public void renderHead(IHeaderResponse response)
+	{
 		super.renderHead(response);
 
 		Bootstrap.renderHead(response);
 		Prettify.renderHead(response);
 
 		response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(
-				AbstractBasePage.class, "examples.js")));
-		response.render(CssHeaderItem.forReference(new CssResourceReference(
-				AbstractBasePage.class, "docs.css")));
-		response.render(CssHeaderItem.forCSS(
-				"body { padding-top: 60px; padding-bottom: 40px; }",
-				"custom-wicket-examples"));
+			AbstractBasePage.class, "examples.js")));
+		response.render(CssHeaderItem.forReference(new CssResourceReference(AbstractBasePage.class,
+			"docs.css")));
+		response.render(CssHeaderItem.forCSS("body { padding-top: 60px; padding-bottom: 40px; }",
+			"custom-wicket-examples"));
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/ExamplesApplication.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/ExamplesApplication.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/ExamplesApplication.java
index f46d15d..76a786d 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/ExamplesApplication.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/ExamplesApplication.java
@@ -34,6 +34,8 @@ public class ExamplesApplication extends WebApplication
 	{
 		super.init();
 
+		getMarkupSettings().setStripWicketTags(true);
+
 		mountPage("/basic", BasicExamplesPage.class);
 		mountPage("/basic/helloworld", HelloWorldPage.class);
 		mountPage("/basic/linkcounter", LinkCounterPage.class);

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/markup/ClassValue.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/markup/ClassValue.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/markup/ClassValue.java
index e31d1ff..8b445ad 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/markup/ClassValue.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/markup/ClassValue.java
@@ -2,34 +2,72 @@ package org.apache.wicket.examples.base.markup;
 
 import java.util.LinkedHashSet;
 
+import org.apache.wicket.markup.ComponentTag;
+
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Sets;
 
-public class ClassValue {
+public class ClassValue implements CharSequence
+{
 	private static final Splitter splitter = Splitter.onPattern("\\s+");
+
 	private final LinkedHashSet<String> values;
 
-	public static ClassValue of(CharSequence value) {
+	public static ClassValue of(ComponentTag tag)
+	{
+		return of(tag.getAttribute("class"));
+	}
+
+	public static ClassValue of(CharSequence value)
+	{
 		return new ClassValue(splitter.split(value == null ? "" : value));
 	}
 
-	private ClassValue(Iterable<String> values) {
+	private ClassValue(Iterable<String> values)
+	{
 		this.values = Sets.newLinkedHashSet(values);
+		this.values.remove("");
 	}
 
-	public ClassValue without(String clz) {
+	private String join()
+	{
+		return Joiner.on(' ').join(values);
+	}
+
+	public ClassValue without(String clz)
+	{
 		values.remove(clz);
 		return this;
 	}
 
-	public ClassValue with(String clz) {
+	public ClassValue with(String clz)
+	{
 		values.add(clz);
 		return this;
 	}
 
 	@Override
-	public String toString() {
+	public String toString()
+	{
 		return Joiner.on(' ').join(values);
 	}
+
+	@Override
+	public int length()
+	{
+		return toString().length();
+	}
+
+	@Override
+	public char charAt(int index)
+	{
+		return toString().charAt(index);
+	}
+
+	@Override
+	public CharSequence subSequence(int start, int end)
+	{
+		return toString().subSequence(start, end);
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.html
index 23ebe9d..85b1e10 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.html
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.html
@@ -2,14 +2,16 @@
 	<div class="navbar-inner">
 		<div class="container">
 			<ul class="nav">
-				<li class="active">
+				<li wicket:id="items">
 					<a href="/">Home</a>
 				</li>
+				<wicket:remove>
 				<li><a href="/basic">Basic</a></li>
 				<li><a href="/components">Components</a></li>
 				<li><a href="/ajax">Ajax</a></li>
 				<li><a href="/push">Push</a></li>
 				<li><a href="/integration">Integration</a></li>
+				</wicket:remove>
 			</ul>
 		</div>
 	</div>

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.java
index ff0a55f..3331bc0 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbar.java
@@ -2,19 +2,38 @@ package org.apache.wicket.examples.base.navbar;
 
 import org.apache.wicket.examples.base.markup.ClassValue;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
-public class TopNavbar extends Panel {
+public class TopNavbar extends Panel
+{
 	private static final long serialVersionUID = 1L;
+	private RepeatingView menuitems;
 
-	public TopNavbar(String id) {
+	public TopNavbar(String id)
+	{
 		super(id);
+		menuitems = new RepeatingView("items");
+		add(menuitems);
+	}
+
+	public void addMenuItem(String label, Class<? extends WebPage> page)
+	{
+		addMenuItem(label, page, null);
+	}
+
+	public void addMenuItem(String label, Class<? extends WebPage> page, PageParameters parameters)
+	{
+		menuitems.add(new TopNavbarMenuItem(menuitems.newChildId(), label, page, parameters));
 	}
 
 	@Override
-	protected void onComponentTag(ComponentTag tag) {
+	protected void onComponentTag(ComponentTag tag)
+	{
 		super.onComponentTag(tag);
-		
+
 		ClassValue css = ClassValue.of(tag.getAttribute("class"));
 		css.with("navbar").with("navbar-fixed-top");
 		tag.put("class", css.toString());

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.html
new file mode 100644
index 0000000..ff23498
--- /dev/null
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+	<a wicket:id="link" href="/">Home</a>
+</wicket:panel>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/22fa6fc4/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
new file mode 100644
index 0000000..1cb7135
--- /dev/null
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.examples.base.navbar;
+
+import org.apache.wicket.examples.base.markup.ClassValue;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class TopNavbarMenuItem extends Panel
+{
+	private static final long serialVersionUID = 1L;
+
+	private BookmarkablePageLink<Void> link;
+
+	public TopNavbarMenuItem(String id, String label, Class<? extends WebPage> page,
+		PageParameters parameters)
+	{
+		super(id);
+
+		add(link = new BookmarkablePageLink<Void>("link", page, parameters));
+		link.setBody(Model.of(label));
+	}
+
+	@Override
+	protected void onComponentTag(ComponentTag tag)
+	{
+		super.onComponentTag(tag);
+		if (link.linksTo(getPage()))
+		{
+			tag.put("class", ClassValue.of(tag).with("active"));
+		}
+	}
+}