Vous devez au préalable avoir installé GEF : http://download.eclipse.org/tools/gef/downloads/

Nous allons partir sur la base d'un plugin RCP (Rich Client Platform) d'Eclipse pour réaliser une application utilisant GEF.
On lance eclipse, puis : File - new - Project


On sélectionne "Plug-in Project".


On lui donne un nom.


On souhaite créer une "Rich Client Application".


Il faut choisir un template, on va partir sur "Hello RCP" qui est le template le plus basique.

Un popup peut vous demander si vous souhaitez ouvrir la perspective associé à ce type de projet. On répond oui. Une perspective est la manière dont les éléments graphiques sont affiché sous eclipse.


Il faut ajouter les plug-in GEF dans la liste des dépendances de notre projet. Editez le fichier plugin.xml, dans l'onglet "Dependencies" en cliquant sur Add.
Maintenant on crée une nouvelle class dans dans le package qui hérite de org.eclipse.gef.ui.parts.GraphicalEditor. Cette class va définir notre Editeur Graphique. C'est en quelque sorte le point de départ de notre travail. Mais avant il faut intégrer notre EditorPart au plugin...
On ajoute un ID pour dire à eclipse qu'on souhaite utiliser cette class en tant qu'extension. On crée par la même occasion un constructeur dans lequel on défini l'EditDomain qu'on souhaite utilise.
public class MyGraphicalEditor extends GraphicalEditor {

        public static final String ID = "tutogef.mygraphicaleditor";

        public MyGraphicalEditor() {
                setEditDomain(new DefaultEditDomain(this));
        }
(...)
}


Il faut créer une autre class qui implémente l'interface org.eclipse.ui.IEditorInput. c'est cette class qui décrit l'EditorPart.
package tutogef;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;

public class MyEditorInput implements IEditorInput {
       
        public String name = null;
       
        public MyEditorInput(String name) {
                this.name = name;
        }

        @Override
        public boolean exists() {
                return (this.name != null);
        }
       
        public boolean equals(Object o) {
                if (!(o instanceof MyEditorInput))
                        return false;
                return ((MyEditorInput)o).getName().equals(getName());
        }

        @Override
        public ImageDescriptor getImageDescriptor() {
                return ImageDescriptor.getMissingImageDescriptor();
        }

        @Override
        public String getName() {
                return this.name;
        }

        @Override
        public IPersistableElement getPersistable() {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public String getToolTipText() {
                return this.name;
        }

        @Override
        public Object getAdapter(Class adapter) {
                // TODO Auto-generated method stub
                return null;
        }
}



On édite plugin.xml, dans l'onglet "Extensions", on ajoute une extension en cliquant sur Add, on choisi "org.eclipse.ui.editor".
On set certaines propriétés comme sur le screenshot ci dessous.



Maintenant il ne reste plus qu'a lancer notre Editor au démarrage de l'application.
Pour cela on va surcharger la méthode postStartup() dans ApplicationWorkbenchAdvisor :
public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
        (...)
        @Override
        public void postStartup() {

                try {
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                        page.openEditor(new MyEditorInput("TutoGEF"), MyGraphicalEditor.ID, false);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}


Vous avez maintenant un plugin RCP fonctionnel disposant d'un Editor prêt à accueillir GEF :)

Vous pouvez télécharger le projet de ce tutorial ICI