Author: knopp
Date: Sat May 24 03:15:19 2008
New Revision: 659783
URL: http://svn.apache.org/viewvc?rev=659783&view=rev
Log:
WICKET-1660
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/AbstractTab.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/ITab.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/PanelCachingTab.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/AbstractTab.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/AbstractTab.java?rev=659783&r1=659782&r2=659783&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/AbstractTab.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/AbstractTab.java
Sat May 24 03:15:19 2008
@@ -54,6 +54,11 @@
return title;
}
+ public boolean isVisible()
+ {
+ return true;
+ }
+
/**
* @see
org.apache.wicket.extensions.markup.html.tabs.ITab#getPanel(java.lang.String)
*/
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/ITab.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/ITab.java?rev=659783&r1=659782&r2=659783&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/ITab.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/ITab.java
Sat May 24 03:15:19 2008
@@ -42,4 +42,11 @@
* @return a Panel object that will be placed as the content panel
*/
Panel<?> getPanel(final String panelId);
+
+ /**
+ * Returns whether this tab should be visible
+ *
+ * @return
+ */
+ boolean isVisible();
}
\ No newline at end of file
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/PanelCachingTab.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/PanelCachingTab.java?rev=659783&r1=659782&r2=659783&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/PanelCachingTab.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/PanelCachingTab.java
Sat May 24 03:15:19 2008
@@ -32,7 +32,7 @@
{
private static final long serialVersionUID = 1L;
- private Panel panel;
+ private Panel<?> panel;
private ITab delegate;
/**
@@ -49,7 +49,7 @@
/**
* @see org.apache.wicket.extensions.markup.html.tabs.ITab#getTitle()
*/
- public IModel getTitle()
+ public IModel<String> getTitle()
{
return delegate.getTitle();
}
@@ -57,7 +57,7 @@
/**
* @see
org.apache.wicket.extensions.markup.html.tabs.ITab#getPanel(java.lang.String)
*/
- public Panel getPanel(final String panelId)
+ public Panel<?> getPanel(final String panelId)
{
if (panel == null)
{
@@ -65,4 +65,12 @@
}
return panel;
}
+
+ /**
+ * @see org.apache.wicket.extensions.markup.html.tabs.ITab#isVisible()
+ */
+ public boolean isVisible()
+ {
+ return true;
+ }
}
\ No newline at end of file
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java?rev=659783&r1=659782&r2=659783&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
Sat May 24 03:15:19 2008
@@ -172,7 +172,7 @@
* @param tabIndex
* @return new loop item
*/
- protected LoopItem newTabContainer(int tabIndex)
+ protected LoopItem newTabContainer(final int tabIndex)
{
return new LoopItem(tabIndex)
{
@@ -199,6 +199,12 @@
}
tag.put("class", cssClass.trim());
}
+
+ @Override
+ public boolean isVisible()
+ {
+ return getTabs().get(tabIndex).isVisible();
+ }
};
}
@@ -208,12 +214,20 @@
@Override
protected void onBeforeRender()
{
- super.onBeforeRender();
if (!hasBeenRendered() && getSelectedTab() == -1)
- {
- // select the first tab by default
- setSelectedTab(0);
- }
+ {
+ List<ITab> tabs = getTabs();
+ for (int i = 0; i < tabs.size(); ++i)
+ {
+ ITab tab = tabs.get(i);
+ if (tab.isVisible())
+ {
+ setSelectedTab(i);
+ break;
+ }
+ }
+ }
+ super.onBeforeRender();
}
/**
@@ -320,20 +334,25 @@
ITab tab = tabs.get(index);
- Panel<?> panel = tab.getPanel(TAB_PANEL_ID);
+ final Component<?> component;
+
+ if (tab.isVisible())
+ component = tab.getPanel(TAB_PANEL_ID);
+ else
+ component = new WebMarkupContainer<Void>(TAB_PANEL_ID);
- if (panel == null)
+ if (component == null)
{
throw new WicketRuntimeException("ITab.getPanel()
returned null. TabbedPanel [" +
getPath() + "] ITab index [" + index + "]");
}
- if (!panel.getId().equals(TAB_PANEL_ID))
+ if (!component.getId().equals(TAB_PANEL_ID))
{
throw new WicketRuntimeException(
"ITab.getPanel() returned a panel with invalid
id [" +
- panel.getId() +
+ component.getId() +
"]. You must always return a panel with
id equal to the provided panelId parameter. TabbedPanel [" +
getPath() + "] ITab index [" + index +
"]");
}
@@ -341,11 +360,11 @@
if (get(TAB_PANEL_ID) == null)
{
- add(panel);
+ add(component);
}
else
{
- replace(panel);
+ replace(component);
}
}