diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ImplicitFragment.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ImplicitFragment.xtend index 39b2226b8..bcd471507 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ImplicitFragment.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ImplicitFragment.xtend @@ -59,12 +59,6 @@ package class ImplicitFragment extends AbstractStubGeneratingFragment { val bindingFactory = new GuiceModuleAccess.BindingFactory() .addTypeToProviderInstance(IAllContainersState.typeRef, expression) - if (isGenerateStub) { - bindingFactory.addTypeToType(grammar.eclipsePluginDefaultEditor, grammar.eclipsePluginEditor) - } else if (inheritsXbase(grammar)) { - bindingFactory.addTypeToType(grammar.eclipsePluginDefaultEditor, grammar.eclipsePluginXbaseEditor) - } - if (inheritsXbase(grammar)) { bindingFactory.addTypeToType('org.eclipse.xtext.ui.editor.model.XtextDocumentProvider'.typeRef, 'org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider'.typeRef) diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/StandardLanguage.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/StandardLanguage.xtend index 7295b8559..cfb0de5ff 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/StandardLanguage.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/StandardLanguage.xtend @@ -38,7 +38,6 @@ import org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 import org.eclipse.xtext.xtext.generator.web.WebIntegrationFragment import org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2 import org.eclipse.xtext.xtext.generator.xbase.XtypeGeneratorFragment2 -import org.eclipse.xtext.xtext.generator.ui.editor.EditorFragment2 /** * This specialization of the {@link XtextGeneratorLanguage} adds all the standard generator fragments @@ -117,8 +116,6 @@ import org.eclipse.xtext.xtext.generator.ui.editor.EditorFragment2 SimpleProjectWizardFragment2 newProjectWizardForEclipse = new SimpleProjectWizardFragment2 - EditorFragment2 editor = new EditorFragment2 - new() { try { class.classLoader.loadClass("org.eclipse.xtext.xbase.XbaseRuntimeModule") @@ -174,7 +171,6 @@ import org.eclipse.xtext.xtext.generator.ui.editor.EditorFragment2 fragments += ideaPlugin fragments += webSupport fragments += newProjectWizardForEclipse - fragments += editor fragments } diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.xtend deleted file mode 100644 index c14d30ffe..000000000 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.xtend +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 itemis AG (http://www.itemis.eu) and others. - * 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 - *******************************************************************************/ -package org.eclipse.xtext.xtext.generator.ui.editor - -import com.google.inject.Inject -import org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming -import org.eclipse.xtext.xtext.generator.model.FileAccessFactory -import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector - -/** - * @author fstolte - Initial contribution and API - * @since 2.14 - */ -class EditorFragment2 extends AbstractStubGeneratingFragment { - - @Inject FileAccessFactory fileAccessFactory - - @Inject extension XbaseUsageDetector - - @Inject extension XtextGeneratorNaming - - override generate() { - if (isGenerateStub) { - if (projectConfig.eclipsePlugin?.srcGen !== null) { - generateEditor - } - - - if (projectConfig.eclipsePlugin.manifest !== null) { - projectConfig.eclipsePlugin.manifest.exportedPackages += grammar.eclipsePluginEditor.packageName - } - } - } - - - protected def generateEditor() { - val file = fileAccessFactory.createGeneratedJavaFile(grammar.eclipsePluginEditor) - - val superClass = if (grammar.inheritsXbase) grammar.eclipsePluginXbaseEditor else grammar.eclipsePluginDefaultEditor - - file.content = ''' - /** - * This class was generated. Customizations should only happen in a newly - * introduced subclass. - */ - public class «grammar.eclipsePluginEditor.simpleName» extends «superClass» { - } - ''' - file.writeTo(projectConfig.eclipsePlugin.srcGen) - } - -} \ No newline at end of file diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend index c62e8a051..c45e9c674 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend @@ -56,6 +56,10 @@ class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { if (!grammar.inheritsXbase) return; + if (!grammar.eclipsePluginEditor.equals(grammar.eclipsePluginXbaseEditor)) { + contributeEditorStub() + } + contributeRuntimeGuiceBindings() contributeEclipsePluginGuiceBindings() if (projectConfig.eclipsePlugin.pluginXml !== null) @@ -81,6 +85,27 @@ class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { language.webGenModule.superClass = 'org.eclipse.xtext.xbase.web.DefaultXbaseWebModule'.typeRef } + protected def contributeEditorStub() { + if (projectConfig.eclipsePlugin?.srcGen !== null) { + val file = fileAccessFactory.createGeneratedJavaFile(grammar.eclipsePluginEditor) + + file.content = ''' + /** + * This class was generated. Customizations should only happen in a newly + * introduced subclass. + */ + public class «grammar.eclipsePluginEditor.simpleName» extends «grammar.eclipsePluginXbaseEditor» { + } + ''' + file.writeTo(projectConfig.eclipsePlugin.srcGen) + } + + + if (projectConfig.eclipsePlugin.manifest !== null) { + projectConfig.eclipsePlugin.manifest.exportedPackages += grammar.eclipsePluginEditor.packageName + } + } + protected def contributeRuntimeGuiceBindings() { val bindingFactory = new GuiceModuleAccess.BindingFactory() // overrides binding from org.eclipse.xtext.generator.exporting.QualifiedNamesFragment @@ -185,6 +210,8 @@ class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { .addTypeToType('org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes'.typeRef, 'org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixesNoImportSection'.typeRef) } + bindingFactory.addTypeToType(grammar.eclipsePluginXbaseEditor, grammar.eclipsePluginEditor) + bindingFactory.contributeTo(language.eclipsePluginGenModule) if (language.grammar.inheritsXbaseWithAnnotations) diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ImplicitFragment.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ImplicitFragment.java index de5b9e996..232806278 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ImplicitFragment.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ImplicitFragment.java @@ -89,17 +89,8 @@ class ImplicitFragment extends AbstractStubGeneratingFragment { }; final StringConcatenationClient expression = _client; final GuiceModuleAccess.BindingFactory bindingFactory = new GuiceModuleAccess.BindingFactory().addTypeToProviderInstance(TypeReference.typeRef(IAllContainersState.class), expression); - boolean _isGenerateStub = this.isGenerateStub(); - if (_isGenerateStub) { - bindingFactory.addTypeToType(this.naming.getEclipsePluginDefaultEditor(this.getGrammar()), this.naming.getEclipsePluginEditor(this.getGrammar())); - } else { - boolean _inheritsXbase = this._xbaseUsageDetector.inheritsXbase(this.getGrammar()); - if (_inheritsXbase) { - bindingFactory.addTypeToType(this.naming.getEclipsePluginDefaultEditor(this.getGrammar()), this.naming.getEclipsePluginXbaseEditor(this.getGrammar())); - } - } - boolean _inheritsXbase_1 = this._xbaseUsageDetector.inheritsXbase(this.getGrammar()); - if (_inheritsXbase_1) { + boolean _inheritsXbase = this._xbaseUsageDetector.inheritsXbase(this.getGrammar()); + if (_inheritsXbase) { bindingFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"), TypeReference.typeRef("org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider")).addTypeToType(TypeReference.typeRef("org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"), TypeReference.typeRef("org.eclipse.xtext.xbase.ui.generator.trace.XbaseOpenGeneratedFileHandler")); diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/StandardLanguage.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/StandardLanguage.java index 89e482d8f..c3ad76cf2 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/StandardLanguage.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/StandardLanguage.java @@ -36,7 +36,6 @@ import org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2; import org.eclipse.xtext.xtext.generator.types.TypesGeneratorFragment2; import org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2; import org.eclipse.xtext.xtext.generator.ui.contentAssist.ContentAssistFragment2; -import org.eclipse.xtext.xtext.generator.ui.editor.EditorFragment2; import org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2; import org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2; import org.eclipse.xtext.xtext.generator.ui.outline.QuickOutlineFragment2; @@ -127,8 +126,6 @@ public class StandardLanguage extends XtextGeneratorLanguage { private SimpleProjectWizardFragment2 newProjectWizardForEclipse = new SimpleProjectWizardFragment2(); - private EditorFragment2 editor = new EditorFragment2(); - public StandardLanguage() { try { this.getClass().getClassLoader().loadClass("org.eclipse.xtext.xbase.XbaseRuntimeModule"); @@ -212,7 +209,6 @@ public class StandardLanguage extends XtextGeneratorLanguage { this.operator_add(fragments, this.ideaPlugin); this.operator_add(fragments, this.webSupport); this.operator_add(fragments, this.newProjectWizardForEclipse); - this.operator_add(fragments, this.editor); _xblockexpression = fragments; } return _xblockexpression; @@ -469,14 +465,5 @@ public class StandardLanguage extends XtextGeneratorLanguage { this.newProjectWizardForEclipse = newProjectWizardForEclipse; } - @Pure - protected EditorFragment2 getEditor() { - return this.editor; - } - - public void setEditor(final EditorFragment2 editor) { - this.editor = editor; - } - private final static Logger LOG = Logger.getLogger(StandardLanguage.class); } diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.java deleted file mode 100644 index 5e1838254..000000000 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/ui/editor/EditorFragment2.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright (c) 2017 itemis AG (http://www.itemis.eu) and others. - * 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 - */ -package org.eclipse.xtext.xtext.generator.ui.editor; - -import com.google.inject.Inject; -import java.util.Set; -import org.eclipse.xtend2.lib.StringConcatenationClient; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment; -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming; -import org.eclipse.xtext.xtext.generator.model.FileAccessFactory; -import org.eclipse.xtext.xtext.generator.model.GeneratedJavaFileAccess; -import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess; -import org.eclipse.xtext.xtext.generator.model.ManifestAccess; -import org.eclipse.xtext.xtext.generator.model.TypeReference; -import org.eclipse.xtext.xtext.generator.model.project.IBundleProjectConfig; -import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector; - -/** - * @author fstolte - Initial contribution and API - * @since 2.14 - */ -@SuppressWarnings("all") -public class EditorFragment2 extends AbstractStubGeneratingFragment { - @Inject - private FileAccessFactory fileAccessFactory; - - @Inject - @Extension - private XbaseUsageDetector _xbaseUsageDetector; - - @Inject - @Extension - private XtextGeneratorNaming _xtextGeneratorNaming; - - @Override - public void generate() { - boolean _isGenerateStub = this.isGenerateStub(); - if (_isGenerateStub) { - IBundleProjectConfig _eclipsePlugin = this.getProjectConfig().getEclipsePlugin(); - IXtextGeneratorFileSystemAccess _srcGen = null; - if (_eclipsePlugin!=null) { - _srcGen=_eclipsePlugin.getSrcGen(); - } - boolean _tripleNotEquals = (_srcGen != null); - if (_tripleNotEquals) { - this.generateEditor(); - } - ManifestAccess _manifest = this.getProjectConfig().getEclipsePlugin().getManifest(); - boolean _tripleNotEquals_1 = (_manifest != null); - if (_tripleNotEquals_1) { - Set _exportedPackages = this.getProjectConfig().getEclipsePlugin().getManifest().getExportedPackages(); - String _packageName = this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar()).getPackageName(); - _exportedPackages.add(_packageName); - } - } - } - - protected void generateEditor() { - final GeneratedJavaFileAccess file = this.fileAccessFactory.createGeneratedJavaFile(this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar())); - TypeReference _xifexpression = null; - boolean _inheritsXbase = this._xbaseUsageDetector.inheritsXbase(this.getGrammar()); - if (_inheritsXbase) { - _xifexpression = this._xtextGeneratorNaming.getEclipsePluginXbaseEditor(this.getGrammar()); - } else { - _xifexpression = this._xtextGeneratorNaming.getEclipsePluginDefaultEditor(this.getGrammar()); - } - final TypeReference superClass = _xifexpression; - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* This class was generated. Customizations should only happen in a newly"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* introduced subclass."); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.append("public class "); - String _simpleName = EditorFragment2.this._xtextGeneratorNaming.getEclipsePluginEditor(EditorFragment2.this.getGrammar()).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - _builder.append(superClass); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - }; - file.setContent(_client); - file.writeTo(this.getProjectConfig().getEclipsePlugin().getSrcGen()); - } -} diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.java index 512cb4c02..30ebd3e34 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.java @@ -28,10 +28,13 @@ import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment; import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming; import org.eclipse.xtext.xtext.generator.model.FileAccessFactory; +import org.eclipse.xtext.xtext.generator.model.GeneratedJavaFileAccess; import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess; +import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess; import org.eclipse.xtext.xtext.generator.model.ManifestAccess; import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess; import org.eclipse.xtext.xtext.generator.model.TypeReference; +import org.eclipse.xtext.xtext.generator.model.project.IBundleProjectConfig; import org.eclipse.xtext.xtext.generator.util.GenModelUtil2; import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector; @@ -79,6 +82,11 @@ public class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { if (_not) { return; } + boolean _equals = this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar()).equals(this._xtextGeneratorNaming.getEclipsePluginXbaseEditor(this.getGrammar())); + boolean _not_1 = (!_equals); + if (_not_1) { + this.contributeEditorStub(); + } this.contributeRuntimeGuiceBindings(); this.contributeEclipsePluginGuiceBindings(); PluginXmlAccess _pluginXml = this.getProjectConfig().getEclipsePlugin().getPluginXml(); @@ -115,6 +123,59 @@ public class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { _webGenModule.setSuperClass(TypeReference.typeRef("org.eclipse.xtext.xbase.web.DefaultXbaseWebModule")); } + protected boolean contributeEditorStub() { + boolean _xblockexpression = false; + { + IBundleProjectConfig _eclipsePlugin = this.getProjectConfig().getEclipsePlugin(); + IXtextGeneratorFileSystemAccess _srcGen = null; + if (_eclipsePlugin!=null) { + _srcGen=_eclipsePlugin.getSrcGen(); + } + boolean _tripleNotEquals = (_srcGen != null); + if (_tripleNotEquals) { + final GeneratedJavaFileAccess file = this.fileAccessFactory.createGeneratedJavaFile(this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar())); + StringConcatenationClient _client = new StringConcatenationClient() { + @Override + protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { + _builder.append("/**"); + _builder.newLine(); + _builder.append(" "); + _builder.append("* This class was generated. Customizations should only happen in a newly"); + _builder.newLine(); + _builder.append(" "); + _builder.append("* introduced subclass."); + _builder.newLine(); + _builder.append(" "); + _builder.append("*/"); + _builder.newLine(); + _builder.append("public class "); + String _simpleName = XbaseGeneratorFragment2.this._xtextGeneratorNaming.getEclipsePluginEditor(XbaseGeneratorFragment2.this.getGrammar()).getSimpleName(); + _builder.append(_simpleName); + _builder.append(" extends "); + TypeReference _eclipsePluginXbaseEditor = XbaseGeneratorFragment2.this._xtextGeneratorNaming.getEclipsePluginXbaseEditor(XbaseGeneratorFragment2.this.getGrammar()); + _builder.append(_eclipsePluginXbaseEditor); + _builder.append(" {"); + _builder.newLineIfNotEmpty(); + _builder.append("}"); + _builder.newLine(); + } + }; + file.setContent(_client); + file.writeTo(this.getProjectConfig().getEclipsePlugin().getSrcGen()); + } + boolean _xifexpression = false; + ManifestAccess _manifest = this.getProjectConfig().getEclipsePlugin().getManifest(); + boolean _tripleNotEquals_1 = (_manifest != null); + if (_tripleNotEquals_1) { + Set _exportedPackages = this.getProjectConfig().getEclipsePlugin().getManifest().getExportedPackages(); + String _packageName = this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar()).getPackageName(); + _xifexpression = _exportedPackages.add(_packageName); + } + _xblockexpression = _xifexpression; + } + return _xblockexpression; + } + protected void contributeRuntimeGuiceBindings() { final GuiceModuleAccess.BindingFactory bindingFactory = new GuiceModuleAccess.BindingFactory().addTypeToType(TypeReference.typeRef(IQualifiedNameProvider.class), TypeReference.typeRef("org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider")); @@ -238,6 +299,7 @@ public class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment { bindingFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes"), TypeReference.typeRef("org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixesNoImportSection")); } + bindingFactory.addTypeToType(this._xtextGeneratorNaming.getEclipsePluginXbaseEditor(this.getGrammar()), this._xtextGeneratorNaming.getEclipsePluginEditor(this.getGrammar())); bindingFactory.contributeTo(this.getLanguage().getEclipsePluginGenModule()); boolean _inheritsXbaseWithAnnotations = this._xbaseUsageDetector.inheritsXbaseWithAnnotations(this.getLanguage().getGrammar()); if (_inheritsXbaseWithAnnotations) {