You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/08/13 09:17:19 UTC

svn commit: r985109 [1/2] - in /wicket/trunk: wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/ wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/ wicket-examples/src/main/java/org/apache/wicket/examples/sourc...

Author: ivaynberg
Date: Fri Aug 13 07:17:16 2010
New Revision: 985109

URL: http://svn.apache.org/viewvc?rev=985109&view=rev
Log:
WICKET-2981 WICKET-2982 WICKET-2983

Added:
    wicket/trunk/wicket/Wicket - Regenerate Tests.launch   (with props)
Removed:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/CssHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/CssLocationHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/CssReferenceHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/HeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/JavascriptHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/JavascriptLocationHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/JavascriptReferenceHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/StringHeaderContributor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/template/TextTemplateHeaderContributor.java
Modified:
    wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/AbstractCalendar.java
    wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/GuestBook.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/DefaultCssAutoCompleteTextField.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/IAjaxCallDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallThrottlingDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPostprocessingCallDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPreprocessingCallDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/CancelEventIfNoAjaxDecorator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractBehavior.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehavior.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_ajax_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_ajax_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPostprocessingCallDecoratorTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPreprocessingCallDecoratorTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent3.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePage_13.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePage_15.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_ExpectedResult_3.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupDisabledTestPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTestPage1_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTestPage2_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTestPage3_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTestPage4_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/FormMethodTestPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupDisabledTestPage_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTestPage1_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/RadioGroupTestPage3_expected.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackFormPage_result1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackFormPage_result2.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/MyPage2.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/tags/InputTagNotVisibleWebPageResult.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/tags/InputTagVisibleWebPageResult.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/parser/filter/PanelWithHeaderPart.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/renderStrategy/SimplePage1.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/renderStrategy/SimplePage2.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/renderStrategy/SimplePanel1.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/resolver/HomePage_2.java

Modified: wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/AbstractCalendar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/AbstractCalendar.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/AbstractCalendar.java (original)
+++ wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/AbstractCalendar.java Fri Aug 13 07:17:16 2010
@@ -20,14 +20,13 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Map.Entry;
+import java.util.Properties;
 
-import org.apache.wicket.behavior.HeaderContributor;
-import org.apache.wicket.behavior.StringHeaderContributor;
 import org.apache.wicket.extensions.yui.YuiLib;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.util.string.JavascriptUtils;
 
 
@@ -66,6 +65,8 @@ public abstract class AbstractCalendar e
 	public static final DateFormat FORMAT_PAGEDATE = new SimpleDateFormat("MM/yyyy");
 	private static final long serialVersionUID = 1L;
 
+	private final boolean contributeDependencies;
+
 	/**
 	 * Construct. Contributes packaged dependencies.
 	 * 
@@ -101,102 +102,7 @@ public abstract class AbstractCalendar e
 
 		super(id);
 		setOutputMarkupId(true);
-		if (contributeDependencies)
-		{
-			contributeDependencies();
-		}
-
-		add(new StringHeaderContributor(new LoadableDetachableModel<CharSequence>()
-		{
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected CharSequence load()
-			{
-				// not pretty to look at, but cheaper than using a template
-				String markupId = AbstractCalendar.this.getMarkupId();
-				String javascriptId = getJavascriptId();
-				String javascriptWidgetId = getJavascriptWidgetId();
-				StringBuffer b = new StringBuffer();
-				b.append(JavascriptUtils.SCRIPT_OPEN_TAG);
-				// initialize wicket namespace and register the init function
-				// for the YUI widget
-				b.append("YAHOO.namespace(\"wicket\");\nfunction init");
-				b.append(javascriptId);
-				b.append("() {\n");
-
-				// instantiate the calendar object
-				b.append("  ");
-				b.append(javascriptWidgetId);
-				b.append(" = new YAHOO.widget.Calendar(\"");
-				b.append(javascriptId);
-				b.append("\",\"");
-				b.append(markupId);
-
-				Properties p = new Properties();
-				configureWidgetProperties(p);
-				b.append("\", { ");
-				for (Iterator<Entry<Object, Object>> i = p.entrySet().iterator(); i.hasNext();)
-				{
-					Entry<Object, Object> entry = i.next();
-					b.append(entry.getKey());
-					Object value = entry.getValue();
-					if (value instanceof CharSequence)
-					{
-						b.append(":\"");
-						b.append(value);
-						b.append("\"");
-					}
-					else if (value instanceof CharSequence[])
-					{
-						b.append(":[");
-						CharSequence[] valueArray = (CharSequence[])value;
-						for (int j = 0; j < valueArray.length; j++)
-						{
-							CharSequence tmpValue = valueArray[j];
-							b.append("\"");
-							b.append(tmpValue);
-							b.append("\"");
-							if (j < valueArray.length - 1)
-							{
-								b.append(",");
-							}
-						}
-						b.append("]");
-					}
-					else
-					{
-						b.append(":");
-						b.append(value);
-					}
-					// TODO handle arrays
-					if (i.hasNext())
-					{
-						b.append(",");
-					}
-				}
-
-				b.append(" });\n");
-
-				// append the javascript we want for our init function; call
-				// this in an overridable method so that clients can add their
-				// stuff without needing a big ass API
-				appendToInit(markupId, javascriptId, javascriptWidgetId, b);
-
-				// trigger rendering
-				b.append("  ");
-				b.append(javascriptWidgetId);
-				b.append(".render();\n");
-
-				b.append("}\n");
-				// register the function for execution when the page is loaded
-				b.append("YAHOO.util.Event.addListener(window, \"load\", init");
-				b.append(javascriptId);
-				b.append(");");
-				b.append(JavascriptUtils.SCRIPT_CLOSE_TAG);
-				return b;
-			}
-		}));
+		this.contributeDependencies = contributeDependencies;
 	}
 
 	/**
@@ -226,11 +132,14 @@ public abstract class AbstractCalendar e
 	/**
 	 * add header contributions for packaged resources.
 	 */
