/*
 * generated by Xtext 2.11.0
 */
package org.eclipse.osbp.xtext.messagedsl.ui;

import com.google.inject.Injector;
import org.eclipse.osbp.xtext.messagedsl.ui.internal.MessagedslActivator;
import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
import org.osgi.framework.Bundle;

/**
 * This class was generated. Customizations should only happen in a newly
 * introduced subclass. 
 */
public class MessageDslExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {

	@Override
	protected Bundle getBundle() {
		return MessagedslActivator.getInstance().getBundle();
	}
	
	@Override
	protected Injector getInjector() {
		return MessagedslActivator.getInstance().getInjector(MessagedslActivator.ORG_ECLIPSE_OSBP_XTEXT_MESSAGEDSL_MESSAGEDSL);
	}
	
}
