Я реализовал с помощью Xtext a DSL, и я пытаюсь найти способ динамической настройки генерации кода в подключаемом модуле mydsl.ui Eclipse.
Я ввел параметр предпочтения для настройки генератора.
Я ввел пользовательский объект GeneratorConfiguration с помощью MyDslRuntimeModule
Затем я установил параметр предпочтения в этом объекте в методе "build" пользовательского BuilderParticipant (настроенного в plugin.xml).
// In mydsl plugin
class MyDslRuntimeModule extends AbstractMyDslRuntimeModule {
def Class<? extends IGeneratorConfiguration> bindIGeneratorConfiguration() {
return GeneratorConfiguration;
}
}
// In mydsl.ui plugin
package mydsl.ui;
public class MyBuildPartecipant extends BuilderParticipant {
@Inject IGeneratorConfiguration generatorConfiguration;
@Override
public void build(IBuildContext context, IProgressMonitor monitor) throws CoreException {
ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(InstanceScope.INSTANCE, "ID");
generatorConfiguration.setGeneratorProperty(scopedPreferenceStore.getInt("myDslProperty"));
super.build(context, monitor);
}
// In mydsl plugin
class MyDslGenerator extends AbstractGenerator {
@Inject IGeneratorConfiguration generatorConfiguration;
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
println("Compiling with " + generatorConfiguration.generatorProperty)
В результате объект GeneratorConfiguration, полученный с помощью декоратора @Inject в классе MyBuildPartecipant плагина mydsl.ui (eclipse ui), отличается от объекта, полученного в классе MyDslGenerator плагина mydsl (плагина генератора Xtext).
Как передать параметр из плагина eclipse ui в плагин генератора Xtext (не плагин ui) для динамической настройки генерации кода?
Спасибо Paolo