/**
 *                                                                            
 * 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:   
 * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
 */
package org.eclipse.osbp.xtext.signal.ui;

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

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

public class SignalDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
	 
    private static SignalDSLEObjectHoverProvider INSTANCE;

    public static SignalDSLEObjectHoverProvider instance() {
        return INSTANCE;
    }

    public SignalDSLEObjectHoverProvider() {
        super();
        INSTANCE = this;
    }
    
    @Override
    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
        return SignalDSLEObjectHoverDocumentationProvider.instance();
    }
}
