The idea : EMF is a powerful framework that allows to create generic editors to manage your model files. These editors represent the models as a tree in a very convenient way.
The tree representation is particularly adapted to visualize containment references. Unfortunately, when your model has several non containment references, it is not so easy to get a comprehensive representation of the model in the tree view. It is possible to show such referenced objects as child nodes by customizing the generated editor, but that way, a same object instance appears twice ore more in the tree editor and it is not obvious to understand which tree items correspond to the same instance object.
In such cases, the best solution is to build a GMF diagram editor. That way, you get a graphical representation of your model in which references are clearly visible (at least, the ones you choose to represent). Unfortunately, GMF is a complex framework, and when you ecore model is not yet stable, having to keep up to date a GMF diagram editor in each stabilization iteration makes the iterations get longer.
The idea of emf2gv is to provide a lightweight alternative to GMF in such cases allowing to quickly get a read-only graphical representation of any EMF model by simply drawing the EClass
instances as nodes and the EReferences
instances as edges (like an UML class diagram).
EMF2GV automatically retrieves and draws the EMF Edit plugin icons. Miscellaneous appearance details can be adjusted before rendering the graph. EMF2GV also validates each node and shows an error or warning icon when needed.
Here you can see the default result that emf2gv produces with the previous model example (notice the error icon on the Empty Classroom
node and the warning icon on the Tony Parker
node) :
EMF2GV is open source software (EPL or LGPL licence). You are free to download it and use it.
The plugin actually supports the following features :
It includes the following UI helpers :
Emf2gv is designed to be usable with any EMF model.
Getting Started
section of the manual (since 1.1.0)