package org.eclipse.uml2.diagram.common.stereo; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.uml2.diagram.common.internal.stereo.PackageStereotypeAdapter; import org.eclipse.uml2.diagram.common.internal.stereo.TaggedValueHelperImpl; import org.eclipse.uml2.uml.Element; import org.eclipse.uml2.uml.Stereotype; public class StereotypeUtil { public static void addStereotypeListener(org.eclipse.uml2.uml.Package umlPackage, StereotypeListener l) { addStereotypeListener(umlPackage.eResource(), l); } public static void addStereotypeListener(Diagram gmfDiagram, StereotypeListener l) { EObject umlElement = gmfDiagram.getElement(); addStereotypeListener(umlElement.eResource(), l); } public static void addStereotypeListener(Resource semanticResource, StereotypeListener l) { PackageStereotypeAdapter real = new PackageStereotypeAdapter(l); semanticResource.eAdapters().add(real); } public static boolean removeStereotypeListener(Resource resource, StereotypeListener l) { PackageStereotypeAdapter forListener = null; for (Adapter next : resource.eAdapters()) { if (next instanceof PackageStereotypeAdapter && ((PackageStereotypeAdapter) next).isForListener(l)) { forListener = (PackageStereotypeAdapter) next; break; } } if (forListener != null) { resource.eAdapters().remove(forListener); } return forListener != null; } public static TaggedValueHelper createTaggedValueHelper(Element existingStereotypedElement, Stereotype stereo) { return new TaggedValueHelperImpl(existingStereotypedElement, stereo); } }