/*******************************************************************************
 * Copyright (c) 2010, 2011 Willink Transformations 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:
 *     E.D.Willink - initial API and implementation
 *
 * Run As->MWE2 Workflow to regenerate the editor.
 * If it fails with a stack dump, open the Xtext file and do
 * a dummy edit. Generally there is an error in the source file.
 *******************************************************************************/
module GenerateOCLinEcoreEditor

import org.eclipse.emf.mwe.utils.*
import org.eclipse.ocl.examples.build.*
import org.eclipse.ocl.examples.build.utilities.*
import org.eclipse.ocl.examples.build.xtend.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*

var oclInEcore.file.extensions = "oclinecore"
var oclInEcoreProjectName = "org.eclipse.ocl.xtext.oclinecore"
var oclInEcoreRuntimeProject = "../../plugins/${oclInEcoreProjectName}"

/**
 *	Generate the OCLinEcore Editor.
 */
Workflow {
    bean = StandaloneSetup {
		scanClassPath = true
		platformUri = ".."
		registerGeneratedEPackage = "org.eclipse.ocl.xtext.essentialoclcs.EssentialOCLCSPackage"
		registerGeneratedEPackage = "org.eclipse.ocl.xtext.oclinecorecs.OCLinEcoreCSPackage"
		registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel"
		registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.oclinecore/model/OCLinEcoreCS.genmodel"
	}
	
	component = DirectoryCleaner {
		directory = "${oclInEcoreRuntimeProject}/src-gen"
	}
	
	component = DirectoryCleaner {
		directory = "${oclInEcoreRuntimeProject}.ui/src-gen"
	}
	
	component = Generator {
		pathRtProject = oclInEcoreRuntimeProject
		pathUiProject = "${oclInEcoreRuntimeProject}.ui"
		projectNameRt = oclInEcoreProjectName
		projectNameUi = "${oclInEcoreProjectName}.ui"
		mergeManifest = false

		fileHeader =
"/*******************************************************************************
 * Copyright (c) 2011, \${year} Willink Transformations 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:
 *     E.D.Willink - initial API and implementation
 *******************************************************************************/"

		language = {
			uri = "classpath:/org/eclipse/ocl/xtext/oclinecore/OCLinEcore.xtext"
			fileExtensions = oclInEcore.file.extensions
			
			// Java API to access grammar elements (required by several other fragments)
			fragment = grammarAccess.GrammarAccessFragment {}
			
			// generates Java API for the generated EPackages 
//			fragment = ecore.EcoreGeneratorFragment {
//				referencedGenModels = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"  
//				referencedGenModels = "platform:/resource/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel"
//			}
			
			// the serialization component
			fragment = serializer.SerializerFragment {}
			
			// a custom ResourceFactory for use with EMF 
			fragment = resourceFactory.ResourceFactoryFragment {
				fileExtensions = oclInEcore.file.extensions
			}
				
			// the following fragment tries to use the Antlr Generator fragment which can be installed via update manager from http://download.itemis.com/updates/
//			fragment = de.itemis.xtext.antlr.XtextAntlrGeneratorFragment {
//				options = { backtrack = true classSplitting = true }
//			}
			fragment = parser.antlr.XtextAntlrGeneratorFragment {
				options = { backtrack = true classSplitting = true}			
				antlrParam = "-Xconversiontimeout" antlrParam = "10000"
			}
			
			// check-based API for validation
			/*
			fragment = validation.CheckFragment {}
			*/
			 
			// java-based API for validation 
			fragment = validation.JavaValidatorFragment {
                composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
//                composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
            }
            
			// scoping and exporting API
			/*
			fragment = scoping.ImportURIScopingFragment {}
			fragment = exporting.SimpleNamesFragment {}
			*/
			
			// scoping and exporting API 
			fragment = scoping.ImportNamespacesScopingFragment {}
			fragment = exporting.QualifiedNamesFragment {}
			
			// formatter API 
			fragment = formatting.FormatterFragment {}

			// labeling API 
			fragment = labeling.LabelProviderFragment {}

			// outline API 
//			fragment = outline.TransformerFragment {}
//			fragment = outline.OutlineNodeAdapterFactoryFragment {}
			fragment = outline.OutlineTreeProviderFragment {}
			fragment = outline.QuickOutlineFragment {}

			// java-based API for content assistance 
			fragment = contentAssist.JavaBasedContentAssistFragment {}
						
//			fragment = de.itemis.xtext.antlr.XtextAntlrGeneratorFragment {
//				options = { backtrack = true classSplitting = true}
//			}
			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
				options = { backtrack = true classSplitting = true}			
				antlrParam = "-Xconversiontimeout" antlrParam = "10000"
			}

			fragment = builder.BuilderIntegrationFragment {}

			// project wizard (optional) 
			/*
			fragment = projectWizard.SimpleProjectWizardFragment {
				generatorProjectName = "${projectName}.generator" 
				modelFileExtension = file.extensions
			}
			*/
			
			// quickfix API 
			fragment = quickfix.QuickfixProviderFragment {}
				
			// EssentialOCL bindings 
			fragment = fragments.EssentialOCLFragment {}							
			// Support Markup in Hover text 
			fragment = fragments.MarkupHoverFragment {}			
			// *.xtextbin support on Xtext 2.3		
			fragment = fragments.CompatibilityFragment {}			
		}
	}
	component = GenerateGrammarXtend {
		javaFolder = "${oclInEcoreRuntimeProject}/src-gen"
		javaPackageName = "${oclInEcoreProjectName}"
		grammarFileStem = "OCLinEcore"
	}
	component = ConvertToUnixLineEndings {
		directory = "${oclInEcoreRuntimeProject}/src-gen"
	}
	component = ConvertToUnixLineEndings {
		directory = "${oclInEcoreRuntimeProject}.ui/src-gen"
	}
}
