/**
 *                                                                            
 *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
 *                                                                            
 *  All rights reserved. This program and the accompanying materials           
 *  are made available under the terms of the Eclipse Public License v1.0       
 *  which accompanies this distribution, and is available at                  
 *  http://www.eclipse.org/legal/epl-v10.html                                 
 *                                                                            
 *  Contributors:                                                      
 * 	   Florian Pirchner - Initial implementation
 * 
 */
package org.eclipse.osbp.ecview.extension.strategy;

import org.osgi.service.component.annotations.Component;

import org.eclipse.osbp.ecview.extension.api.ILayoutingStrategy;
import org.eclipse.osbp.ecview.extension.api.ILayoutingStrategyProvider;

/**
 * The Class CssLayoutLayoutingStrategyProvider.
 */
@Component(immediate = true, service = ILayoutingStrategyProvider.class, property = { "ecview.layouting.id=CssLayoutLayoutingStrategy" })
public class CssLayoutLayoutingStrategyProvider implements
		ILayoutingStrategyProvider {

	/** The Constant ID. */
	public static final String ID = "CssLayoutLayoutingStrategy";

	/* (non-Javadoc)
	 * @see org.eclipse.osbp.ecview.extension.api.ILayoutingStrategyProvider#getStrategy()
	 */
	@Override
	public ILayoutingStrategy getStrategy() {
		return new CssLayoutLayoutingStrategy();
	}

}