logo MagicDraw
Version 17.0

Dans MagicDraw, l’Open API permet de mettre en place des écouteurs (où listeners) sur la création/modification/suppression d’éléments. Cela permet, par exemple, de mettre en place un certains nombre d’actions automatiques afin de faire gagner du temps à l’utilisateur et de limiter les erreurs.

Développer un listener

Le développement d’un listener est relativement simple. Il suffit de créer une nouvelle classe qui implémente PropertyChangeListener et de faire le traitement souhaité dans la méthode propertyChange.

// Listener qui ajoute un stereotype à l'élement concerné (le type d'élément et le type d'action seront définis "plus haut")
public class MyListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent event) {
Element source = (Element) event.getSource();
StereotypesHelper.addStereotypeByString(source, "MonStereotype");
}
}

Enregistrer le listener

Il faut enregistrer notre listener au niveau du projet. Le listener est donc enregistré à l’ouverture du projet et effacé à la fermeture du projet au niveau d’un listener projet (classe qui étend ProjectEventListenerAdapter). C’est également à ce moment que l’on peut définir sur quel type d’éléments de listener s’applique et à quelle(s) action(s).

public class ProjectListener extends ProjectEventListenerAdapter {
private final Collection config;
private final MyListener myListener;
public ProjectListener() {
config = Collections.singleton(new SmartListenerConfig(UML2MetamodelConstants.INSTANCE_CREATED));
myListener = new MyListener();
}
// Méthode exécutée à l'ouverture d'un projet
@Override
public void projectOpened(Project project) {
// Enregistrement du listener qui écoutera la création des éléments de type UseCase
project.getSmartEventSupport().registerConfig(UseCase.class, config, myListener);
}
// Méthode exécutée à la fermeture d'un projet
@Override
public void projectClosed(Project project) {
project.getSmartEventSupport().unregisterConfig(UseCase.class, config, myListener);
}
}

Le listener projet doit quant à lui être enregistré à l’initialisation du plugin et effacé à la fermeture de MagicDraw (pour être propre).
public class ExtensionsPlugin extends Plugin {
private ProjectListener projectListener;
// Méthode exécutée au démarrage de MagicDraw
@Override
public void init() {
projectListener = new ProjectListener();
Application.getInstance().addProjectEventListener(projectListener);
}
// Méthode exécutée à la fermeture de MagicDraw
@Override
public boolean close() {
Application.getInstance().removeProjectEventListener(projectListener);
return true;
}
// Méthode qui définit si le plugin est supporté
@Override
public boolean isSupported() {
return true;
}
}

La documentation de l’API MagicDraw est disponible dans le manuel MagicDraw OpenAPI UserGuide.pdf

A vous de jouer !

Publicités