<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Language" content="en-us"> <title>Example Web Editor</title> <link rel="stylesheet" type="text/css" href="xtext/2.23.0/xtext-ace.css"/> <link rel="stylesheet" type="text/css" href="style.css"/> <script src="webjars/requirejs/2.3.6/require.min.js"></script> <script type="text/javascript"> var baseUrl = window.location.pathname; var fileIndex = baseUrl.indexOf("index.html"); if (fileIndex > 0) baseUrl = baseUrl.slice(0, fileIndex); require.config({ baseUrl: baseUrl, paths: { "jquery": "webjars/jquery/3.4.1/jquery.min", "ace/ext/language_tools": "webjars/ace/1.3.3/src/ext-language_tools", "xtext/xtext-ace": "xtext/2.23.0/xtext-ace" } }); require(["webjars/ace/1.3.3/src/ace"], function() { require(["xtext/xtext-ace"], function(xtext) { xtext.createEditor({ baseUrl: baseUrl, syntaxDefinition: "xtext-resources/generated/mode-mydsl" }); $("#generate-button").click(function() { //do smothing alert("clicked ") //editor.xtextServices.enableGeneratorService(); //editor.xtextServices.saveResource(); //var gen = editor.xtextServices.generate(); editor.xtextServices.generate(); }); }); }); </script> </head> <body> <div ><button id='generate-button'>generate button </button></div> <div class="container"> <div class="header"> <h1>Example MyDsl Web Editor</h1> </div> <div class="content"> <div id="xtext-editor" data-editor-xtext-lang="mydsl"></div> </div> </div> </body> </html>
/* * generated by Xtext 2.23.0 */ package org.xtext.example.mydsl.generator import org.eclipse.emf.ecore.resource.Resource import org.eclipse.xtext.generator.AbstractGenerator import org.eclipse.xtext.generator.IFileSystemAccess2 import org.eclipse.xtext.generator.IGeneratorContext import org.xtext.example.mydsl.myDsl.Greeting /** * Generates code from your model files on save. * * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation */ class MyDslGenerator extends AbstractGenerator { override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) { fsa.generateFile('greetings.txt', 'People to greet: ' + resource.allContents .filter(Greeting) .map[name] .join(', ')); println("this is the generator.xtend"); var JsonGenerator jg = new JsonGenerator(); jg.generateJson() } }
package org.xtext.example.mydsl.generator; public class JsonGenerator { public void generateJson() { System.out.println("Starting genetator"); throw new UnsupportedOperationException("TODO: auto-generated method stub"); } }
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Language" content="en-us"> <title>Example Web Editor</title> <link rel="stylesheet" type="text/css" href="xtext/2.23.0/xtext-ace.css"/> <link rel="stylesheet" type="text/css" href="style.css"/> <script src="webjars/requirejs/2.3.6/require.min.js"></script> <script type="text/javascript"> var editor; var baseUrl = window.location.pathname; var fileIndex = baseUrl.indexOf("index.html"); if (fileIndex > 0) baseUrl = baseUrl.slice(0, fileIndex); require.config({ baseUrl: baseUrl, paths: { "jquery": "webjars/jquery/3.4.1/jquery.min", "ace/ext/language_tools": "webjars/ace/1.3.3/src/ext-language_tools", "xtext/xtext-ace": "xtext/2.23.0/xtext-ace" } }); require(["webjars/ace/1.3.3/src/ace"], function() { require(["xtext/xtext-ace"], function(xtext) { editor=xtext.createEditor({ baseUrl: baseUrl, syntaxDefinition: "xtext-resources/generated/mode-mydsl" }); jQuery('#generate-button').bind("click", function(e){ jQuery('#generator-result').html('<iframe style="width:1000px; height:200px;" src="http://' + location.host + '/xtext-service/generate?resource=example1.mydsl2"></iframe>'); alert(location.host + '/xtext-service/generate?resource') e.preventDefault(); }); }); }); </script> </head> <body> <div class="container"> <div class="header"> <h1>Example MyDsl Web Editor</h1> </div> <div class="content"> <div id="xtext-editor" data-editor-xtext-lang="mydsl" data-editor-resource-id="example1.mydsl2"></div> </div> <div class="button-wrapper"> <button id="generate-button" value="Generate" title="Generate">Generate</button> <div id="generator-result"> Result </div> </div> </div> </body> </html>
/* * generated by Xtext 2.23.0 */ package org.xtext.example.mydsl.generator import org.eclipse.emf.ecore.resource.Resource import org.eclipse.xtext.generator.AbstractGenerator import org.eclipse.xtext.generator.IFileSystemAccess2 import org.eclipse.xtext.generator.IGeneratorContext import org.xtext.example.mydsl.myDsl.Greeting /** * Generates code from your model files on save. * * See [url]https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation[/url] */ class MyDslGenerator extends AbstractGenerator { override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) { fsa.generateFile('/DEFAULT_ARTIFACT', 'People to greet: ' + resource.allContents .filter(typeof(Greeting)) .map[name] .join(', ')) println("this is the generator.xtend"); } }
div.button-wrapper { display: block; position: absolute; top: 90px; bottom: 0; left: 640px; right: 0; padding: 4px; border: 1px solid #aaa; }