/**
*
*/
package org.eclipse.papyrus.infra.core.resource.uml;
import org.eclipse.papyrus.infra.core.listenerservice.ModelListenerManager;
import org.eclipse.papyrus.infra.core.resource.IModel;
import org.eclipse.papyrus.infra.core.resource.IModelSnippet;
/**
* A snippet registering adapters to the UML model.
*
* @author cedric dumoulin
*
*/
public class UmlSnippet implements IModelSnippet {
private ModelListenerManager modelListenerManager;
/**
* Register the UML adapters
*
* @see org.eclipse.papyrus.infra.core.resource.IModelSnippet#start(org.eclipse.papyrus.infra.core.resource.IModel)
*
* @param startingModel
*/
public void start(IModel startingModel) {
// Modl should be an uml one
UmlModel umlModel = (UmlModel)startingModel;
// add adapters
modelListenerManager = new ModelListenerManager();
umlModel.getResource().eAdapters().add(modelListenerManager);
}
public void dispose(IModel stoppingModel) {
// Modl should be an uml one
UmlModel umlModel = (UmlModel)stoppingModel;
// add adapters
try {
if(umlModel.getResource() != null) {
umlModel.getResource().eAdapters().remove(modelListenerManager);
}
} catch (NullPointerException e) {
// resource is already disposed, or not loaded. Do nothing
}
}
}