-	private void contributeDependencies()
+	private void contributeDependencies(IHeaderResponse response)
 	{
-		add(HeaderContributor.forJavaScript(YuiLib.class, "yahoo-dom-event/yahoo-dom-event.js"));
-		add(HeaderContributor.forJavaScript(AbstractCalendar.class, "calendar-min.js"));
-		add(HeaderContributor.forCss(AbstractCalendar.class, "assets/skins/sam/calendar.css"));
+		response.renderJavascriptReference(new PackageResourceReference(YuiLib.class,
+				"yahoo-dom-event/yahoo-dom-event.js"));
+		response.renderJavascriptReference(new PackageResourceReference(AbstractCalendar.class,
+				"calendar-min.js"));
+		response.renderCSSReference(new PackageResourceReference(AbstractCalendar.class,
+				"assets/skins/sam/calendar.css"));
 	}
 
 	/**
@@ -265,4 +174,98 @@ public abstract class AbstractCalendar e
 	protected void configureWidgetProperties(Map<Object, Object> widgetProperties)
 	{
 	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		if (contributeDependencies)
+		{
+			contributeDependencies(response);
+		}
+
+
+		// not pretty to look at, but cheaper than using a template
+		String markupId = AbstractCalendar.this.getMarkupId();
+		String javascriptId = getJavascriptId();
+		String javascriptWidgetId = getJavascriptWidgetId();
+		StringBuffer b = new StringBuffer();
+		b.append(JavascriptUtils.SCRIPT_OPEN_TAG);
+		// initialize wicket namespace and register the init function
+		// for the YUI widget
+		b.append("YAHOO.namespace(\"wicket\");\nfunction init");
+		b.append(javascriptId);
+		b.append("() {\n");
+
+		// instantiate the calendar object
+		b.append("  ");
+		b.append(javascriptWidgetId);
+		b.append(" = new YAHOO.widget.Calendar(\"");
+		b.append(javascriptId);
+		b.append("\",\"");
+		b.append(markupId);
+
+		Properties p = new Properties();
+		configureWidgetProperties(p);
+		b.append("\", { ");
+		for (Iterator<Entry<Object, Object>> i = p.entrySet().iterator(); i.hasNext();)
+		{
+			Entry<Object, Object> entry = i.next();
+			b.append(entry.getKey());
+			Object value = entry.getValue();
+			if (value instanceof CharSequence)
+			{
+				b.append(":\"");
+				b.append(value);
+				b.append("\"");
+			}
+			else if (value instanceof CharSequence[])
+			{
+				b.append(":[");
+				CharSequence[] valueArray = (CharSequence[])value;
+				for (int j = 0; j < valueArray.length; j++)
+				{
+					CharSequence tmpValue = valueArray[j];
+					b.append("\"");
+					b.append(tmpValue);
+					b.append("\"");
+					if (j < valueArray.length - 1)
+					{
+						b.append(",");
+					}
+				}
+				b.append("]");
+			}
+			else
+			{
+				b.append(":");
+				b.append(value);
+			}
+			// TODO handle arrays
+			if (i.hasNext())
+			{
+				b.append(",");
+			}
+		}
+
+		b.append(" });\n");
+
+		// append the javascript we want for our init function; call
+		// this in an overridable method so that clients can add their
+		// stuff without needing a big ass API
+		appendToInit(markupId, javascriptId, javascriptWidgetId, b);
+
+		// trigger rendering
+		b.append("  ");
+		b.append(javascriptWidgetId);
+		b.append(".render();\n");
+
+		b.append("}\n");
+		// register the function for execution when the page is loaded
+		b.append("YAHOO.util.Event.addListener(window, \"load\", init");
+		b.append(javascriptId);
+		b.append(");");
+		b.append(JavascriptUtils.SCRIPT_CLOSE_TAG);
+
+		response.renderString(b);
+	}
 }

Modified: wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java (original)
+++ wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java Fri Aug 13 07:17:16 2010
@@ -72,7 +72,7 @@ import org.joda.time.DateTime;
  * 
  * @author eelcohillenius
  */
-public class DatePicker extends AbstractBehavior implements IHeaderContributor
+public class DatePicker extends AbstractBehavior
 {
 	private static Method GETINSTANCEMETHOD = null;
 
@@ -133,7 +133,7 @@ public class DatePicker extends Abstract
 
 	/** The target component. */
 	private Component component;
-	
+
 	private boolean showOnFieldClick = false;
 
 	/**
@@ -217,6 +217,7 @@ public class DatePicker extends Abstract
 	/**
 	 * @see org.apache.wicket.markup.html.IHeaderContributor#renderHead(org.apache.wicket.markup.html.IHeaderResponse)
 	 */
+	@Override
 	public void renderHead(IHeaderResponse response)
 	{
 		if (includeYUILibraries())
@@ -235,10 +236,12 @@ public class DatePicker extends Abstract
 		variables.put("hideOnSelect", hideOnSelect());
 		variables.put("showOnFieldClick", showOnFieldClick());
 		// variables for YUILoader
-		variables.put("basePath", Strings.stripJSessionId(RequestCycle.get().renderUrlFor(
-				new ResourceReferenceRequestHandler(YUI))));
-		variables.put("wicketDatePath", RequestCycle.get().renderUrlFor(
-				new ResourceReferenceRequestHandler(WICKET_DATE)));
+		variables.put(
+				"basePath",
+				Strings.stripJSessionId(RequestCycle.get().renderUrlFor(
+						new ResourceReferenceRequestHandler(YUI))));
+		variables.put("wicketDatePath",
+				RequestCycle.get().renderUrlFor(new ResourceReferenceRequestHandler(WICKET_DATE)));
 		if (Application.DEVELOPMENT.equals(Application.get().getConfigurationType()))
 		{
 			variables.put("filter", "filter: \"RAW\",");
@@ -253,8 +256,8 @@ public class DatePicker extends Abstract
 		String script = getAdditionalJavascript();
 		if (script != null)
 		{
-			variables.put("additionalJavascript", Strings.replaceAll(script, "${calendar}",
-					"YAHOO.wicket." + widgetId + "DpJs"));
+			variables.put("additionalJavascript",
+					Strings.replaceAll(script, "${calendar}", "YAHOO.wicket." + widgetId + "DpJs"));
 		}
 		// print out the initialization properties
 		Map<String, Object> p = new HashMap<String, Object>();
@@ -605,8 +608,8 @@ public class DatePicker extends Abstract
 
 		setWidgetProperty(widgetProperties, "MONTHS_SHORT", filterEmpty(dfSymbols.getShortMonths()));
 		setWidgetProperty(widgetProperties, "MONTHS_LONG", filterEmpty(dfSymbols.getMonths()));
-		setWidgetProperty(widgetProperties, "WEEKDAYS_MEDIUM", filterEmpty(dfSymbols
-				.getShortWeekdays()));
+		setWidgetProperty(widgetProperties, "WEEKDAYS_MEDIUM",
+				filterEmpty(dfSymbols.getShortWeekdays()));
 		setWidgetProperty(widgetProperties, "WEEKDAYS_LONG", filterEmpty(dfSymbols.getWeekdays()));
 
 		widgetProperties.put("START_WEEKDAY", new Integer(Calendar.getInstance(getLocale())
@@ -615,17 +618,17 @@ public class DatePicker extends Abstract
 		if (Locale.SIMPLIFIED_CHINESE.equals(getLocale()) ||
 				Locale.TRADITIONAL_CHINESE.equals(getLocale()))
 		{
-			setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR", filterEmpty(substring(dfSymbols
-					.getShortWeekdays(), 2, 1)));
-			widgetProperties.put("WEEKDAYS_SHORT", filterEmpty(substring(dfSymbols
-					.getShortWeekdays(), 2, 1)));
+			setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR",
+					filterEmpty(substring(dfSymbols.getShortWeekdays(), 2, 1)));
+			widgetProperties.put("WEEKDAYS_SHORT",
+					filterEmpty(substring(dfSymbols.getShortWeekdays(), 2, 1)));
 		}
 		else
 		{
-			setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR", filterEmpty(substring(dfSymbols
-					.getShortWeekdays(), 0, 1)));
-			setWidgetProperty(widgetProperties, "WEEKDAYS_SHORT", filterEmpty(substring(dfSymbols
-					.getShortWeekdays(), 0, 2)));
+			setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR",
+					filterEmpty(substring(dfSymbols.getShortWeekdays(), 0, 1)));
+			setWidgetProperty(widgetProperties, "WEEKDAYS_SHORT",
+					filterEmpty(substring(dfSymbols.getShortWeekdays(), 0, 2)));
 		}
 	}
 
@@ -717,24 +720,26 @@ public class DatePicker extends Abstract
 	{
 		return true;
 	}
-	
+
 	/**
 	 * Indicates whether the calendar should be shown when corresponding text input is clicked.
 	 * 
 	 * @return <code>true</code> <br/>
 	 *         <code>false</code> (default)
 	 */
