/**
 *                                                                            
 *  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 2.0        
 *  which accompanies this distribution, and is available at                  
 *  https://www.eclipse.org/legal/epl-2.0/                                 
 *                                 
 *  SPDX-License-Identifier: EPL-2.0                                 
 *                                                                            
 *  Contributors:                                                      
 * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
 * 
 */

package org.eclipse.osbp.xtext.strategy.ui;

import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;

import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;

/**
 * The Class DatamartDSLEObjectHoverProvider.
 */
public class StrategyDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
	 
    /** The instance. */
    private static StrategyDSLEObjectHoverProvider INSTANCE;

    /** Instance.
	 *
	 * @return the datamart dsle object hover provider
	 */
    public static StrategyDSLEObjectHoverProvider instance() {
        return INSTANCE;
    }

    /** Instantiates a new datamart dsle object hover provider.
	 */
    public StrategyDSLEObjectHoverProvider() {
        super();
        INSTANCE = this;
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider#getDocumentationHoverProvider()
     */
    @Override
    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
        return StrategyDSLEObjectHoverDocumentationProvider.instance();
    }
}
