You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/06/27 15:10:31 UTC

git commit: WICKET-5257 Make css class strings used in the framework configurable

Updated Branches:
  refs/heads/5257-css-settings [created] 2f87d0b4e


WICKET-5257 Make css class strings used in the framework configurable


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

Branch: refs/heads/5257-css-settings
Commit: 2f87d0b4e0ad86d5900c39119cbc23c9cd74e3d6
Parents: 0d134f5
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Jun 27 16:10:04 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Jun 27 16:10:04 2013 +0300

----------------------------------------------------------------------
 .../java/org/apache/wicket/Application.java     |  28 +++
 .../markup/html/form/AutoLabelResolver.java     |   9 +-
 .../markup/html/form/FormComponentLabel.java    |   9 +-
 .../markup/html/list/OddEvenListItem.java       |   8 +-
 .../wicket/markup/html/panel/FeedbackPanel.java |   2 +-
 .../wicket/markup/repeater/OddEvenItem.java     |   8 +-
 .../apache/wicket/settings/ICssSettings.java    |  76 ++++++++
 .../apache/wicket/settings/def/CssSettings.java | 186 ++++++++++++++++++
 .../data/sort/AjaxFallbackOrderByBorder.java    |  40 +---
 .../data/sort/AjaxFallbackOrderByLink.java      |  34 +---
 .../html/repeater/data/sort/OrderByBorder.java  |  29 +--
 .../html/repeater/data/sort/OrderByLink.java    | 193 ++-----------------
 .../markup/html/tabs/TabbedPanel.java           |   6 +-
 .../java/org/apache/wicket/jmx/CssSettings.java | 170 ++++++++++++++++
 .../org/apache/wicket/jmx/CssSettingsMBean.java |  26 +++
 .../java/org/apache/wicket/jmx/Initializer.java |   2 +
 16 files changed, 539 insertions(+), 287 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/Application.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java b/wicket-core/src/main/java/org/apache/wicket/Application.java
index 5cbbdde..16989c6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
@@ -85,6 +85,7 @@ import org.apache.wicket.session.DefaultPageFactory;
 import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.session.ISessionStore.UnboundListener;
 import org.apache.wicket.settings.IApplicationSettings;
+import org.apache.wicket.settings.ICssSettings;
 import org.apache.wicket.settings.IDebugSettings;
 import org.apache.wicket.settings.IExceptionSettings;
 import org.apache.wicket.settings.IFrameworkSettings;
@@ -97,6 +98,7 @@ import org.apache.wicket.settings.IResourceSettings;
 import org.apache.wicket.settings.ISecuritySettings;
 import org.apache.wicket.settings.IStoreSettings;
 import org.apache.wicket.settings.def.ApplicationSettings;
+import org.apache.wicket.settings.def.CssSettings;
 import org.apache.wicket.settings.def.DebugSettings;
 import org.apache.wicket.settings.def.ExceptionSettings;
 import org.apache.wicket.settings.def.FrameworkSettings;
@@ -1039,6 +1041,9 @@ public abstract class Application implements UnboundListener, IEventSink
 	/** The Markup Settings */
 	private IMarkupSettings markupSettings;
 
+	/** The CSS Settings */
+	private ICssSettings cssSettings;
+
 	/** The Page Settings */
 	private IPageSettings pageSettings;
 
@@ -1239,6 +1244,29 @@ public abstract class Application implements UnboundListener, IEventSink
 		this.markupSettings = markupSettings;
 	}
 
