/* 
 * Copyright (c) 2014,2016 Loetz GmbH&Co.KG (Heidelberg)
 * 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:  
 *		Loetz GmbH&Co.KG - Initial implementation 
 */
package org.eclipse.osbp.xtext.menu;

import org.eclipse.xtext.junit4.IInjectorProvider;

import com.google.inject.Injector;

public class MenuDslUiInjectorProvider implements IInjectorProvider {
	
	public Injector getInjector() {
		return org.eclipse.osbp.xtext.menu.ui.internal.MenuDslActivator.getInstance().getInjector("org.eclipse.osbp.xtext.menu.MenuDsl");
	}
	
}
