You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by cm...@apache.org on 2012/05/21 18:04:09 UTC
[1/2] git commit: WICKET-4537: Made TabbedPanel generic
Updated Branches:
refs/heads/master fc23eebdf -> 58d90e91e
refs/heads/wicket-1.5.x dbb5095d7 -> 2cc12ee11
WICKET-4537: Made TabbedPanel generic
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2cc12ee1
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2cc12ee1
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2cc12ee1
Branch: refs/heads/wicket-1.5.x
Commit: 2cc12ee116789669c2aedd8bc884229f5a09a1a4
Parents: dbb5095
Author: Carl-Eric Menzel <cm...@wicketbuch.de>
Authored: Mon May 21 17:19:20 2012 +0200
Committer: Carl-Eric Menzel <cm...@wicketbuch.de>
Committed: Mon May 21 17:27:05 2012 +0200
----------------------------------------------------------------------
.../extensions/markup/html/tabs/TabbedPanel.java | 15 ++-
wicket-extensions/src/test/java/.gitignore | 1 +
.../markup/html/tabs/TabbedPanelTest$TestPage.html | 5 +
.../html/tabs/TabbedPanelTest$TestPanel.html | 3 +
.../markup/html/tabs/TabbedPanelTest.java | 108 +++++++++++++++
5 files changed, 126 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/2cc12ee1/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
index 751cf65..8fa9d50 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
@@ -68,15 +68,18 @@ import org.apache.wicket.util.lang.Args;
* @see org.apache.wicket.extensions.markup.html.tabs.ITab
*
* @author Igor Vaynberg (ivaynberg at apache dot org)
+ * @param <T>
+ * The type of panel to be used for this component's tabs. Just use {@link ITab} if you
+ * have no special needs here.
*/
-public class TabbedPanel extends Panel
+public class TabbedPanel<T extends ITab> extends Panel
{
private static final long serialVersionUID = 1L;
/** id used for child panels */
public static final String TAB_PANEL_ID = "panel";
- private final List<? extends ITab> tabs;
+ private final List<T> tabs;
private transient Boolean[] tabsVisibilityCache;
@@ -88,7 +91,7 @@ public class TabbedPanel extends Panel
* @param tabs
* list of ITab objects used to represent tabs
*/
- public TabbedPanel(final String id, final List<? extends ITab> tabs)
+ public TabbedPanel(final String id, final List<T> tabs)
{
super(id, new Model<Integer>(-1));
@@ -117,7 +120,7 @@ public class TabbedPanel extends Panel
protected void populateItem(final LoopItem item)
{
final int index = item.getIndex();
- final ITab tab = TabbedPanel.this.tabs.get(index);
+ final T tab = TabbedPanel.this.tabs.get(index);
final WebMarkupContainer titleLink = newLink("link", index);
@@ -251,7 +254,7 @@ public class TabbedPanel extends Panel
/**
* @return list of tabs that can be used by the user to add/remove/reorder tabs in the panel
*/
- public final List<? extends ITab> getTabs()
+ public final List<T> getTabs()
{
return tabs;
}
@@ -347,7 +350,7 @@ public class TabbedPanel extends Panel
else
{
// show panel from selected tab
- ITab tab = tabs.get(index);
+ T tab = tabs.get(index);
component = tab.getPanel(TAB_PANEL_ID);
if (component == null)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/2cc12ee1/wicket-extensions/src/test/java/.gitignore
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/test/java/.gitignore b/wicket-extensions/src/test/java/.gitignore
new file mode 100644
index 0000000..72bcd0d
--- /dev/null
+++ b/wicket-extensions/src/test/java/.gitignore
@@ -0,0 +1 @@
+log4j.properties
http://git-wip-us.apache.org/repos/asf/wicket/blob/2cc12ee1/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPage.html
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPage.html b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPage.html
new file mode 100644
index 0000000..6de956a
--- /dev/null
+++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPage.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+ <div wicket:id="tabpanel"></div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/wicket/blob/2cc12ee1/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPanel.html
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPanel.html b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPanel.html
new file mode 100644
index 0000000..f08475e
--- /dev/null
+++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest$TestPanel.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+ <span wicket:id="label"></span>
+</wicket:panel>
http://git-wip-us.apache.org/repos/asf/wicket/blob/2cc12ee1/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest.java b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest.java
new file mode 100644
index 0000000..2d22c0d
--- /dev/null
+++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanelTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.extensions.markup.html.tabs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.junit.Test;
+
+public class TabbedPanelTest extends WicketTestCase
+{
+ public static class TestPage extends WebPage
+ {
+ public TabbedPanel<ITab> tabbedPanel;
+
+ public TestPage()
+ {
+ List<ITab> defaultTabs = new ArrayList<ITab>();
+ defaultTabs.add(new AbstractTab(Model.of("default 1"))
+ {
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId)
+ {
+ return new TestPanel(panelId, "default 1");
+ }
+ });
+ defaultTabs.add(new AbstractTab(Model.of("default 2"))
+ {
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId)
+ {
+ return new TestPanel(panelId, "default 2");
+ }
+ });
+ tabbedPanel = new TabbedPanel<ITab>("tabpanel", defaultTabs);
+ add(tabbedPanel);
+ }
+ }
+
+ public static class TestPanel extends Panel
+ {
+ public TestPanel(String id, String panelTestId)
+ {
+ super(id);
+ this.add(new Label("label", panelTestId));
+ }
+ }
+
+ @Test
+ public void renderDefaultTabsOnly() throws Exception
+ {
+ tester.startPage(TestPage.class);
+ tester.assertContains("<span wicket:id=\"title\">default 1</span></a>");
+ tester.assertContains("<span wicket:id=\"label\">default 1</span>");
+ tester.assertContains("<span wicket:id=\"title\">default 2</span></a>");
+ tester.clickLink("tabpanel:tabs-container:tabs:1:link");
+ tester.assertContains("<span wicket:id=\"label\">default 2</span>");
+ }
+
+ @Test
+ public void renderAdditionalTabs() throws Exception
+ {
+ TestPage page = tester.startPage(TestPage.class);
+ page.tabbedPanel.getTabs().add(new AbstractTab(Model.of("added 1"))
+ {
+ @Override
+ public WebMarkupContainer getPanel(String panelId)
+ {
+ return new TestPanel(panelId, "added 1");
+ }
+ });
+ // the additional tab isn't rendered yet
+ tester.assertContainsNot("<span wicket:id=\"title\">added 1</span></a>");
+ tester.assertContainsNot("<span wicket:id=\"label\">added 1</span>");
+
+ // now its title is visible, but the contents not
+ tester.clickLink("tabpanel:tabs-container:tabs:1:link");
+ tester.assertContains("<span wicket:id=\"title\">added 1</span></a>");
+ tester.assertContainsNot("<span wicket:id=\"label\">added 1</span>");
+
+ // now the entire panel should be there
+ tester.clickLink("tabpanel:tabs-container:tabs:2:link");
+ tester.assertContains("<span wicket:id=\"title\">added 1</span></a>");
+ tester.assertContains("<span wicket:id=\"label\">added 1</span>");
+ }
+}