Я реализовал с помощью Xtext DSL и пытаюсь найти способ динамической настройки генерации кода в плагине mydsl.ui Eclipse.
Я ввел параметр предпочтения для настройки генератора.
Я внедрил пользовательский объект GeneratorConfiguration с помощью MyDslRuntimeModule.
Затем я устанавливаю параметр предпочтения в этом объекте в методе «сборки» пользовательского 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 в плагин генератора Xtext (не плагин пользовательского интерфейса), чтобы динамически настроить генерацию кода?
Спасибо, Паоло.