<%@ jet package="org.eclipse.emf.codegen.ecore.templates.model" imports="org.eclipse.emf.codegen.ecore.genmodel.*" class="Plugin"%>
<%
/**
 * Copyright (c) 2002-2004 IBM Corporation and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *
 * Contributors:
 *   IBM - Initial API and implementation
 */
%>
<%GenModel genModel = (GenModel)argument;%>
<%final boolean isJDK50 = genModel.getComplianceLevel().getValue() >= GenJDKLevel.JDK50;%>
<%@ include file="../Header.javajetinc"%>
package <%=genModel.getModelPluginPackageName()%>;

<%genModel.addImport("org.eclipse.emf.common.EMFPlugin");%>
<%genModel.addImport("org.eclipse.emf.common.util.ResourceLocator");%>
<%genModel.markImportLocation(stringBuffer);%>

/**
 * This is the central singleton for the <%=genModel.getModelName()%> model plugin.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
<%if (genModel.hasAPITags()) {%>
 * <%=genModel.getAPITags(genModel.getIndentation(stringBuffer))%>
<%}%>
 * @generated
 */
<%if (isJDK50 && genModel.hasAPIDeprecatedTag()) {%>
@Deprecated
<%}%>
public final class <%=genModel.getModelPluginClassName()%> extends EMFPlugin
{
<%if (genModel.hasCopyrightField()) {%>
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final <%=genModel.getImportedName("java.lang.String")%> copyright = <%=genModel.getCopyrightFieldLiteral()%>;<%=genModel.getNonNLS()%>

<%}%>
	/**
	 * Keep track of the singleton.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final <%=genModel.getModelPluginClassName()%> INSTANCE = new <%=genModel.getModelPluginClassName()%>();

<%if (genModel.getRuntimePlatform() != GenRuntimePlatform.GWT) {%>
	/**
	 * Keep track of the singleton.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static Implementation plugin;

<%}%>
	/**
	 * Create the instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public <%=genModel.getModelPluginClassName()%>()
	{
		super(new ResourceLocator [] {});
	}

	/**
	 * Returns the singleton instance of the Eclipse plugin.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the singleton instance.
	 * @generated
	 */
<%if (genModel.useClassOverrideAnnotation()) {%>
	@Override
<%}%>
	public ResourceLocator getPluginResourceLocator()
	{
<%if (genModel.getRuntimePlatform() == GenRuntimePlatform.GWT) {%>
		return null;
<%} else {%>
		return plugin;
<%}%>
	}

<%if (genModel.getRuntimePlatform() != GenRuntimePlatform.GWT) {%>
	/**
	 * Returns the singleton instance of the Eclipse plugin.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the singleton instance.
	 * @generated
	 */
	public static Implementation getPlugin()
	{
		return plugin;
	}

	/**
	 * The actual implementation of the Eclipse <b>Plugin</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static class Implementation extends EclipsePlugin
	{
		/**
		 * Creates an instance.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
<%if (genModel.needsRuntimeCompatibility()) {%>
		 * @param descriptor the description of the plugin.
<%}%>
		 * @generated
		 */
		public Implementation(<%if (genModel.needsRuntimeCompatibility()) {%><%=genModel.getImportedName("org.eclipse.core.runtime.IPluginDescriptor")%> descriptor<%}%>)
		{
			super(<%if (genModel.needsRuntimeCompatibility()) {%>descriptor<%}%>);

			// Remember the static instance.
			//
			plugin = this;
		}
<%if (genModel.isOSGiCompatible()) {%>
	
		/**
		 * The actual implementation of the purely OSGi-compatible <b>Bundle Activator</b>.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final class Activator extends <%=genModel.getImportedName("org.eclipse.emf.common.EMFPlugin")%>.OSGiDelegatingBundleActivator
		{
<%if (genModel.useClassOverrideAnnotation()) {%>
			@Override
<%}%>
			protected <%=genModel.getImportedName("org.osgi.framework.BundleActivator")%> createBundle()
			{
				return new Implementation();
			}
		}
<%}%>
	}

<%}%>
}
<%genModel.emitSortedImports();%>
