package org.eclipse.gmf.tooling.runtime.impl.ocl.tracker.activeocl; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.ecore.EObject; class ContextDataWithAdapter extends org.eclipse.gmf.tooling.runtime.impl.ocl.tracker.activeocl.ContextData { private final Adapter myAdapter; public ContextDataWithAdapter(EObject context, final org.eclipse.gmf.tooling.runtime.impl.ocl.activeocl.ActiveOclListener listener) { super(context); myAdapter = new AdapterImpl() { @Override public void notifyChanged(Notification notification) { if (getFeatures().contains(notification.getFeature())) { listener.onResultChanged(); } } @Override public boolean isAdapterForType(Object type) { return true; } }; getContext().eAdapters().add(myAdapter); } public void dispose() { getContext().eAdapters().remove(myAdapter); } }