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 <[email protected]> Authored: Thu Oct 4 23:55:30 2012 +0200 Committer: Martijn Dashorst <[email protected]> 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")); + } + } +}