-	protected boolean showOnFieldClick() {
+	protected boolean showOnFieldClick()
+	{
 		return showOnFieldClick;
 	}
-	
+
 	/**
 	 * 
 	 * @see {@link #showOnFieldClick()}
 	 */
-	public DatePicker setShowOnFieldClick(boolean show) {
-		
-		this.showOnFieldClick = show;
+	public DatePicker setShowOnFieldClick(boolean show)
+	{
+
+		showOnFieldClick = show;
 		return this;
 	}
 

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/GuestBook.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/GuestBook.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/GuestBook.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/GuestBook.java Fri Aug 13 07:17:16 2010
@@ -101,7 +101,7 @@ public class GuestBook extends BasePage
 				return new AjaxCallDecorator()
 				{
 					@Override
-					public CharSequence decorateScript(CharSequence script)
+					public CharSequence decorateScript(Component c, CharSequence script)
 					{
 						return script + "return false;";
 					}

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.examples.ajax.builtin;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.calldecorator.AjaxCallDecorator;
@@ -137,19 +138,19 @@ public class LinksPage extends BasePage
 				return new AjaxCallDecorator()
 				{
 					@Override
-					public CharSequence decorateOnSuccessScript(CharSequence script)
+					public CharSequence decorateOnSuccessScript(Component c, CharSequence script)
 					{
 						return "alert('Success');";
 					}
 
 					@Override
-					public CharSequence decorateOnFailureScript(CharSequence script)
+					public CharSequence decorateOnFailureScript(Component c, CharSequence script)
 					{
 						return "alert('Failure');";
 					}
 
 					@Override
-					public CharSequence decorateScript(CharSequence script)
+					public CharSequence decorateScript(Component c, CharSequence script)
 					{
 						return "alert('Before ajax call');" + script;
 					}
@@ -171,19 +172,19 @@ public class LinksPage extends BasePage
 				return new AjaxCallDecorator()
 				{
 					@Override
-					public CharSequence decorateOnSuccessScript(CharSequence script)
+					public CharSequence decorateOnSuccessScript(Component c, CharSequence script)
 					{
 						return "alert('Success');";
 					}
 
 					@Override
-					public CharSequence decorateOnFailureScript(CharSequence script)
+					public CharSequence decorateOnFailureScript(Component c, CharSequence script)
 					{
 						return "alert('Failure');";
 					}
 
 					@Override
-					public CharSequence decorateScript(CharSequence script)
+					public CharSequence decorateScript(Component c, CharSequence script)
 					{
 						return "alert('Before ajax call');" + script;
 					}

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java Fri Aug 13 07:17:16 2010
@@ -90,8 +90,10 @@ public class SourcesPage extends WebPage
 		{
 			// name contains the name of the selected file
 			if (Strings.isEmpty(name) &&
-				Strings.isEmpty(getPage().getRequest().getRequestParameters().getParameterValue(
-					SOURCE).toOptionalString()))
+				Strings.isEmpty(getPage().getRequest()
+					.getRequestParameters()
+					.getParameterValue(SOURCE)
+					.toOptionalString()))
 			{
 				return "";
 			}
@@ -126,13 +128,15 @@ public class SourcesPage extends WebPage
 						return renderer.highlight(source, sb.toString(), "UTF-8", true);
 					}
 				}
-				return Strings.escapeMarkup(sb.toString(), false, true).toString().replaceAll("\n",
-					"<br />");
+				return Strings.escapeMarkup(sb.toString(), false, true)
+					.toString()
+					.replaceAll("\n", "<br />");
 			}
 			catch (IOException e)
 			{
-				log.error("Unable to read resource stream for: " + source + "; Page=" +
-					page.toString(), e);
+				log.error(
+					"Unable to read resource stream for: " + source + "; Page=" + page.toString(),
+					e);
 				return "";
 			}
 			finally
@@ -251,8 +255,9 @@ public class SourcesPage extends WebPage
 				File file = files[i];
 				if (file.isDirectory())
 				{
-					addResources(scope, new AppendingStringBuffer(relativePath).append(
-						file.getName()).append('/'), file);
+					addResources(scope,
+						new AppendingStringBuffer(relativePath).append(file.getName()).append('/'),
+						file);
 				}
 				else
 				{
@@ -414,13 +419,15 @@ public class SourcesPage extends WebPage
 							return new IAjaxCallDecorator()
 							{
 
-								public CharSequence decorateOnFailureScript(CharSequence script)
+								public CharSequence decorateOnFailureScript(Component c,
+									CharSequence script)
 								{
 									return "window.location=this.href;";
 									// return "alert('It\\'s ok!')";
 								}
 
-								public CharSequence decorateOnSuccessScript(CharSequence script)
+								public CharSequence decorateOnSuccessScript(Component c,
+									CharSequence script)
 								{
 									if (script == null)
 									{
@@ -429,7 +436,7 @@ public class SourcesPage extends WebPage
 									return script;
 								}
 
-								public CharSequence decorateScript(CharSequence script)
+								public CharSequence decorateScript(Component c, CharSequence script)
 								{
 									int index = script.toString().indexOf('?');
 									if (index >= 0)

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java Fri Aug 13 07:17:16 2010
@@ -20,7 +20,7 @@ import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.IAjaxIndicatorAware;
-import org.apache.wicket.behavior.AbstractHeaderContributor;
+import org.apache.wicket.behavior.AbstractBehavior;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Response;
@@ -41,7 +41,7 @@ import org.apache.wicket.request.handler
  * 
  * @author Igor Vaynberg (ivaynberg)
  */
-public class AjaxIndicatorAppender extends AbstractHeaderContributor
+public class AjaxIndicatorAppender extends AbstractBehavior
 {
 	/**
 	 * Component instance this behavior is bound to
@@ -60,9 +60,6 @@ public class AjaxIndicatorAppender exten
 	{
 	}
 
-	/**
-	 * @see AbstractHeaderContributor#renderHead(IHeaderResponse)
-	 */
 	@Override
 	public void renderHead(IHeaderResponse response)
 	{

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/DefaultCssAutoCompleteTextField.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/DefaultCssAutoCompleteTextField.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/DefaultCssAutoCompleteTextField.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/DefaultCssAutoCompleteTextField.java Fri Aug 13 07:17:16 2010
@@ -16,8 +16,9 @@
  */
 package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
 
-import org.apache.wicket.behavior.HeaderContributor;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.resource.PackageResourceReference;
 
 /**
  * An {@link AutoCompleteTextField} which automatically includes the default CSS for the
@@ -41,8 +42,15 @@ public abstract class DefaultCssAutoComp
 	public DefaultCssAutoCompleteTextField(String string, IModel<T> model)
 	{
 		super(string, model);
-		add(HeaderContributor.forCss(DefaultCssAutoCompleteTextField.class,
-			"DefaultCssAutoCompleteTextField.css"));
+	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+
+		response.renderCSSReference(new PackageResourceReference(
+			DefaultCssAutoCompleteTextField.class, "DefaultCssAutoCompleteTextField.css"));
 	}
 
 }

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java Fri Aug 13 07:17:16 2010
@@ -20,9 +20,9 @@ import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.IInitializer;
 import org.apache.wicket.behavior.AbstractBehavior;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
@@ -119,13 +119,6 @@ public class UploadProgressBar extends P
 		}
 		setRenderBodyOnly(true);
 
-		add(HeaderContributor.forJavaScript(JS));
-		ResourceReference css = getCss();
-		if (css != null)
-		{
-			add(HeaderContributor.forCss(css));
-		}
-
 		final WebMarkupContainer barDiv = new WebMarkupContainer("bar");
 		barDiv.setOutputMarkupId(true);
 		add(barDiv);
@@ -153,6 +146,18 @@ public class UploadProgressBar extends P
 		return CSS;
 	}
 
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		response.renderJavascriptReference(JS);
+		ResourceReference css = getCss();
+		if (css != null)
+		{
+			response.renderCSSReference(css);
+		}
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	protected void onRemove()

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java Fri Aug 13 07:17:16 2010
@@ -24,8 +24,9 @@ import org.apache.wicket.ajax.AbstractDe
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 import org.apache.wicket.ajax.calldecorator.CancelEventIfNoAjaxDecorator;
-import org.apache.wicket.behavior.HeaderContributor;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow.PageCreator;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.AbstractRepeater;
@@ -250,9 +251,14 @@ public class ModalWindow extends Panel
 
 		add(new CloseButtonBehavior());
 		add(new WindowClosedBehavior());
+	}
 
-		add(HeaderContributor.forJavaScript(JAVASCRIPT));
-		add(HeaderContributor.forCss(CSS));
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		response.renderJavascriptReference(JAVASCRIPT);
+		response.renderCSSReference(CSS);
 	}
 
 	/**

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java Fri Aug 13 07:17:16 2010
@@ -26,7 +26,6 @@ import org.apache.wicket.extensions.mark
 import org.apache.wicket.extensions.markup.html.form.palette.component.Recorder;
 import org.apache.wicket.extensions.markup.html.form.palette.component.Selection;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -75,7 +74,7 @@ import org.apache.wicket.request.resourc
  *            Type of model object
  * 
  */
-public class Palette<T> extends Panel implements IHeaderContributor
+public class Palette<T> extends Panel
 {
 	private static final String SELECTED_HEADER_ID = "selectedHeader";
 
@@ -524,7 +523,7 @@ public class Palette<T> extends Panel im
 		modelChanged();
 
 		// call model.setObject()
-		((IModel<Object>) getDefaultModel()).setObject(model);
+		((IModel<Object>)getDefaultModel()).setObject(model);
 	}
 
 	/**
@@ -637,6 +636,7 @@ public class Palette<T> extends Panel im
 	 * 
 	 * @param response
 	 */
+	@Override
 	public void renderHead(IHeaderResponse response)
 	{
 		response.renderJavascriptReference(JAVASCRIPT);

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java Fri Aug 13 07:17:16 2010
@@ -25,9 +25,9 @@ import org.apache.wicket.MarkupContainer
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.tree.AbstractTree;
@@ -148,7 +148,6 @@ public abstract class DefaultAbstractTre
 	public DefaultAbstractTree(String id)
 	{
 		super(id);
-		init();
 	}
 
 	/**
@@ -162,7 +161,6 @@ public abstract class DefaultAbstractTre
 	public DefaultAbstractTree(String id, IModel<TreeModel> model)
 	{
 		super(id, model);
-		init();
 	}
 
 	/**
@@ -177,7 +175,6 @@ public abstract class DefaultAbstractTre
 	{
 		super(id, new WicketTreeModel());
 		setModelObject(model);
-		init();
 	}
 
 	/**
@@ -536,8 +533,8 @@ public abstract class DefaultAbstractTre
 			{
 				super.onComponentTag(tag);
 				IRequestHandler handler = new ResourceReferenceRequestHandler(getNodeIcon(node));
-				tag.put("style", "background-image: url('" +
-					RequestCycle.get().renderUrlFor(handler) + "')");
+				tag.put("style",
+					"background-image: url('" + RequestCycle.get().renderUrlFor(handler) + "')");
 			}
 		};
 
@@ -597,18 +594,6 @@ public abstract class DefaultAbstractTre
 	}
 
 	/**
-	 * Performs the tree initialization. Adds header contribution for the stylesheet.
-	 */
-	private void init()
-	{
-		ResourceReference css = getCSS();
-		if (css != null)
-		{
-			add(HeaderContributor.forCss(css.getScope(), css.getName()));
-		}
-	}
-
-	/**
 	 * Returns whether the provided node is last child of it's parent.
 	 * 
 	 * @param node
@@ -627,4 +612,15 @@ public abstract class DefaultAbstractTre
 			return parent.getChildAt(parent.getChildCount() - 1).equals(node);
 		}
 	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		ResourceReference css = getCSS();
+		if (css != null)
+		{
+			response.renderCSSReference(css);
+		}
+	}
 }

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java Fri Aug 13 07:17:16 2010
@@ -19,8 +19,8 @@ package org.apache.wicket.extensions.rat
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.behavior.SimpleAttributeModifier;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.Loop;
@@ -187,6 +187,8 @@ public abstract class RatingPanel extend
 	 */
 	private Component ratingLabel;
 
+	private final boolean addDefaultCssStyle;
+
 	/**
 	 * Constructs a rating component with 5 stars, using a compound property model as its model to
 	 * retrieve the rating.
@@ -291,6 +293,7 @@ public abstract class RatingPanel extend
 		IModel<Integer> nrOfVotes, IModel<Boolean> hasVoted, boolean addDefaultCssStyle)
 	{
 		super(id, rating);
+		this.addDefaultCssStyle = addDefaultCssStyle;
 
 		this.nrOfStars = wrap(nrOfStars);
 		this.nrOfVotes = wrap(nrOfVotes);
@@ -310,20 +313,18 @@ public abstract class RatingPanel extend
 		// don't render the outer tags in the target document, just the div that
 		// is inside the panel.
 		setRenderBodyOnly(true);
+	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
 		if (addDefaultCssStyle)
 		{
-			addDefaultCssStyle();
+			response.renderCSSReference(new PackageResourceReference(RatingPanel.class,
+				"RatingPanel.css"));
 		}
-	}
 
-	/**
-	 * Will let the rating panel contribute a CSS include to the page's header. It will add
-	 * RatingPanel.css from this package. This method is typically called by the class that creates
-	 * the rating panel.
-	 */
-	public final void addDefaultCssStyle()
-	{
-		add(HeaderContributor.forCss(RatingPanel.class, "RatingPanel.css"));
 	}
 
 	/**

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.java Fri Aug 13 07:17:16 2010
@@ -19,13 +19,14 @@ package org.apache.wicket.extensions.wiz
 import java.util.Iterator;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.request.resource.PackageResourceReference;
 
 
 /**
@@ -79,6 +80,8 @@ public class Wizard extends Panel implem
 	/** The wizard model. */
 	private IWizardModel wizardModel;
 
+	private final boolean addDefaultCssStyle;
+
 	/**
 	 * Construct. Adds the default style.
 	 * <p>
@@ -117,11 +120,7 @@ public class Wizard extends Panel implem
 	public Wizard(String id, boolean addDefaultCssStyle)
 	{
 		super(id);
-
-		if (addDefaultCssStyle)
-		{
-			addDefaultCssStyle();
-		}
+		this.addDefaultCssStyle = addDefaultCssStyle;
 	}
 
 	/**
@@ -158,20 +157,27 @@ public class Wizard extends Panel implem
 		super(id);
 
 		init(wizardModel);
+		this.addDefaultCssStyle = addDefaultCssStyle;
 
-		if (addDefaultCssStyle)
-		{
-			addDefaultCssStyle();
-		}
 	}
 
 	/**
 	 * Will let the wizard contribute a CSS include to the page's header. It will add Wizard.css
 	 * from this package. This method is typically called by the class that creates the wizard.
 	 */
-	public void addDefaultCssStyle()
+	public void addDefaultCssStyle(IHeaderResponse response)
 	{
-		add(HeaderContributor.forCss(Wizard.class, "Wizard.css"));
+		response.renderCSSReference(new PackageResourceReference(Wizard.class, "Wizard.css"));
+	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		if (addDefaultCssStyle)
+		{
+			addDefaultCssStyle(response);
+		}
 	}
 
 	/**

Added: wicket/trunk/wicket/Wicket - Regenerate Tests.launch
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/Wicket%20-%20Regenerate%20Tests.launch?rev=985109&view=auto
==============================================================================
--- wicket/trunk/wicket/Wicket - Regenerate Tests.launch (added)
+++ wicket/trunk/wicket/Wicket - Regenerate Tests.launch Fri Aug 13 07:17:16 2010
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<stringAttribute key="bad_container_name" value="\wicket\regenerate-tests"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/wicket/src/test/java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="2"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=wicket/src\/test\/java"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="wicket"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dwicket.replace.expected.results=true"/>
+</launchConfiguration>

Propchange: wicket/trunk/wicket/Wicket - Regenerate Tests.launch
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Fri Aug 13 07:17:16 2010
@@ -216,7 +216,12 @@ import org.slf4j.LoggerFactory;
  * @author Juergen Donnerstag
  * @author Igor Vaynberg (ivaynberg)
  */
-public abstract class Component implements IClusterable, IConverterLocator, IRequestableComponent
+public abstract class Component
+	implements
+		IClusterable,
+		IConverterLocator,
+		IRequestableComponent,
+		IHeaderContributor
 {
 
 	/** True when component has been configured, had {@link #onConfigure()} called */
@@ -2803,24 +2808,21 @@ public abstract class Component implemen
 
 			IHeaderResponse response = container.getHeaderResponse();
 
-			// First check the component itself (implements IHeaderContributor)
-			if (this instanceof IHeaderContributor)
+			// Allow component to contribute
+			if (response.wasRendered(this) == false)
 			{
-				if (response.wasRendered(this) == false)
-				{
-					((IHeaderContributor)this).renderHead(response);
-					response.markRendered(this);
-				}
+				renderHead(response);
+				response.markRendered(this);
 			}
 
 			// Than ask all behaviors
 			for (IBehavior behavior : getBehaviors())
 			{
-				if ((behavior instanceof IHeaderContributor) && isBehaviorAccepted(behavior))
+				if (isBehaviorAccepted(behavior))
 				{
 					if (response.wasRendered(behavior) == false)
 					{
-						((IHeaderContributor)behavior).renderHead(response);
+						behavior.renderHead(response);
 						response.markRendered(behavior);
 					}
 				}
@@ -4489,4 +4491,9 @@ public abstract class Component implemen
 	{
 		return isEnabledInHierarchy() && isVisibleInHierarchy();
 	}
+
+	public void renderHead(IHeaderResponse response)
+	{
+		// noop
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java Fri Aug 13 07:17:16 2010
@@ -163,7 +163,8 @@ public abstract class AbstractDefaultAja
 	 * @param partialCall
 	 *            Javascript of a partial call to the function performing the actual ajax callback.
 	 *            Must be in format <code>function(params,</code> with signature
-	 *            <code>function(params, onSuccessHandler, onFailureHandler</code>. Example: <code>wicketAjaxGet('callbackurl'</code>
+	 *            <code>function(params, onSuccessHandler, onFailureHandler</code>. Example:
+	 *            <code>wicketAjaxGet('callbackurl'</code>
 	 * 
 	 * @return script that performs ajax callback to this behavior
 	 */
@@ -182,7 +183,7 @@ public abstract class AbstractDefaultAja
 
 		if (decorator != null)
 		{
-			success = decorator.decorateOnSuccessScript(success);
+			success = decorator.decorateOnSuccessScript(getComponent(), success);
 		}
 
 		if (!Strings.isEmpty(indicatorId))
@@ -194,7 +195,7 @@ public abstract class AbstractDefaultAja
 
 		if (decorator != null)
 		{
-			failure = decorator.decorateOnFailureScript(failure);
+			failure = decorator.decorateOnFailureScript(getComponent(), failure);
 		}
 
 		AppendingStringBuffer buff = new AppendingStringBuffer(256);
@@ -236,7 +237,7 @@ public abstract class AbstractDefaultAja
 
 		if (decorator != null)
 		{
-			call = decorator.decorateScript(call);
+			call = decorator.decorateScript(getComponent(), call);
 		}
 
 		return call;

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/IAjaxCallDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/IAjaxCallDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/IAjaxCallDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/IAjaxCallDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.IClusterable;
 
 /**
@@ -67,25 +68,28 @@ public interface IAjaxCallDecorator exte
 	/**
 	 * Decorates the script that performs the ajax call
 	 * 
+	 * @param component
 	 * @param script
 	 * @return decorated script
 	 */
-	CharSequence decorateScript(CharSequence script);
+	CharSequence decorateScript(Component component, CharSequence script);
 
 	/**
 	 * Decorates the onSuccess handler script
 	 * 
+	 * @param component
 	 * @param script
 	 * @return decorated onSuccess handler script
 	 */
-	CharSequence decorateOnSuccessScript(CharSequence script);
+	CharSequence decorateOnSuccessScript(Component component, CharSequence script);
 
 	/**
 	 * Decorates the onFailure handler script
 	 * 
+	 * @param component
 	 * @param script
 	 * @return decorated onFailure handler script
 	 */
-	CharSequence decorateOnFailureScript(CharSequence script);
+	CharSequence decorateOnFailureScript(Component component, CharSequence script);
 
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax.calldecorator;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 
 /**
@@ -39,7 +40,7 @@ public abstract class AjaxCallDecorator 
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateScript(CharSequence)
 	 */
-	public CharSequence decorateScript(CharSequence script)
+	public CharSequence decorateScript(Component c, CharSequence script)
 	{
 		return script;
 	}
@@ -47,7 +48,7 @@ public abstract class AjaxCallDecorator 
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnSuccessScript(CharSequence)
 	 */
-	public CharSequence decorateOnSuccessScript(CharSequence script)
+	public CharSequence decorateOnSuccessScript(Component c, CharSequence script)
 	{
 		return script;
 	}
@@ -55,7 +56,7 @@ public abstract class AjaxCallDecorator 
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnFailureScript(CharSequence)
 	 */
-	public CharSequence decorateOnFailureScript(CharSequence script)
+	public CharSequence decorateOnFailureScript(Component c, CharSequence script)
 	{
 		return script;
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallThrottlingDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallThrottlingDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallThrottlingDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxCallThrottlingDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax.calldecorator;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 import org.apache.wicket.util.string.Strings;
@@ -81,7 +82,7 @@ public final class AjaxCallThrottlingDec
 	 * @see org.apache.wicket.ajax.calldecorator.AjaxPostprocessingCallDecorator#postDecorateScript(CharSequence)
 	 */
 	@Override
-	public final CharSequence postDecorateScript(CharSequence script)
+	public final CharSequence postDecorateScript(Component c, CharSequence script)
 	{
 		return AbstractDefaultAjaxBehavior.throttleScript(script, id, duration);
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPostprocessingCallDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPostprocessingCallDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPostprocessingCallDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPostprocessingCallDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax.calldecorator;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 
 /**
@@ -48,31 +49,27 @@ public abstract class AjaxPostprocessing
 	}
 
 
-	/**
-	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateScript(CharSequence)
-	 */
-	public final CharSequence decorateScript(CharSequence script)
+	/** {@inheritDoc} */
+	public final CharSequence decorateScript(Component component, CharSequence script)
 	{
-		CharSequence s = (delegate == null) ? script : delegate.decorateScript(script);
-		return postDecorateScript(s);
+		CharSequence s = (delegate == null) ? script : delegate.decorateScript(component, script);
+		return postDecorateScript(component, s);
 	}
 
-	/**
-	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnSuccessScript(CharSequence)
-	 */
-	public final CharSequence decorateOnSuccessScript(CharSequence script)
+	/** {@inheritDoc} */
+	public final CharSequence decorateOnSuccessScript(Component component, CharSequence script)
 	{
-		CharSequence s = (delegate == null) ? script : delegate.decorateOnSuccessScript(script);
-		return postDecorateOnSuccessScript(s);
+		CharSequence s = (delegate == null) ? script : delegate.decorateOnSuccessScript(component,
+			script);
+		return postDecorateOnSuccessScript(component, s);
 	}
 
-	/**
-	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnFailureScript(CharSequence)
-	 */
-	public final CharSequence decorateOnFailureScript(CharSequence script)
+	/** {@inheritDoc} */
+	public final CharSequence decorateOnFailureScript(Component component, CharSequence script)
 	{
-		CharSequence s = (delegate == null) ? script : delegate.decorateOnFailureScript(script);
-		return postDecorateOnFailureScript(s);
+		CharSequence s = (delegate == null) ? script : delegate.decorateOnFailureScript(component,
+			script);
+		return postDecorateOnFailureScript(component, s);
 	}
 
 
@@ -82,7 +79,7 @@ public abstract class AjaxPostprocessing
 	 * @param script
 	 * @return decorated script
 	 */
-	public CharSequence postDecorateScript(CharSequence script)
+	public CharSequence postDecorateScript(Component component, CharSequence script)
 	{
 		return script;
 	}
@@ -93,7 +90,7 @@ public abstract class AjaxPostprocessing
 	 * @param script
 	 * @return decorated script
 	 */
-	public CharSequence postDecorateOnSuccessScript(CharSequence script)
+	public CharSequence postDecorateOnSuccessScript(Component component, CharSequence script)
 	{
 		return script;
 	}
@@ -104,7 +101,7 @@ public abstract class AjaxPostprocessing
 	 * @param script
 	 * @return decorated script
 	 */
-	public CharSequence postDecorateOnFailureScript(CharSequence script)
+	public CharSequence postDecorateOnFailureScript(Component component, CharSequence script)
 	{
 		return script;
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPreprocessingCallDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPreprocessingCallDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPreprocessingCallDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/AjaxPreprocessingCallDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax.calldecorator;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 
 /**
@@ -47,30 +48,30 @@ public class AjaxPreprocessingCallDecora
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateScript(CharSequence)
 	 */
-	public CharSequence decorateScript(CharSequence script)
+	public CharSequence decorateScript(Component c, CharSequence script)
 	{
 		CharSequence s = preDecorateScript(script);
-		return (delegate == null) ? s : delegate.decorateScript(s);
+		return (delegate == null) ? s : delegate.decorateScript(c, s);
 
 	}
 
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnSuccessScript(CharSequence)
 	 */
-	public CharSequence decorateOnSuccessScript(CharSequence script)
+	public CharSequence decorateOnSuccessScript(Component c, CharSequence script)
 	{
 		CharSequence s = preDecorateOnSuccessScript(script);
-		return (delegate == null) ? s : delegate.decorateOnSuccessScript(s);
+		return (delegate == null) ? s : delegate.decorateOnSuccessScript(c, s);
 	}
 
 	/**
 	 * @see org.apache.wicket.ajax.IAjaxCallDecorator#decorateOnFailureScript(CharSequence)
 	 */
-	public CharSequence decorateOnFailureScript(CharSequence script)
+	public CharSequence decorateOnFailureScript(Component c, CharSequence script)
 	{
 		CharSequence s = preDecorateOnFailureScript(script);
 
-		return (delegate == null) ? s : delegate.decorateOnFailureScript(s);
+		return (delegate == null) ? s : delegate.decorateOnFailureScript(c, s);
 	}
 
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/CancelEventIfNoAjaxDecorator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/CancelEventIfNoAjaxDecorator.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/CancelEventIfNoAjaxDecorator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/calldecorator/CancelEventIfNoAjaxDecorator.java Fri Aug 13 07:17:16 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.ajax.calldecorator;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.IAjaxCallDecorator;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 
@@ -59,7 +60,7 @@ public final class CancelEventIfNoAjaxDe
 	 * @see org.apache.wicket.ajax.calldecorator.AjaxPostprocessingCallDecorator#postDecorateScript(CharSequence)
 	 */
 	@Override
-	public final CharSequence postDecorateScript(CharSequence script)
+	public final CharSequence postDecorateScript(Component c, CharSequence script)
 	{
 		return script + "return !" + IAjaxCallDecorator.WICKET_CALL_RESULT_VAR + ";";
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java Fri Aug 13 07:17:16 2010
@@ -19,6 +19,7 @@ package org.apache.wicket.behavior;
 import org.apache.wicket.Component;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.request.Response;
 
 /**
@@ -29,8 +30,9 @@ import org.apache.wicket.request.Respons
  * @author Ralf Ebert
  * @author Igor Vaynberg
  */
-public abstract class AbstractAjaxBehavior extends AbstractHeaderContributor
+public abstract class AbstractAjaxBehavior extends AbstractBehavior
 	implements
+		IHeaderContributor,
 		IBehaviorListener
 {
 	private static final long serialVersionUID = 1L;

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractBehavior.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractBehavior.java Fri Aug 13 07:17:16 2010
@@ -18,6 +18,7 @@ package org.apache.wicket.behavior;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderResponse;
 
 /**
  * Adapter implementation of {@link org.apache.wicket.behavior.IBehavior}. It is recommended to
@@ -162,4 +163,8 @@ public abstract class AbstractBehavior i
 	public void unbind(Component component)
 	{
 	}
+
+	public void renderHead(IHeaderResponse response)
+	{
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehavior.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/IBehavior.java Fri Aug 13 07:17:16 2010
@@ -19,6 +19,7 @@ package org.apache.wicket.behavior;
 import org.apache.wicket.Component;
 import org.apache.wicket.IClusterable;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderContributor;
 
 /**
  * Behaviors are kind of plug-ins for Components. They allow functionality to be added to a
@@ -48,7 +49,7 @@ import org.apache.wicket.markup.Componen
  * @author Eelco Hillenius
  * @author Igor Vaynberg (ivaynberg)
  */
-public interface IBehavior extends IClusterable
+public interface IBehavior extends IClusterable, IHeaderContributor
 {
 	/**
 	 * Called when a component is about to render.

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/IHeaderResponse.java Fri Aug 13 07:17:16 2010
@@ -116,6 +116,7 @@ public interface IHeaderResponse
 	 * @param media
 	 *            the media type for this CSS ("print", "screen", etc.)
 	 */
+	// TODO make media an enum
 	public void renderCSSReference(String url, String media);
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java Fri Aug 13 07:17:16 2010
@@ -26,6 +26,7 @@ import org.apache.wicket.markup.html.IHe
 import org.apache.wicket.markup.html.WicketEventReference;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Response;
+import org.apache.wicket.request.Url;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.request.resource.ResourceReference;
@@ -55,7 +56,7 @@ public abstract class HeaderResponse imp
 	{
 		if (Application.exists())
 		{
-			// @TODO remove in 1.5; see IHeaderRenderStrategy
+			// TODO remove in 1.5; see IHeaderRenderStrategy
 			Application.get().notifyRenderHeadListener(this);
 		}
 	}
@@ -81,7 +82,7 @@ public abstract class HeaderResponse imp
 		{
 			IRequestHandler handler = new ResourceReferenceRequestHandler(reference);
 			CharSequence url = RequestCycle.get().renderUrlFor(handler);
-			renderCSSReference(url.toString(), null);
+			internalRenderCSSReference(url.toString(), null);
 		}
 	}
 
@@ -99,7 +100,7 @@ public abstract class HeaderResponse imp
 		{
 			IRequestHandler handler = new ResourceReferenceRequestHandler(reference);
 			CharSequence url = RequestCycle.get().renderUrlFor(handler);
-			renderCSSReference(url.toString(), media);
+			internalRenderCSSReference(url.toString(), media);
 		}
 	}
 
@@ -114,7 +115,7 @@ public abstract class HeaderResponse imp
 		}
 		if (!closed)
 		{
-			renderCSSReference(url, null);
+			internalRenderCSSReference(relative(url), null);
 		}
 	}
 
@@ -124,6 +125,11 @@ public abstract class HeaderResponse imp
 	 */
 	public void renderCSSReference(String url, String media)
 	{
+		internalRenderCSSReference(relative(url), media);
+	}
+
+	private void internalRenderCSSReference(String url, String media)
+	{
 		if (Strings.isEmpty(url))
 		{
 			throw new IllegalArgumentException("url cannot be empty or null");
@@ -149,6 +155,7 @@ public abstract class HeaderResponse imp
 		}
 	}
 
+
 	/**
 	 * @see org.apache.wicket.markup.html.IHeaderResponse#renderJavascriptReference(org.apache.wicket.ResourceReference)
 	 */
@@ -162,7 +169,7 @@ public abstract class HeaderResponse imp
 		{
 			IRequestHandler handler = new ResourceReferenceRequestHandler(reference);
 			CharSequence url = RequestCycle.get().renderUrlFor(handler);
-			renderJavascriptReference(url.toString());
+			internalRenderJavascriptReference(url.toString(), null);
 		}
 	}
 
@@ -180,7 +187,7 @@ public abstract class HeaderResponse imp
 		{
 			IRequestHandler handler = new ResourceReferenceRequestHandler(reference);
 			CharSequence url = RequestCycle.get().renderUrlFor(handler);
-			renderJavascriptReference(url.toString(), id);
+			internalRenderJavascriptReference(url.toString(), id);
 		}
 	}
 
@@ -189,19 +196,7 @@ public abstract class HeaderResponse imp
 	 */
 	public void renderJavascriptReference(String url)
 	{
-		if (Strings.isEmpty(url))
-		{
-			throw new IllegalArgumentException("url cannot be empty or null");
-		}
-		if (!closed)
-		{
-			List<Object> token = Arrays.asList(new Object[] { "javascript", url });
-			if (wasRendered(token) == false)
-			{
-				JavascriptUtils.writeJavascriptUrl(getResponse(), url);
-				markRendered(token);
-			}
-		}
+		internalRenderJavascriptReference(relative(url), null);
 	}
 
 	/**
@@ -210,6 +205,11 @@ public abstract class HeaderResponse imp
 	 */
 	public void renderJavascriptReference(String url, String id)
 	{
+		internalRenderJavascriptReference(relative(url), id);
+	}
+
+	private void internalRenderJavascriptReference(String url, String id)
+	{
 		if (Strings.isEmpty(url))
 		{
 			throw new IllegalArgumentException("url cannot be empty or null");
@@ -217,12 +217,20 @@ public abstract class HeaderResponse imp
 		if (!closed)
 		{
 			List<Object> token1 = Arrays.asList(new Object[] { "javascript", url });
-			List<Object> token2 = Arrays.asList(new Object[] { "javascript", id });
-			if (wasRendered(token1) == false && wasRendered(token2) == false)
+			List<Object> token2 = (id != null) ? Arrays.asList(new Object[] { "javascript", id })
+				: null;
+
+			final boolean token1Unused = wasRendered(token1) == false;
+			final boolean token2Unused = (token2 != null) ? wasRendered(token2) == false : true;
+
+			if (token1Unused && token2Unused)
 			{
 				JavascriptUtils.writeJavascriptUrl(getResponse(), url, id);
 				markRendered(token1);
-				markRendered(token2);
+				if (token2 != null)
+				{
+					markRendered(token2);
+				}
 			}
 		}
 	}
@@ -352,6 +360,23 @@ public abstract class HeaderResponse imp
 	}
 
 	/**
+	 * 
+	 * @param location
+	 * @return relative path
+	 */
+	private final String relative(final String location)
+	{
+		if (location.startsWith("http://") || location.startsWith("https://") ||
+			location.startsWith("/"))
+		{
+			return location;
+		}
+
+		RequestCycle rc = RequestCycle.get();
+		return rc.getUrlRenderer().renderUrl(Url.parse(location, rc.getRequest().getCharset()));
+	}
+
+	/**
 	 * Once the HeaderResponse is closed, no output may be written to it anymore. To enforce that,
 	 * the {@link #getResponse()} is defined final in this class and will return a NullResponse
 	 * instance once closed or otherwise the Response provided by this method.

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Fri Aug 13 07:17:16 2010
@@ -30,9 +30,10 @@ import javax.swing.tree.TreeModel;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
 import org.apache.wicket.markup.html.list.AbstractItem;
@@ -59,7 +60,8 @@ public abstract class AbstractTree exten
 	implements
 		ITreeStateListener,
 		TreeModelListener,
-		AjaxRequestTarget.ITargetRespondListener
+		AjaxRequestTarget.ITargetRespondListener,
+		IHeaderContributor
 {
 
 	/**
@@ -1277,8 +1279,6 @@ public abstract class AbstractTree exten
 		itemContainer = new TreeItemContainer("i");
 		add(itemContainer);
 
-		add(HeaderContributor.forJavaScript(JAVASCRIPT));
-
 		checkModel();
 	}
 
@@ -1658,4 +1658,9 @@ public abstract class AbstractTree exten
 	{
 		return nodeToItemMap.get(node);
 	}
+
+	public void renderHead(IHeaderResponse response)
+	{
+		response.renderJavascriptReference(JAVASCRIPT);
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java Fri Aug 13 07:17:16 2010
@@ -25,8 +25,8 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.behavior.AbstractBehavior;
-import org.apache.wicket.behavior.HeaderContributor;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.IModel;
@@ -65,12 +65,6 @@ public abstract class BaseTree extends A
 	public BaseTree(String id, IModel<TreeModel> model)
 	{
 		super(id, model);
-
-		ResourceReference css = getCSS();
-		if (css != null)
-		{
-			add(HeaderContributor.forCss(css));
-		}
 	}
 
 	// default stylesheet resource
@@ -509,5 +503,17 @@ public abstract class BaseTree extends A
 		return false;
 	}
 
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		ResourceReference css = getCSS();
+		if (css != null)
+		{
+			response.renderCSSReference(css);
+		}
+
+	}
+
 	private LinkType linkType = LinkType.AJAX;
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_ajax_expected.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_ajax_expected.html?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_ajax_expected.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_ajax_expected.html Fri Aug 13 07:17:16 2010
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?><ajax-response><evaluate><![CDATA[prepend();]]></evaluate><header-contribution><![CDATA[<head xmlns:wicket="http://wicket.apache.org">
 <link href="../test"/>
-<script type="text/javascript" src="javascripturl"></script>
+<script type="text/javascript" src="../javascripturl"></script>
 </head>]]></header-contribution><component id="test11" ><![CDATA[<span wicket:id="test1" id="test11"><wicket:panel>
 test
 </wicket:panel></span>]]></component><component id="test22" ><![CDATA[<span wicket:id="test2" id="test22"><wicket:panel>
@@ -9,7 +9,7 @@ test
 test
 </wicket:panel></span>]]></component><header-contribution><![CDATA[<head xmlns:wicket="http://wicket.apache.org">
 <link href="../test2"/>
-<script type="text/javascript" src="javascripturlB"></script>
+<script type="text/javascript" src="../javascripturlB"></script>
 </head>]]></header-contribution><component id="btest14" ><![CDATA[<span wicket:id="btest1" id="btest14"><wicket:panel>
 test
 </wicket:panel></span>]]></component><component id="btest25" ><![CDATA[<span wicket:id="btest2" id="btest25"><wicket:panel>

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html Fri Aug 13 07:17:16 2010
@@ -1,7 +1,7 @@
 <html>
 <head>
 <link href="../../test"/>
-<script type="text/javascript" src="javascripturl"></script>
+<script type="text/javascript" src="../../javascripturl"></script>
 <script type="text/javascript" src="../resource/org.apache.wicket.markup.html.WicketEventReference/wicket-event.js"></script>
 <script type="text/javascript" ><!--/*--><![CDATA[/*><!--*/
 Wicket.Event.add(window, "domready", function(event) { domReady();;});
@@ -11,7 +11,7 @@ Wicket.Event.add(window, "load", functio
 /*-->]]>*/</script>
 
 <link href="../../test2"/>
-<script type="text/javascript" src="javascripturlB"></script>
+<script type="text/javascript" src="../../javascripturlB"></script>
 <script type="text/javascript" ><!--/*--><![CDATA[/*><!--*/
 Wicket.Event.add(window, "domready", function(event) { domReadyB();;});
 /*-->]]>*/</script>

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_ajax_expected.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_ajax_expected.html?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_ajax_expected.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_ajax_expected.html Fri Aug 13 07:17:16 2010
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?><ajax-response><evaluate><![CDATA[prepend();]]></evaluate><header-contribution><![CDATA[<head xmlns:wicket="http://wicket.apache.org">
 <link href="../test"/>
-<script type="text/javascript" src="javascripturl"></script>
+<script type="text/javascript" src="../javascripturl"></script>
 </head>]]></header-contribution><component id="test11" ><![CDATA[<span wicket:id="test1" id="test11"><wicket:panel>
 test
 </wicket:panel></span>]]></component><component id="test22" ><![CDATA[<span wicket:id="test2" id="test22"><wicket:panel>

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html Fri Aug 13 07:17:16 2010
@@ -1,7 +1,7 @@
 <html>
 <head>
 <link href="../../test"/>
-<script type="text/javascript" src="javascripturl"></script>
+<script type="text/javascript" src="../../javascripturl"></script>
 <script type="text/javascript" src="../resource/org.apache.wicket.markup.html.WicketEventReference/wicket-event.js"></script>
 <script type="text/javascript" ><!--/*--><![CDATA[/*><!--*/
 Wicket.Event.add(window, "domready", function(event) { domReady();;});

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPostprocessingCallDecoratorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPostprocessingCallDecoratorTest.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPostprocessingCallDecoratorTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPostprocessingCallDecoratorTest.java Fri Aug 13 07:17:16 2010
@@ -19,6 +19,7 @@ package org.apache.wicket.ajax;
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.calldecorator.AjaxPostprocessingCallDecorator;
 
 /**
@@ -37,17 +38,17 @@ public class AjaxPostprocessingCallDecor
 		{
 			private static final long serialVersionUID = 1L;
 
-			public CharSequence decorateScript(CharSequence script)
+			public CharSequence decorateScript(Component component, CharSequence script)
 			{
 				return "^" + script;
 			}
 
-			public CharSequence decorateOnSuccessScript(CharSequence script)
+			public CharSequence decorateOnSuccessScript(Component component, CharSequence script)
 			{
 				return "^s" + script;
 			}
 
-			public CharSequence decorateOnFailureScript(CharSequence script)
+			public CharSequence decorateOnFailureScript(Component component, CharSequence script)
 			{
 				return "^f" + script;
 			}
@@ -57,21 +58,21 @@ public class AjaxPostprocessingCallDecor
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public CharSequence postDecorateScript(CharSequence script)
+			public CharSequence postDecorateScript(Component component, CharSequence script)
 			{
-				return "-" + super.postDecorateScript(script);
+				return "-" + super.postDecorateScript(component, script);
 			}
 
 			@Override
-			public CharSequence postDecorateOnSuccessScript(CharSequence script)
+			public CharSequence postDecorateOnSuccessScript(Component component, CharSequence script)
 			{
-				return "-s" + super.postDecorateOnSuccessScript(script);
+				return "-s" + super.postDecorateOnSuccessScript(component, script);
 			}
 
 			@Override
-			public CharSequence postDecorateOnFailureScript(CharSequence script)
+			public CharSequence postDecorateOnFailureScript(Component component, CharSequence script)
 			{
-				return "-f" + super.postDecorateOnFailureScript(script);
+				return "-f" + super.postDecorateOnFailureScript(component, script);
 			}
 		};
 	}
@@ -79,18 +80,18 @@ public class AjaxPostprocessingCallDecor
 	/** test script */
 	public void testDecorateScript()
 	{
-		Assert.assertEquals("-^.", decorator.decorateScript("."));
+		Assert.assertEquals("-^.", decorator.decorateScript(null, "."));
 	}
 
 	/** test script */
 	public void testDecorateOnSuccessScript()
 	{
-		Assert.assertEquals("-s^s.", decorator.decorateOnSuccessScript("."));
+		Assert.assertEquals("-s^s.", decorator.decorateOnSuccessScript(null, "."));
 	}
 
 	/** test script */
 	public void testDecorateOnFailureScript()
 	{
-		Assert.assertEquals("-f^f.", decorator.decorateOnFailureScript("."));
+		Assert.assertEquals("-f^f.", decorator.decorateOnFailureScript(null, "."));
 	}
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPreprocessingCallDecoratorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPreprocessingCallDecoratorTest.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPreprocessingCallDecoratorTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/AjaxPreprocessingCallDecoratorTest.java Fri Aug 13 07:17:16 2010
@@ -19,6 +19,7 @@ package org.apache.wicket.ajax;
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.calldecorator.AjaxPreprocessingCallDecorator;
 
 /**
@@ -37,17 +38,17 @@ public class AjaxPreprocessingCallDecora
 		{
 			private static final long serialVersionUID = 1L;
 
-			public CharSequence decorateScript(CharSequence script)
+			public CharSequence decorateScript(Component c, CharSequence script)
 			{
 				return "^" + script;
 			}
 
-			public CharSequence decorateOnSuccessScript(CharSequence script)
+			public CharSequence decorateOnSuccessScript(Component c, CharSequence script)
 			{
 				return "^s" + script;
 			}
 
-			public CharSequence decorateOnFailureScript(CharSequence script)
+			public CharSequence decorateOnFailureScript(Component c, CharSequence script)
 			{
 				return "^f" + script;
 			}
@@ -79,18 +80,18 @@ public class AjaxPreprocessingCallDecora
 	/** test decorator */
 	public void testDecorateScript()
 	{
-		Assert.assertEquals("^-.", decorator.decorateScript("."));
+		Assert.assertEquals("^-.", decorator.decorateScript(null, "."));
 	}
 
 	/** test decorator */
 	public void testDecorateOnSuccessScript()
 	{
-		Assert.assertEquals("^s-s.", decorator.decorateOnSuccessScript("."));
+		Assert.assertEquals("^s-s.", decorator.decorateOnSuccessScript(null, "."));
 	}
 
 	/** test decorator */
 	public void testDecorateOnFailureScript()
 	{
-		Assert.assertEquals("^f-f.", decorator.decorateOnFailureScript("."));
+		Assert.assertEquals("^f-f.", decorator.decorateOnFailureScript(null, "."));
 	}
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent3.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent3.java?rev=985109&r1=985108&r2=985109&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent3.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent3.java Fri Aug 13 07:17:16 2010
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.ajax;
 
-import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.request.resource.PackageResourceReference;
@@ -24,7 +23,7 @@ import org.apache.wicket.request.resourc
 /**
  * 
  */
-public class MockComponent3 extends Panel implements IHeaderContributor
+public class MockComponent3 extends Panel
 {
 	private static final long serialVersionUID = 1L;
 
@@ -39,6 +38,7 @@ public class MockComponent3 extends Pane
 		super(id);
 	}
 
+	@Override
 	public void renderHead(IHeaderResponse response)
 	{
 		response.renderCSSReference(new PackageResourceReference(MockComponent3.class,