aboutsummaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/generator/json
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/generator/json')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/generator/json/AbstractJSONGenerator.xtend52
-rw-r--r--rba.tool.editor/src/rba/tool/editor/generator/json/IJSONGenerator.xtend18
-rw-r--r--rba.tool.editor/src/rba/tool/editor/generator/json/JSONGeneratorOutputConfiguration.xtend18
3 files changed, 88 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/generator/json/AbstractJSONGenerator.xtend b/rba.tool.editor/src/rba/tool/editor/generator/json/AbstractJSONGenerator.xtend
new file mode 100644
index 0000000..5b5715e
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/generator/json/AbstractJSONGenerator.xtend
@@ -0,0 +1,52 @@
+package rba.tool.editor.generator.json
+
+import java.util.List
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.resource.ResourceSet
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer
+import org.eclipse.xtext.generator.AbstractFileSystemAccess
+import org.eclipse.xtext.generator.AbstractGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess2
+import org.eclipse.xtext.generator.IGeneratorContext
+import rba.tool.editor.model.manager.ResourceManager
+import rba.view.Display
+
+abstract class AbstractJSONGenerator extends AbstractGenerator implements IJSONGenerator {
+
+ override doGenerate(Resource input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ doGenerate(input.resourceSet, fsa, context);
+ }
+
+ override beforeGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ }
+
+ override afterGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ }
+
+ override doGenerate(ResourceSet resourceSet, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ if (resourceSet.resources.empty) {
+ return;
+ }
+ val resource = resourceSet.resources.get(0);
+ val file = WorkspaceSynchronizer.getFile(resource);
+ if (!file.exists) {
+ return;
+ }
+
+ val project = file.project;
+ if (project === null) {
+ return;
+ }
+
+ if (!(fsa instanceof AbstractFileSystemAccess)) {
+ return;
+ }
+
+ val allDisplays = ResourceManager.INSTANCE.getRbaDisplays(resourceSet);
+
+ fsa.generateFile("data.js", OUTPUT_CONFIGURATION.name, createJSONFile(allDisplays));
+ }
+
+ def abstract public String createJSONFile(List<Display> displays);
+
+}
diff --git a/rba.tool.editor/src/rba/tool/editor/generator/json/IJSONGenerator.xtend b/rba.tool.editor/src/rba/tool/editor/generator/json/IJSONGenerator.xtend
new file mode 100644
index 0000000..e65c130
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/generator/json/IJSONGenerator.xtend
@@ -0,0 +1,18 @@
+package rba.tool.editor.generator.json
+
+import org.eclipse.emf.ecore.resource.ResourceSet
+import org.eclipse.xtext.generator.IFileSystemAccess2
+import org.eclipse.xtext.generator.IGenerator2
+import org.eclipse.xtext.generator.IGeneratorContext
+import org.eclipse.xtext.generator.OutputConfiguration
+
+interface IJSONGenerator extends IGenerator2 {
+
+ static OutputConfiguration OUTPUT_CONFIGURATION = new JSONGeneratorOutputConfiguration();
+
+ def void doGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context);
+
+ def void beforeGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context);
+
+ def void afterGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context);
+}
diff --git a/rba.tool.editor/src/rba/tool/editor/generator/json/JSONGeneratorOutputConfiguration.xtend b/rba.tool.editor/src/rba/tool/editor/generator/json/JSONGeneratorOutputConfiguration.xtend
new file mode 100644
index 0000000..fc6a73c
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/generator/json/JSONGeneratorOutputConfiguration.xtend
@@ -0,0 +1,18 @@
+package rba.tool.editor.generator.json
+
+import org.eclipse.xtext.generator.OutputConfiguration
+
+class JSONGeneratorOutputConfiguration extends OutputConfiguration {
+
+ new() {
+ super("RBAMODEL_JSONGENERATOR_OUTPUT");
+ setDescription("Output Folder");
+ setOutputDirectory("./.RBATool/graphicalview/data");
+ setOverrideExistingResources(true);
+ setCreateOutputDirectory(true);
+ setCleanUpDerivedResources(true);
+ setSetDerivedProperty(true);
+ setKeepLocalHistory(true);
+ }
+
+}