package jetbrains.mps.ide.editor.resolver;
/*Generated by MPS */
import jetbrains.mps.resolve.IResolver;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.model.SReference;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.module.SRepository;
import jetbrains.mps.resolve.ReferenceResolverUtils;
import jetbrains.mps.editor.runtime.HeadlessEditorComponent;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import typesystemIntegration.languageChecker.EditorBasedReferenceResolverUtils;
public class EditorResolver implements IResolver {
public EditorResolver() {
}
@Nullable
@Override
public boolean resolve(@NotNull SReference reference, @NotNull SNode sourceNode, @NotNull SRepository repository) {
final String resolveInfo = ReferenceResolverUtils.getResolveInfo(reference, sourceNode);
if (resolveInfo == null) {
return false;
}
final HeadlessEditorComponent headlessEditor = new HeadlessEditorComponent(SNodeOperations.getContainingRoot(sourceNode), repository);
try {
return EditorBasedReferenceResolverUtils.resolveInEditor(headlessEditor, sourceNode, resolveInfo, reference.getRole());
} finally {
headlessEditor.dispose();
}
}
}