The EEF workflow is the same than many others projects of the Eclipse Modeling Project :
- Modeling : In the first step, you have to define some models (conforms to EEF metamodels) describing the graphical components that will be generated by EEF.
- Generating : Once the EEF models defined, the second step in the EEF development is to call he EEF generating module. EEF bring an Acceleo module that generate the java classes for the components defined in the preceding step.
- Customization : An optional third step can be done by customizing java code to add features that aren't directly accessible by the EEF generation. The third component of EEF is the runtime that is used by the generated code. This runtime is extensible, so you can substitute the generated code by your code and bring new features.
The custom can also be done by adding custom code in dedicated area in the generated code (called "user code area"). Acceleo will keep this code in the next generators invocation.
This document will describes all these steps in the user point of view.
The EEF editing components are designed with three models conform to four metamodels. This models are :
- The views model : This is one or more ViewsRepository that we be used to edit the EMF models. These views can be stored in several categories.
- The components model : This a context PropertiesEditionContext that describes the controllers associating the elements of the views with the metamodel properties that they have to edit.
- The eefgen generation settings model : it allows the user to define settings for the generation. Thus, the target directory, the legal notice, and many other option can be set up in this model.
Warning : The EEF intializer create the two first models in only one file !
The views modeling is made with a model conform to the EEF views metamodel. The root element of this model is a ViewsRepository. A ViewsRepository has a name and an optional documentation. A RepositoryKind property can be set but isn't used in the generation. This will be done in the next release.