package jetbrains.mps.ide.java.platform.highlighters.methodcallsfixer;
/*Generated by MPS */
import jetbrains.mps.smodel.event.SModelEventVisitorAdapter;
import jetbrains.mps.smodel.event.SModelChildEvent;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.smodel.event.SModelReferenceEvent;
import org.jetbrains.mps.openapi.model.SReference;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.smodel.event.SModelPropertyEvent;
import jetbrains.mps.smodel.event.SModelReplacedEvent;
/**
* Updates {@link jetbrains.mps.ide.java.platform.highlighters.methodcallsfixer.MethodCallsUpdateSession } according to visited events.
*/
/*package*/ class UpdateSessionEventVisitor extends SModelEventVisitorAdapter {
private final MethodCallsUpdateSession mySession;
/*package*/ UpdateSessionEventVisitor(MethodCallsUpdateSession session) {
mySession = session;
}
@Override
public void visitChildEvent(SModelChildEvent event) {
SNode child = event.getChild();
if (event.isAdded() && child.getModel() != null) {
mySession.nodeAdded(child);
} else {
SNode formerParent = event.getParent();
SModel m = event.getModel();
mySession.nodeRemoved(child, formerParent, m);
}
}
@Override
public void visitReferenceEvent(SModelReferenceEvent event) {
SReference reference = event.getReference();
SNode sourceNode = reference.getSourceNode();
if (SNodeOperations.isInstanceOf(sourceNode, MetaAdapterFactory.getInterfaceConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, "jetbrains.mps.baseLanguage.structure.IMethodCall")) && MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, 0xf8c78301adL, "baseMethodDeclaration").equals(reference.getLink())) {
SNode methodCall = SNodeOperations.cast(sourceNode, MetaAdapterFactory.getInterfaceConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, "jetbrains.mps.baseLanguage.structure.IMethodCall"));
mySession.methodCallChanged(methodCall);
}
}
@Override
public void visitPropertyEvent(SModelPropertyEvent event) {
SNode node = event.getNode();
SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, "jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration"));
if (SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, "jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration")) && MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name").getName().equals(event.getPropertyName())) {
mySession.methodDeclarationNameChanged(node);
mySession.methodDeclarationSignatureChanged(node);
}
}
@Override
public void visitReplacedEvent(SModelReplacedEvent event) {
throw new IllegalArgumentException("SModelReplacedEvent should have been handled by the caller");
}
}