blob: 93cd2dc94697d2b80c0e1b7e3ade6146f2610fbf [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2013 Willink Transformations, University of York 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:
* Adolfo Sanchez-Barbudo Herrera (University of York) - initial API and implementation
*
* </copyright>
*
*/
module GenerateImperativeOCLEditor
import org.eclipse.emf.mwe.utils.*
import org.eclipse.ocl.examples.build.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*
var grammarURI = "classpath:/org/eclipse/qvto/examples/xtext/imperativeocl/ImperativeOCL.xtext"
var fileExtensions = "iocl"
var projectName = "org.eclipse.qvto.examples.xtext.imperativeocl"
var runtimeProject = "../../examples/${projectName}"
// var generateXtendStub = true
/**
* Generate the ImperativeOCL Editor.
*/
Workflow {
bean = StandaloneSetup {
scanClassPath = true
platformUri = "${runtimeProject}/.."
registerGeneratedEPackage = "org.eclipse.uml2.uml.UMLPackage"
registerGeneratedEPackage = "org.eclipse.uml2.codegen.ecore.genmodel.GenModelPackage"
registerGeneratedEPackage = "org.eclipse.ocl.pivot.PivotPackage"
registerGeneratedEPackage = "org.eclipse.ocl.xtext.basecs.BaseCSPackage"
registerGeneratedEPackage = "org.eclipse.ocl.xtext.essentialoclcs.EssentialOCLCSPackage"
registerGeneratedEPackage = "org.eclipse.qvto.examples.xtext.imperativeoclcs.ImperativeOCLCSPackage"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.pivot/model/Pivot.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.base/model/BaseCS.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.qvto.examples.xtext.imperativeocl/model/ImperativeOCLCS.genmodel"
}
component = DirectoryCleaner {
directory = "${runtimeProject}/src-gen"
}
component = DirectoryCleaner {
directory = "${runtimeProject}.ui/src-gen"
}
component = Generator {
pathRtProject = runtimeProject
pathUiProject = "${runtimeProject}.ui"
pathTestProject = "${runtimeProject}.tests"
projectNameRt = projectName
projectNameUi = "${projectName}.ui"
mergeManifest = false
language = auto-inject {
uri = grammarURI
// Java API to access grammar elements (required by several other fragments)
fragment = grammarAccess.GrammarAccessFragment auto-inject {}
// generates Java API for the generated EPackages
fragment = ecore.EcoreGeneratorFragment auto-inject{
}
// the old serialization component
// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}
// serializer 2.0
fragment = serializer.SerializerFragment auto-inject {
generateStub = false
}
// a custom ResourceFactory for use with EMF
fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
// The antlr parser generator fragment.
fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
options = { backtrack = true classSplitting = true }
antlrParam = "-Xconversiontimeout" antlrParam = "10000"
}
// Xtend-based API for validation
// fragment = validation.ValidatorFragment auto-inject {
// FIXME need to align with JavaValidator used by OCL, otherwise compiler errors
fragment = validation.JavaValidatorFragment auto-inject {
composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
// scoping and exporting API
/*
fragment = scoping.ImportURIScopingFragment {}
fragment = exporting.SimpleNamesFragment {}
*/
// old scoping and exporting API
// fragment = scoping.ImportURIScopingFragment auto-inject {}
// fragment = exporting.SimpleNamesFragment auto-inject {}
// scoping and exporting API
fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
fragment = exporting.QualifiedNamesFragment auto-inject {}
fragment = builder.BuilderIntegrationFragment auto-inject {}
// generator API
//fragment = generator.GeneratorFragment auto-inject {}
// formatter API
fragment = formatting.FormatterFragment auto-inject {}
// labeling API
fragment = labeling.LabelProviderFragment auto-inject {}
// outline API
fragment = outline.OutlineTreeProviderFragment auto-inject{}
fragment = outline.QuickOutlineFragment auto-inject{}
// quickfix API
fragment = quickfix.QuickfixProviderFragment auto-inject {}
// content assist API
fragment = contentAssist.ContentAssistFragment auto-inject {}
// fragment = de.itemis.xtext.antlr.XtextAntlrGeneratorFragment {
// options = { backtrack = true classSplitting = true}
// }
// generates a more lightweight Antlr parser and lexer tailored for content assist
fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
options = { backtrack = true classSplitting = true}
antlrParam = "-Xconversiontimeout" antlrParam = "10000"
}
// generates junit test support classes into Generator#pathTestProject
fragment = junit.Junit4Fragment auto-inject {}
// project wizard (optional)
// fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
// generatorProjectName = "${projectName}"
// }
// rename refactoring
fragment = refactoring.RefactorElementNameFragment auto-inject {}
// quickfix API
fragment = quickfix.QuickfixProviderFragment auto-inject {}
// EssentialOCL bindings
fragment = fragments.EssentialOCLFragment auto-inject{}
// Support Markup in Hover text
fragment = fragments.MarkupHoverFragment auto-inject{}
// *.xtextbin support on Xtext 2.3
fragment = fragments.CompatibilityFragment auto-inject{}
// provides a preference page for template proposals
fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
// provides a compare view
fragment = compare.CompareFragment auto-inject {}
}
}
component = xtend.GenerateGrammarXtend {
javaFolder = "${runtimeProject}/src-gen"
javaPackageName = "${projectName}"
grammarFileStem = "ImperativeOCL"
}
component = utilities.BackportToXtext_2_3_1 {
directory = "${runtimeProject}/src-gen"
}
component = utilities.BackportToXtext_2_3_1 {
directory = "${runtimeProject}.ui/src-gen"
}
component = utilities.ConvertToUnixLineEndings {
directory = "${runtimeProject}/src-gen"
}
component = utilities.ConvertToUnixLineEndings {
directory = "${runtimeProject}.ui/src-gen"
}
}