步骤 1. 分析现有应用程序
单击本文的 Run the app 按钮,尝试与销售图应用程序进行交互:
打开一个桌面或手机浏览器的多个实例,并将它们都指向应用程序的 URL(http://meteorsales.ng.bluemix.net/)。
选择并单击(或敲击)标准的任意销售图,修改编号,然后单击 OK 进行更新。通过观察您会发现,所有应用程序实例中的表和饼图都被更新了。
尝试从另一个浏览器实例或移动设备更新销售图。
如果其他读者和您在同时试用这个应用程序,那么您还会看到他们的更新。
Xtext is a framework for development of textual domain specific languages (DSLs). You need to describe the DSL using Xtext's simple grammar and Xtext generates a parser, an editor and other goodies. You are on the way to create your own IDE for the DSL.
Xtext, out of the box, does not support using white spaces for creating block structure. With a small hack, you can make Xtext understand block structure defined using white space.
The basic idea is to replace Xtext's lexer with a custom lexer that adds the INDENT and DEDENT tokens into the parser.
My original answer in to a post on Xtext news group gives the generic procedure. However some points need to be modified.
Overriding bindLexer() does not really work. Xtext creates a concrete Lexer object in the parser. So for providing a CharStream, we need to bindIAntlrParser() and the in the parser class create the lexer that creates the CharStream.
You can access a sample project that implements this from google code. Use svn to checkout org.xtext.example.mydsl and org.xtext.example.mydsl.ui projects from http://eclipse-snippets.googlecode.com/svn/trunk/xtext-indenting.
As soon as you generate the Xtext artifacts for a grammar, a code generator stub will be put into the runtime project of your language. Let's dive into Xtend and see how you can integrate your own code generator with Eclipse.
In this lesson you will generate Java Beans for entities that are defined in the domain model DSL. For each Entity, a Java class is generated and each Feature will lead to a private field in that class and public getters and setters. For the sake of simplicity, we will use fully qualified names all over the generated code.
package my.company.blog;
public class HasAuthor {
private java.lang.String author;
public java.lang.String getAuthor() {
return author;
}
public void setAuthor(java.lang.String author) {
this.author = author;
}
}
First of all, locate the file DomainmodelGenerator.xtend in the package org.example.domainmodel.generator. This Xtend class is used to generate code for your models in the standalone scenario and in the interactive Eclipse environment.
package org.example.domainmodel.generator