/*
 * $Id: OrderByBorder.java 5840 2006-05-24 20:49:09 +0000 (Wed, 24 May 2006)
 * joco01 $ $Revision$ $Date: 2006-05-24 20:49:09 +0000 (Wed, 24 May
 * 2006) $
 * 
 * ==================================================================== Licensed
 * 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 wicket.extensions.markup.html.repeater.data.sort;

import wicket.MarkupContainer;
import wicket.markup.IAlternateParentProvider;
import wicket.markup.html.border.Border;

/**
 * A component that wraps markup with an OrderByLink. This has the advantage of
 * being able to add the attribute modifier to the wrapping element as opposed
 * to the link, so that it can be attached to &lt;th&gt; or any other element.
 * 
 * For example:
 * 
 * &lt;th wicket:id="order-by-border"&gt;Heading&lt;/th&gt;
 * 
 * 
 * @author Igor Vaynberg ( ivaynberg )
 * 
 */
public class OrderByBorder extends Border implements IAlternateParentProvider
{
	private static final long serialVersionUID = 1L;
	
	/**
	 * @param parent
	 *            The parent of this component The parent of this component.
	 * @param id
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator, OrderByLink.ICssProvider) }
	 * @param property
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator, OrderByLink.ICssProvider) }
	 * @param stateLocator
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator, OrderByLink.ICssProvider) }
	 * @param cssProvider
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator, OrderByLink.ICssProvider) }
	 */
	public OrderByBorder(MarkupContainer parent, final String id, String property,
			ISortStateLocator stateLocator, OrderByLink.ICssProvider cssProvider)
	{
		super(parent, id);
		
		OrderByLink link = new OrderByLink(this, "orderByLink", property, stateLocator,
				OrderByLink.VoidCssProvider.getInstance())
		{

			private static final long serialVersionUID = 1L;

			@Override
			protected void onSortChanged()
			{
				OrderByBorder.this.onSortChanged();
			}
		};
		newBorderBodyContainer(link);
		
		add(new OrderByLink.CssModifier(link, cssProvider));
	}
	
	/**
	 * This method is a hook for subclasses to perform an action after sort has
	 * changed
	 */
	protected void onSortChanged()
	{
		// noop
	}

	/**
	 * @param parent
	 *            The parent of this component The parent of this component.
	 * @param id
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator)}
	 * @param property
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator)}
	 * @param stateLocator
	 *            see
	 *            {@link OrderByLink#OrderByLink(MarkupContainer, String, String, ISortStateLocator)}
	 */
	public OrderByBorder(MarkupContainer parent, final String id, String property,
			ISortStateLocator stateLocator)
	{
		this(parent, id, property, stateLocator, OrderByLink.DefaultCssProvider.getInstance());
	}

}

@@ -2712,19 +2712,19 @@
 %0A%09%09%7D;%0A%09%09
-new
+set
 BorderBo

fix Border problem when reloading the page