Skip to content

Commit 50f55c7

Browse files
committed
adapt Xtext to be supported by theia
1 parent 8481392 commit 50f55c7

File tree

61 files changed

+101262
-123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+101262
-123
lines changed

plugins/de.fraunhofer.ipa.ros.xtext.tests/src/de/fraunhofer/ipa/ros/tests/RosGeneratorTest.xtend

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ class RosGeneratorTest {
8787

8888
val fsa = new InMemoryFileSystemAccess
8989
CIGenerator.doGenerate(model.eResource, fsa, new GeneratorContext)
90-
Assert.assertTrue(fsa.textFiles.containsKey(CICustomOutputProvider::COM_OUTPUT + "test_node.componentinterface"))
90+
Assert.assertTrue(fsa.textFiles.containsKey(CICustomOutputProvider::CM_CONFIGURATION + "test_node.componentinterface"))
9191
Assert.assertEquals(
9292
new String(Files.readAllBytes(Paths.get(RESOURCES_BASE_DIR, 'components', 'test_node.componentinterface'))).trim,
93-
fsa.textFiles.get(CICustomOutputProvider::COM_OUTPUT + "test_node.componentinterface").toString.trim)
93+
fsa.textFiles.get(CICustomOutputProvider::CM_CONFIGURATION + "test_node.componentinterface").toString.trim)
9494
}
9595

9696
}

plugins/de.fraunhofer.ipa.ros.xtext/src/de/fraunhofer/ipa/ros/RosRuntimeModule.xtend

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@ package de.fraunhofer.ipa.ros
55

66
import com.google.inject.Binder
77
import de.fraunhofer.ipa.ros.generator.CICustomOutputProvider
8-
import org.eclipse.xtext.conversion.IValueConverterService
98
import org.eclipse.xtext.generator.IOutputConfigurationProvider
9+
import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider
1010