+
+	/**
+	 * @return Application's CSS related settings
+	 */
+	public ICssSettings getCssSettings()
+	{
+		checkSettingsAvailable();
+		if (cssSettings == null)
+		{
+			cssSettings = new CssSettings();
+		}
+		return cssSettings;
+	}
+
+	/**
+	 * @param cssSettings
+	 */
+	public final void setCssSettings(final ICssSettings cssSettings)
+	{
+		this.cssSettings = cssSettings;
+	}
+
+
 	/**
 	 * @return Application's request logger related settings
 	 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java
index 562e6ed..f99cd94 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java
@@ -23,6 +23,7 @@ import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
 import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.settings.ICssSettings;
 import org.apache.wicket.util.visit.IVisit;
 import org.apache.wicket.util.visit.IVisitor;
 import org.slf4j.Logger;
@@ -185,22 +186,24 @@ public class AutoLabelResolver implements IComponentResolver
 			super.onComponentTag(tag);
 			tag.put("for", component.getMarkupId());
 
+			ICssSettings cssSettings = getApplication().getCssSettings();
+
 			if (component instanceof FormComponent)
 			{
 				FormComponent<?> fc = (FormComponent<?>)component;
 				if (fc.isRequired())
 				{
-					tag.append("class", "required", " ");
+					tag.append("class", cssSettings.getRequiredCssClass(), " ");
 				}
 				if (!fc.isValid())
 				{
-					tag.append("class", "error", " ");
+					tag.append("class", cssSettings.getInvalidCssClass(), " ");
 				}
 			}
 
 			if (!component.isEnabledInHierarchy())
 			{
-				tag.append("class", "disabled", " ");
+				tag.append("class", cssSettings.getDisabledCssClass(), " ");
 			}
 		}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentLabel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentLabel.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentLabel.java
index 59d34d9..c5ebd6f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentLabel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentLabel.java
@@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.parser.XmlTag.TagType;
+import org.apache.wicket.settings.ICssSettings;
 import org.apache.wicket.util.lang.Args;
 
 /**
@@ -65,23 +66,25 @@ public class FormComponentLabel extends WebMarkupContainer
 
 		tag.put("for", formComponent.getMarkupId());
 
+		ICssSettings cssSettings = getApplication().getCssSettings();
+
 		if (formComponent instanceof FormComponent<?>)
 		{
 			FormComponent<?> fc = (FormComponent<?>) formComponent;
 
 			if (fc.isRequired())
 			{
-				tag.append("class", "required", " ");
+				tag.append("class", cssSettings.getRequiredCssClass(), " ");
 			}
 			if (fc.isValid() == false)
 			{
-				tag.append("class", "error", " ");
+				tag.append("class", cssSettings.getInvalidCssClass(), " ");
 			}
 		}
 
 		if (formComponent.isEnabledInHierarchy() == false)
 		{
-			tag.append("class", "disabled", " ");
+			tag.append("class", cssSettings.getDisabledCssClass(), " ");
 		}
 
 		// always transform the tag to <span></span> so even labels defined as <span/> render

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/markup/html/list/OddEvenListItem.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/OddEvenListItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/OddEvenListItem.java
index fe4b1b7..80db38e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/OddEvenListItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/OddEvenListItem.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.list;
 
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.settings.ICssSettings;
 
 /**
  * ListItem that adds <code>class="odd"</code> or <code>class="even"</code> html attribute depending
@@ -30,9 +31,6 @@ public class OddEvenListItem<T> extends ListItem<T>
 {
 	private static final long serialVersionUID = 1L;
 
-	private static final String CLASS_EVEN = "even";
-	private static final String CLASS_ODD = "odd";
-
 	/**
 	 * Constructor
 	 * 
@@ -51,6 +49,8 @@ public class OddEvenListItem<T> extends ListItem<T>
 	protected void onComponentTag(ComponentTag tag)
 	{
 		super.onComponentTag(tag);
-		tag.append("class", (getIndex() % 2 == 0) ? CLASS_EVEN : CLASS_ODD, " ");
+
+		ICssSettings cssSettings = getApplication().getCssSettings();
+		tag.append("class", (getIndex() % 2 == 0) ? cssSettings.getEvenItemCssClass() : cssSettings.getOddItemCssClass(), " ");
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
index 968a93c..2dba2a6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
@@ -291,7 +291,7 @@ public class FeedbackPanel extends Panel implements IFeedback
 	 */
 	protected String getCSSClass(final FeedbackMessage message)
 	{
-		return "feedbackPanel" + message.getLevelAsString();
+		return getApplication().getCssSettings().getFeedbackMessageCssClass(message);
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/markup/repeater/OddEvenItem.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/OddEvenItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/OddEvenItem.java
index 49f006f..5d828ec 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/OddEvenItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/OddEvenItem.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.repeater;
 
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.settings.ICssSettings;
 
 /**
  * Item that sets class="even" or class="odd" attributes based on its index
@@ -31,9 +32,6 @@ public class OddEvenItem<T> extends Item<T>
 {
 	private static final long serialVersionUID = 1L;
 
-	private static final String CLASS_EVEN = "even";
-	private static final String CLASS_ODD = "odd";
-
 	/**
 	 * Constructor
 	 * 
@@ -53,7 +51,9 @@ public class OddEvenItem<T> extends Item<T>
 	protected void onComponentTag(ComponentTag tag)
 	{
 		super.onComponentTag(tag);
-		tag.put("class", (getIndex() % 2 == 0) ? CLASS_EVEN : CLASS_ODD);
+
+		ICssSettings cssSettings = getApplication().getCssSettings();
+		tag.put("class", (getIndex() % 2 == 0) ? cssSettings.getEvenItemCssClass() : cssSettings.getOddItemCssClass());
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/settings/ICssSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/ICssSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/ICssSettings.java
new file mode 100644
index 0000000..89f0f9f
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/ICssSettings.java
@@ -0,0 +1,76 @@
+/*
+ * 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.settings;
+
+import org.apache.wicket.feedback.FeedbackMessage;
+
+/**
+ * Provides means to change the default CSS classes and styles used
+ * by the components in Wicket distribution.
+ */
+public interface ICssSettings
+{
+	/**
+	 *
+	 * @return
+	 */
+	String getSortOrderDownCssClass();
+
+	void setSortOrderDownCssClass(String cssClassName);
+
+	String getSortOrderUpCssClass();
+
+	void setSortOrderUpCssClass(String cssClassName);
+
+	String getSortOrderNoneCssClass();
+
+	void setSortOrderNoneCssClass(String cssClassName);
+
+	String getFeedbackMessageCssClass(FeedbackMessage message);
+
+	void setRequiredCssClass(String cssClassName);
+
+	String getRequiredCssClass();
+
+	void setInvalidCssClass(String cssClassName);
+
+	String getInvalidCssClass();
+
+	void setDisabledCssClass(String cssClassName);
+
+	String getDisabledCssClass();
+
+	void setOddItemCssClass(String cssClassName);
+
+	String getOddItemCssClass();
+
+	void setEvenItemCssClass(String cssClassName);
+
+	String getEvenItemCssClass();
+
+	void setTabbedPanelSelectedCssClass(String cssClassName);
+
+	String getTabbedPanelSelectedCssClass();
+
+	void setTabbedPanelLastCssClass(String cssClassName);
+
+	String getTabbedPanelLastCssClass();
+
+	void setTabbedPanelTabContainerCssClass(String cssClassName);
+
+	String getTabbedPanelTabContainerCssClass();
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-core/src/main/java/org/apache/wicket/settings/def/CssSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/def/CssSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/def/CssSettings.java
new file mode 100644
index 0000000..a92a8c5
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/def/CssSettings.java
@@ -0,0 +1,186 @@
+/*
+ * 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.settings.def;
+
+import org.apache.wicket.feedback.FeedbackMessage;
+import org.apache.wicket.settings.ICssSettings;
+
+/**
+ *
+ */
+public class CssSettings implements ICssSettings
+{
+	private String sortOrderDownCssClass = "wicket_orderDown";
+
+	private String sortOrderUpCssClass = "wicket_orderUp";
+
+	private String sortOrderNoneCssClass = "wicket_orderNone";
+
+	private String requiredCssClass = "required";
+
+	private String invalidCssClass = "error";
+
+	private String disabledCssClass = "disabled";
+
+	private String oddItemCssClass = "odd";
+
+	private String evenItemCssClass = "even";
+
+	private String tabbedPanelSelectedCssClass = "selected";
+
+	private String tabbedPanelLastCssClass = "last";
+
+	private String tabbedPanelTabContainerCssClass = "tab-row";
+
+	@Override
+	public String getSortOrderDownCssClass()
+	{
+		return sortOrderDownCssClass;
+	}
+
+	@Override
+	public void setSortOrderDownCssClass(String cssClassName)
+	{
+		this.sortOrderDownCssClass = cssClassName;
+	}
+
+	@Override
+	public String getSortOrderUpCssClass()
+	{
+		return sortOrderUpCssClass;
+	}
+
+	@Override
+	public void setSortOrderUpCssClass(String cssClassName)
+	{
+		this.sortOrderUpCssClass = cssClassName;
+	}
+
+	@Override
+	public String getSortOrderNoneCssClass()
+	{
+		return sortOrderNoneCssClass;
+	}
+
+	@Override
+	public void setSortOrderNoneCssClass(String cssClassName)
+	{
+		this.sortOrderNoneCssClass = cssClassName;
+	}
+
+	@Override
+	public String getFeedbackMessageCssClass(FeedbackMessage message)
+	{
+		return "feedbackPanel" + message.getLevelAsString();
+	}
+
+	@Override
+	public void setRequiredCssClass(String cssClassName)
+	{
+		this.requiredCssClass = cssClassName;
+	}
+
+	@Override
+	public String getRequiredCssClass()
+	{
+		return requiredCssClass;
+	}
+
+	@Override
+	public void setInvalidCssClass(String cssClassName)
+	{
+		this.invalidCssClass = cssClassName;
+	}
+
+	@Override
+	public String getInvalidCssClass()
+	{
+		return invalidCssClass;
+	}
+
+	@Override
+	public void setDisabledCssClass(String cssClassName)
+	{
+		this.disabledCssClass = cssClassName;
+	}
+
+	@Override
+	public String getDisabledCssClass()
+	{
+		return disabledCssClass;
+	}
+
+	@Override
+	public void setOddItemCssClass(String cssClassName)
+	{
+		this.oddItemCssClass = cssClassName;
+	}
+
+	@Override
+	public String getOddItemCssClass()
+	{
+		return oddItemCssClass;
+	}
+
+	@Override
+	public void setEvenItemCssClass(String cssClassName)
+	{
+		this.evenItemCssClass = cssClassName;
+	}
+
+	@Override
+	public String getEvenItemCssClass()
+	{
+		return evenItemCssClass;
+	}
+
+	@Override
+	public void setTabbedPanelSelectedCssClass(String cssClassName)
+	{
+		this.tabbedPanelSelectedCssClass = cssClassName;
+	}
+
+	@Override
+	public String getTabbedPanelSelectedCssClass()
+	{
+		return tabbedPanelSelectedCssClass;
+	}
+
+	@Override
+	public void setTabbedPanelLastCssClass(String cssClassName)
+	{
+		this.tabbedPanelLastCssClass = cssClassName;
+	}
+
+	@Override
+	public String getTabbedPanelLastCssClass()
+	{
+		return tabbedPanelLastCssClass;
+	}
+
+	@Override
+	public void setTabbedPanelTabContainerCssClass(String cssClassName)
+	{
+		this.tabbedPanelTabContainerCssClass = cssClassName;
+	}
+
+	@Override
+	public String getTabbedPanelTabContainerCssClass()
+	{
+		return tabbedPanelTabContainerCssClass;
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
index 7b2f9b2..7355b23 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
@@ -49,26 +49,9 @@ public abstract class AjaxFallbackOrderByBorder<S> extends Border
 	public AjaxFallbackOrderByBorder(final String id, final S sortProperty,
 		final ISortStateLocator<S> stateLocator)
 	{
-		this(id, sortProperty, stateLocator, new AjaxFallbackOrderByLink.DefaultCssProvider<S>(),
-			null);
+		this(id, sortProperty, stateLocator, null);
 	}
 
-
-	/**
-	 * Constructor
-	 * 
-	 * @param id
-	 * @param sortProperty
-	 * @param stateLocator
-	 * @param cssProvider
-	 */
-	public AjaxFallbackOrderByBorder(final String id, final S sortProperty,
-		final ISortStateLocator<S> stateLocator, final AjaxFallbackOrderByLink.ICssProvider<S> cssProvider)
-	{
-		this(id, sortProperty, stateLocator, cssProvider, null);
-	}
-
-
 	/**
 	 * Constructor
 	 * 
@@ -80,27 +63,9 @@ public abstract class AjaxFallbackOrderByBorder<S> extends Border
 	public AjaxFallbackOrderByBorder(final String id, final S sortProperty,
 		final ISortStateLocator<S> stateLocator, final IAjaxCallListener ajaxCallListener)
 	{
-		this(id, sortProperty, stateLocator, new AjaxFallbackOrderByLink.DefaultCssProvider<S>(),
-			ajaxCallListener);
-	}
-
-
-	/**
-	 * Constructor
-	 * 
-	 * @param id
-	 * @param sortProperty
-	 * @param stateLocator
-	 * @param cssProvider
-	 * @param ajaxCallListener
-	 */
-	public AjaxFallbackOrderByBorder(final String id, final S sortProperty,
-		final ISortStateLocator<S> stateLocator,
-		final AjaxFallbackOrderByLink.ICssProvider<S> cssProvider, final IAjaxCallListener ajaxCallListener)
-	{
 		super(id);
 		AjaxFallbackOrderByLink<S> link = new AjaxFallbackOrderByLink<S>("orderByLink", sortProperty,
-			stateLocator, cssProvider, ajaxCallListener)
+			stateLocator, ajaxCallListener)
 		{
 
 			private static final long serialVersionUID = 1L;
@@ -119,7 +84,6 @@ public abstract class AjaxFallbackOrderByBorder<S> extends Border
 			}
 		};
 		addToBorder(link);
-		add(new AjaxFallbackOrderByLink.CssModifier<>(link, cssProvider));
 		link.add(getBodyContainer());
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
index 6d58ceb..8f8a02a 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
@@ -52,25 +52,11 @@ public abstract class AjaxFallbackOrderByLink<S> extends OrderByLink<S> implemen
 	 * @param id
 	 * @param sortProperty
 	 * @param stateLocator
-	 * @param cssProvider
-	 */
-	public AjaxFallbackOrderByLink(final String id, final S sortProperty,
-		final ISortStateLocator<S> stateLocator, final ICssProvider<S> cssProvider)
-	{
-		this(id, sortProperty, stateLocator, cssProvider, null);
-	}
-
-	/**
-	 * Constructor
-	 * 
-	 * @param id
-	 * @param sortProperty
-	 * @param stateLocator
 	 */
 	public AjaxFallbackOrderByLink(final String id, final S sortProperty,
 		final ISortStateLocator<S> stateLocator)
 	{
-		this(id, sortProperty, stateLocator, new DefaultCssProvider<S>(), null);
+		this(id, sortProperty, stateLocator, null);
 	}
 
 	/**
@@ -84,23 +70,7 @@ public abstract class AjaxFallbackOrderByLink<S> extends OrderByLink<S> implemen
 	public AjaxFallbackOrderByLink(final String id, final S sortProperty,
 		final ISortStateLocator<S> stateLocator, final IAjaxCallListener ajaxCallListener)
 	{
-		this(id, sortProperty, stateLocator, new DefaultCssProvider<S>(), ajaxCallListener);
-	}
-
-	/**
-	 * Constructor
-	 * 
-	 * @param id
-	 * @param sortProperty
-	 * @param stateLocator
-	 * @param cssProvider
-	 * @param ajaxCallListener
-	 */
-	public AjaxFallbackOrderByLink(final String id, final S sortProperty,
-		final ISortStateLocator<S> stateLocator, final ICssProvider<S> cssProvider,
-		final IAjaxCallListener ajaxCallListener)
-	{
-		super(id, sortProperty, stateLocator, cssProvider);
+		super(id, sortProperty, stateLocator);
 
 		this.ajaxCallListener = ajaxCallListener;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
index 0b2f5da..291221b 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
@@ -39,25 +39,21 @@ public class OrderByBorder<S> extends Border
 	/**
 	 * @param id
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
 	 * @param property
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
 	 * @param stateLocator
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
-	 * @param cssProvider
-	 *            see
-	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
 	 */
 	public OrderByBorder(final String id, final S property,
-		final ISortStateLocator<S> stateLocator, final OrderByLink.ICssProvider<S> cssProvider)
+		final ISortStateLocator<S> stateLocator)
 	{
 		super(id);
 
 		OrderByLink<S> link = newOrderByLink("orderByLink", property, stateLocator);
 		addToBorder(link);
-		add(new OrderByLink.CssModifier<>(link, cssProvider));
 		link.add(getBodyContainer());
 	}
 
@@ -75,8 +71,7 @@ public class OrderByBorder<S> extends Border
 	protected OrderByLink<S> newOrderByLink(final String id, final S property,
 		final ISortStateLocator<S> stateLocator)
 	{
-		return new OrderByLink<S>(id, property, stateLocator,
-			new OrderByLink.VoidCssProvider<S>())
+		return new OrderByLink<S>(id, property, stateLocator)
 		{
 			private static final long serialVersionUID = 1L;
 
@@ -96,18 +91,4 @@ public class OrderByBorder<S> extends Border
 		// noop
 	}
 
-	/**
-	 * @param id
-	 *            see {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
-	 * @param property
-	 *            see {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
-	 * @param stateLocator
-	 *            see {@link OrderByLink#OrderByLink(java.lang.String, java.lang.Object, org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator) }
-	 */
-	public OrderByBorder(final String id, final S property,
-		final ISortStateLocator<S> stateLocator)
-	{
-		this(id, property, stateLocator, new OrderByLink.DefaultCssProvider<S>());
-	}
-
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
index ea6935d..e39e751 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
@@ -16,11 +16,9 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.data.sort;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.util.io.IClusterable;
+import org.apache.wicket.settings.ICssSettings;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
 
@@ -48,25 +46,6 @@ public class OrderByLink<S> extends Link<Void>
 	 * 
 	 * @param id
 	 *            the component id of the link
-	 * @param sortProperty
-	 *            the name of the sortable sortProperty this link represents. this value will be
-	 *            used as parameter for sort state object methods. sort state object will be located
-	 *            via the stateLocator argument.
-	 * @param stateLocator
-	 *            locator used to locate sort state object that this will use to read/write state of
-	 *            sorted properties
-	 */
-	public OrderByLink(final String id, final S sortProperty,
-		final ISortStateLocator<S> stateLocator)
-	{
-		this(id, sortProperty, stateLocator, new DefaultCssProvider<S>());
-	}
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param id
-	 *            the component id of the link
 	 * @param property
 	 *            the name of the sortable property this link represents. this value will be used as
 	 *            parameter for sort state object methods. sort state object will be located via the
@@ -74,23 +53,16 @@ public class OrderByLink<S> extends Link<Void>
 	 * @param stateLocator
 	 *            locator used to locate sort state object that this will use to read/write state of
 	 *            sorted properties
-	 * @param cssProvider
-	 *            CSS provider that will be used generate the value of class attribute for this link
-	 * 
-	 * @see OrderByLink.ICssProvider
-	 * 
+	 *
 	 */
-	public OrderByLink(final String id, final S property, final ISortStateLocator<S> stateLocator,
-		final ICssProvider<S> cssProvider)
+	public OrderByLink(final String id, final S property, final ISortStateLocator<S> stateLocator)
 	{
 		super(id);
 
-		Args.notNull(cssProvider, "cssProvider");
 		Args.notNull(property, "property");
 
 		this.property = property;
 		this.stateLocator = stateLocator;
-		add(new CssModifier<>(this, cssProvider));
 	}
 
 	/**
@@ -155,162 +127,33 @@ public class OrderByLink<S> extends Link<Void>
 		}
 	}
 
-	/**
-	 * Uses the specified ICssProvider to add css class attributes to the link.
-	 * 
-	 * @param <S>
-	 *            type of sort property
-	 * @author Igor Vaynberg ( ivaynberg )
-	 */
-	public static class CssModifier<S> extends Behavior
+	@Override
+	public void onComponentTag(final ComponentTag tag)
 	{
-		private static final long serialVersionUID = 1L;
-		private final OrderByLink<S> link;
-		private final ICssProvider<S> provider;
+		super.onComponentTag(tag);
 
-		/**
-		 * @param link
-		 *            the link this modifier is being added to
-		 * @param provider
-		 *            implementation of ICssProvider
-		 */
-		public CssModifier(final OrderByLink<S> link, final ICssProvider<S> provider)
-		{
-			this.link = link;
-			this.provider = provider;
-		}
+		final ISortState<S> sortState = stateLocator.getSortState();
 
-		@Override
-		public void onComponentTag(final Component component, final ComponentTag tag)
+		ICssSettings cssSettings = getApplication().getCssSettings();
+		SortOrder dir = sortState.getPropertySortOrder(property);
+		String cssClass;
+		if (dir == SortOrder.ASCENDING)
 		{
-			super.onComponentTag(component, tag);
-
-			final ISortState<S> sortState = link.stateLocator.getSortState();
-			String cssClass = provider.getClassAttributeValue(sortState, link.property);
-			if (!Strings.isEmpty(cssClass))
-			{
-				tag.append("class", cssClass, " ");
-			}
-
+			cssClass = cssSettings.getSortOrderUpCssClass();
 		}
-	}
-
-
-	/**
-	 * Interface used to generate values of css class attribute for the anchor tag If the generated
-	 * value is null class attribute will not be added
-	 * 
-	 * @author igor
-	 * @param <S>
-	 *            the type of the sort property
-	 */
-	public static interface ICssProvider<S> extends IClusterable
-	{
-		/**
-		 * @param state
-		 *            current sort state
-		 * @param sortProperty
-		 *            sort sortProperty represented by the {@link OrderByLink}
-		 * @return the value of the "class" attribute for the given sort state/sort sortProperty
-		 *         combination
-		 */
-		public String getClassAttributeValue(ISortState<S> state, S sortProperty);
-	}
-
-
-	/**
-	 * Easily constructible implementation of ICSSProvider
-	 * 
-	 * @param <S>
-	 *            the type of the sort property
-	 * 
-	 * @author Igor Vaynberg (ivaynberg)
-	 */
-	public static class CssProvider<S> implements ICssProvider<S>
-	{
-		private static final long serialVersionUID = 1L;
-
-		private final String ascending;
-
-		private final String descending;
-
-		private final String none;
-
-		/**
-		 * @param ascending
-		 *            css class when sorting is ascending
-		 * @param descending
-		 *            css class when sorting is descending
-		 * @param none
-		 *            css class when not sorted
-		 */
-		public CssProvider(final String ascending, final String descending, final String none)
+		else if (dir == SortOrder.DESCENDING)
 		{
-			this.ascending = ascending;
-			this.descending = descending;
-			this.none = none;
+			cssClass = cssSettings.getSortOrderDownCssClass();
 		}
-
-		@Override
-		public String getClassAttributeValue(final ISortState<S> state, final S sortProperty)
+		else
 		{
-			SortOrder dir = state.getPropertySortOrder(sortProperty);
-
-			if (dir == SortOrder.ASCENDING)
-			{
-				return ascending;
-			}
-			else if (dir == SortOrder.DESCENDING)
-			{
-				return descending;
-			}
-			else
-			{
-				return none;
-			}
+			cssClass = cssSettings.getSortOrderNoneCssClass();
 		}
-	}
 
-	/**
-	 * Convenience implementation of ICssProvider that always returns a null and so never adds a
-	 * class attribute
-	 * 
-	 * @param <S>
-	 *            the type of the sort property
-	 * @author Igor Vaynberg ( ivaynberg )
-	 */
-	public static class VoidCssProvider<S> extends CssProvider<S>
-	{
-		private static final long serialVersionUID = 1L;
-
-		/**
-		 * Construct.
-		 */
-		public VoidCssProvider()
+		if (!Strings.isEmpty(cssClass))
 		{
-			super("", "", "");
+			tag.append("class", cssClass, " ");
 		}
-	}
 
-	/**
-	 * Default implementation of ICssProvider
-	 * 
-	 * @param <S>
-	 *            the type of the sort property
-	 * 
-	 * @author Igor Vaynberg ( ivaynberg )
-	 */
-	public static class DefaultCssProvider<S> extends CssProvider<S>
-	{
-		private static final long serialVersionUID = 1L;
-
-		/**
-		 * Construct.
-		 */
-		public DefaultCssProvider()
-		{
-			super("wicket_orderUp", "wicket_orderDown", "wicket_orderNone");
-		}
 	}
-
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/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 94cb909..cb40da8 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
@@ -272,7 +272,7 @@ public class TabbedPanel<T extends ITab> extends Panel
 	 */
 	protected String getTabContainerCssClass()
 	{
-		return "tab-row";
+		return getApplication().getCssSettings().getTabbedPanelTabContainerCssClass();
 	}
 
 	/**
@@ -281,7 +281,7 @@ public class TabbedPanel<T extends ITab> extends Panel
 	 */
 	protected String getLastTabCssClass()
 	{
-		return "last";
+		return getApplication().getCssSettings().getTabbedPanelLastCssClass();
 	}
 
 	/**
@@ -290,7 +290,7 @@ public class TabbedPanel<T extends ITab> extends Panel
 	 */
 	protected String getSelectedTabCssClass()
 	{
-		return "selected";
+		return getApplication().getCssSettings().getTabbedPanelSelectedCssClass();
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettings.java
----------------------------------------------------------------------
diff --git a/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettings.java b/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettings.java
new file mode 100644
index 0000000..4db5187
--- /dev/null
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettings.java
@@ -0,0 +1,170 @@
+/*
+ * 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.jmx;
+
+import org.apache.wicket.feedback.FeedbackMessage;
+
+/**
+ * Exposes Application CSS related functionality for JMX.
+ */
+public class CssSettings implements CssSettingsMBean
+{
+	private final org.apache.wicket.Application application;
+
+	public CssSettings(org.apache.wicket.Application application)
+	{
+		this.application = application;
+	}
+
+	@Override
+	public String getSortOrderDownCssClass()
+	{
+		return application.getCssSettings().getSortOrderDownCssClass();
+	}
+
+	@Override
+	public void setSortOrderDownCssClass(String cssClassName)
+	{
+		application.getCssSettings().setSortOrderDownCssClass(cssClassName);
+	}
+
+	@Override
+	public String getSortOrderUpCssClass()
+	{
+		return application.getCssSettings().getSortOrderUpCssClass();
+	}
+
+	@Override
+	public void setSortOrderUpCssClass(String cssClassName)
+	{
+		application.getCssSettings().setSortOrderUpCssClass(cssClassName);
+	}
+
+	@Override
+	public String getSortOrderNoneCssClass()
+	{
+		return application.getCssSettings().getSortOrderNoneCssClass();
+	}
+
+	@Override
+	public void setSortOrderNoneCssClass(String cssClassName)
+	{
+		application.getCssSettings().setSortOrderNoneCssClass(cssClassName);
+	}
+
+	@Override
+	public String getFeedbackMessageCssClass(FeedbackMessage message)
+	{
+		return application.getCssSettings().getFeedbackMessageCssClass(message);
+	}
+
+	@Override
+	public void setRequiredCssClass(String cssClassName)
+	{
+		application.getCssSettings().setRequiredCssClass(cssClassName);
+	}
+
+	@Override
+	public String getRequiredCssClass()
+	{
+		return application.getCssSettings().getRequiredCssClass();
+	}
+
+	@Override
+	public void setInvalidCssClass(String cssClassName)
+	{
+		application.getCssSettings().setInvalidCssClass(cssClassName);
+	}
+
+	@Override
+	public String getInvalidCssClass()
+	{
+		return application.getCssSettings().getInvalidCssClass();
+	}
+
+	@Override
+	public void setDisabledCssClass(String cssClassName)
+	{
+		application.getCssSettings().setDisabledCssClass(cssClassName);
+	}
+
+	@Override
+	public String getDisabledCssClass()
+	{
+		return application.getCssSettings().getDisabledCssClass();
+	}
+
+	@Override
+	public void setOddItemCssClass(String cssClassName)
+	{
+		application.getCssSettings().setOddItemCssClass(cssClassName);
+	}
+
+	@Override
+	public String getOddItemCssClass()
+	{
+		return application.getCssSettings().getOddItemCssClass();
+	}
+
+	@Override
+	public void setEvenItemCssClass(String cssClassName)
+	{
+		application.getCssSettings().setEvenItemCssClass(cssClassName);
+	}
+
+	@Override
+	public String getEvenItemCssClass()
+	{
+		return application.getCssSettings().getEvenItemCssClass();
+	}
+
+	@Override
+	public void setTabbedPanelSelectedCssClass(String cssClassName)
+	{
+		application.getCssSettings().setTabbedPanelSelectedCssClass(cssClassName);
+	}
+
+	@Override
+	public String getTabbedPanelSelectedCssClass()
+	{
+		return application.getCssSettings().getTabbedPanelSelectedCssClass();
+	}
+
+	@Override
+	public void setTabbedPanelLastCssClass(String cssClassName)
+	{
+		application.getCssSettings().setTabbedPanelLastCssClass(cssClassName);
+	}
+
+	@Override
+	public String getTabbedPanelLastCssClass()
+	{
+		return application.getCssSettings().getTabbedPanelLastCssClass();
+	}
+
+	@Override
+	public void setTabbedPanelTabContainerCssClass(String cssClassName)
+	{
+		application.getCssSettings().setTabbedPanelTabContainerCssClass(cssClassName);
+	}
+
+	@Override
+	public String getTabbedPanelTabContainerCssClass()
+	{
+		return application.getCssSettings().getTabbedPanelTabContainerCssClass();
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettingsMBean.java
----------------------------------------------------------------------
diff --git a/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettingsMBean.java b/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettingsMBean.java
new file mode 100644
index 0000000..97292d6
--- /dev/null
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/CssSettingsMBean.java
@@ -0,0 +1,26 @@
+/*
+ * 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.jmx;
+
+import org.apache.wicket.settings.ICssSettings;
+
+/**
+ * Css settings
+ */
+public interface CssSettingsMBean extends ICssSettings
+{
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2f87d0b4/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
----------------------------------------------------------------------
diff --git a/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java b/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
index 77aaa2d..cb2ad8a 100644
--- a/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
@@ -192,6 +192,8 @@ public class Initializer implements IInitializer
 				":type=Application,name=SessionSettings"));
 			register(new StoreSettings(application), new ObjectName(domain +
 				":type=Application,name=StoreSettings"));
+			register(new CssSettings(application), new ObjectName(domain +
+					":type=Application,name=CssSettings"));
 
 			RequestLogger sessionsBean = new RequestLogger(application);
 			ObjectName sessionsBeanName = new ObjectName(domain + ":type=RequestLogger");