1111
/**
1212
* Use this class to register components to be used at runtime / without the Equinox extension registry.
1313
*/
1414
class RosRuntimeModule extends AbstractRosRuntimeModule {
15-
16-
override void configure(Binder binder) {
15+
16+
override void configure(Binder binder) {
1717
super.configure(binder)
1818
binder.bind(IOutputConfigurationProvider).to(CICustomOutputProvider).asEagerSingleton()
19+
binder.bind(IContextualOutputConfigurationProvider).to(CICustomOutputProvider).asEagerSingleton()
1920
}
2021

2122
}

plugins/de.fraunhofer.ipa.ros.xtext/src/de/fraunhofer/ipa/ros/generator/RosGenerator.xtend

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,35 @@ import org.eclipse.xtext.generator.IOutputConfigurationProvider
1212
import org.eclipse.xtext.generator.OutputConfiguration
1313
import ros.Node
1414
import ros.Package
15+
import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider
1516

16-
class CICustomOutputProvider implements IOutputConfigurationProvider {
17-
public final static String COM_OUTPUT = "COM_OUTPUT"
18-
17+
class CICustomOutputProvider implements IOutputConfigurationProvider, IContextualOutputConfigurationProvider {
18+
public final static String CM_CONFIGURATION = "CM_CONFIGURATION"
19+
public final static String DEFAULT_OUTPUT = "DEFAULT_OUTPUT"
1920

2021
override Set<OutputConfiguration> getOutputConfigurations() {
2122

22-
var OutputConfiguration default_config = new OutputConfiguration(COM_OUTPUT)
23-
default_config.setDescription("COM_OUTPUT");
24-
default_config.setOutputDirectory("./components/");
23+
var OutputConfiguration cm_config = new OutputConfiguration(CM_CONFIGURATION)
24+
cm_config.setDescription("CM_CONFIGURATION");
25+
cm_config.setOutputDirectory("./components/");
26+
cm_config.setOverrideExistingResources(true);
27+
cm_config.setCreateOutputDirectory(true);
28+
cm_config.setCleanUpDerivedResources(false);
29+
cm_config.setSetDerivedProperty(false);
30+
var OutputConfiguration default_config = new OutputConfiguration(DEFAULT_OUTPUT)
31+
default_config.setDescription("DEFAULT_OUTPUT");
32+
default_config.setOutputDirectory("./src-gen/");
2533
default_config.setOverrideExistingResources(true);
2634
default_config.setCreateOutputDirectory(true);
2735
default_config.setCleanUpDerivedResources(false);
2836
default_config.setSetDerivedProperty(false);
29-
return newHashSet(default_config)
37+
return newHashSet(cm_config, default_config)
38+
}
39+
40+
override Set<OutputConfiguration> getOutputConfigurations(Resource context) {
41+
return getOutputConfigurations()
3042
}
43+
3144
}
3245

3346
/**
@@ -57,7 +70,8 @@ class RosGenerator extends AbstractGenerator {
5770
}
5871
}
5972
for (node : resource.allContents.toIterable.filter(Node)){
60-
fsa.generateFile(node.getName()+".componentinterface",CICustomOutputProvider::COM_OUTPUT,compile(node,package_name,artifact_name))
73+
fsa.generateFile(node.getName()+".componentinterface",CICustomOutputProvider::CM_CONFIGURATION,compile(node,package_name,artifact_name))
74+
6175
}
6276
}
6377

plugins/de.fraunhofer.ipa.rossystem.xtext.ide/META-INF/MANIFEST.MF

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,28 @@ Bundle-SymbolicName: de.fraunhofer.ipa.rossystem.xtext.ide; singleton:=true
77
Bundle-ActivationPolicy: lazy
88
Require-Bundle: de.fraunhofer.ipa.rossystem.xtext,
99
de.fraunhofer.ipa.rossystem,
10+
de.fraunhofer.ipa.ros.xtext,
11+
de.fraunhofer.ipa.ros,
1012
org.eclipse.xtext.ide,
1113
org.eclipse.xtext.xbase.ide,
14+
org.eclipse.sprotty,
15+
org.eclipse.sprotty.layout,
16+
org.eclipse.sprotty.server,
17+
org.eclipse.sprotty.xtext,
18+
org.eclipse.lsp4j,
19+
org.eclipse.elk.graph,
20+
com.google.gson,
21+
org.objectweb.asm,
22+
org.objectweb.asm.commons,
23+
org.objectweb.asm.tree,
24+
org.apache.log4j,
25+
org.eclipse.elk.alg.common,
26+
org.eclipse.elk.alg.layered,
27+
org.eclipse.elk.core,
28+
org.eclipse.lsp4j.jsonrpc,
1229
org.antlr.runtime
1330
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
1431
Export-Package: de.fraunhofer.ipa.rossystem.ide.contentassist.antlr.internal,
15-
de.fraunhofer.ipa.rossystem.ide.contentassist.antlr
32+
de.fraunhofer.ipa.rossystem.ide.contentassist.antlr,
33+
de.fraunhofer.ipa.ros.ide.contentassist.antlr,
34+
de.fraunhofer.ipa.ros.ide.contentassist.antlr.internal
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
de.fraunhofer.ipa.rossystem.ide.RosSystemIdeSetup
2+
de.fraunhofer.ipa.ros.ide.RosIdeSetup
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* generated by Xtext 2.24.0
3+
*/
4+
package de.fraunhofer.ipa.ros.ide;
5+
6+
import com.google.inject.Binder;
7+
import com.google.inject.name.Names;
8+
import de.fraunhofer.ipa.ros.ide.contentassist.antlr.RosParser;
9+
import de.fraunhofer.ipa.ros.ide.contentassist.antlr.internal.InternalRosLexer;
10+
import org.eclipse.xtext.ide.DefaultIdeModule;
11+
import org.eclipse.xtext.ide.LexerIdeBindings;
12+
import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher;
13+
import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
14+
import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper;
15+
import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper;
16+
import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
17+
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
18+
import org.eclipse.xtext.ide.refactoring.IRenameStrategy2;
19+
import org.eclipse.xtext.ide.server.rename.IRenameService2;
20+
import org.eclipse.xtext.ide.server.rename.RenameService2;
21+
22+
/**
23+
* Manual modifications go to {@link RosIdeModule}.
24+
*/
25+
@SuppressWarnings("all")
26+
public abstract class AbstractRosIdeModule extends DefaultIdeModule {
27+
28+
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
29+
public void configureContentAssistLexer(Binder binder) {
30+
binder.bind(Lexer.class)
31+
.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
32+
.to(InternalRosLexer.class);
33+
}
34+
35+
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
36+
public Class<? extends IContentAssistParser> bindIContentAssistParser() {
37+
return RosParser.class;
38+
}
39+
40+
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
41+
public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
42+
return AntlrProposalConflictHelper.class;
43+
}
44+
45+
// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
46+
public Class<? extends IPrefixMatcher> bindIPrefixMatcher() {
47+
return FQNPrefixMatcher.class;
48+
}
49+
50+
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
51+
public Class<? extends IRenameService2> bindIRenameService2() {
52+
return RenameService2.class;
53+
}
54+
55+
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
56+
public Class<? extends IRenameStrategy2> bindIRenameStrategy2() {
57+
return IRenameStrategy2.DefaultImpl.class;
58+
}
59+
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* generated by Xtext 2.24.0
3+
*/
4+
package de.fraunhofer.ipa.ros.ide.contentassist.antlr;
5+
6+
import java.util.Collection;
7+
import java.util.Collections;
8+
import org.eclipse.xtext.AbstractRule;
9+
import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
10+
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
11+
import org.eclipse.xtext.util.PolymorphicDispatcher;
12+
13+
public class PartialRosContentAssistParser extends RosParser {
14+
15+
private AbstractRule rule;
16+
17+
@Override
18+
public void initializeFor(AbstractRule rule) {
19+
this.rule = rule;
20+
}
21+
22+
@Override
23+
protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
24+
if (rule == null || rule.eIsProxy())
25+
return Collections.emptyList();
26+
String methodName = "entryRule" + rule.getName();
27+
PolymorphicDispatcher<Collection<FollowElement>> dispatcher =
28+
new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
29+
dispatcher.invoke();
30+
return parser.getFollowElements();
31+
}
32+
33+
}

0 commit comments

Comments
 (0)