package jetbrains.mps.idea.java.fastFind;
/*Generated by MPS */
import org.jetbrains.mps.openapi.persistence.NavigationParticipant;
import com.intellij.openapi.components.ApplicationComponent;
import java.util.Collection;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.util.Consumer;
import jetbrains.mps.idea.java.psiStubs.PsiJavaStubModelDescriptor;
import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.PsiClass;
import org.jetbrains.mps.openapi.language.SConcept;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jetbrains.mps.openapi.model.SNodeReference;
import jetbrains.mps.idea.java.psiStubs.JavaForeignIdBuilder;
import jetbrains.mps.persistence.PersistenceRegistry;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
public class JavaPsiStubsNavigationContributor implements NavigationParticipant, ApplicationComponent {
public JavaPsiStubsNavigationContributor() {
}
public void findTargets(NavigationParticipant.TargetKind kind, Collection<SModel> collection, Consumer<NavigationParticipant.NavigationTarget> consumer, Consumer<SModel> processedConsumer) {
for (SModel model : collection) {
if (!(model instanceof PsiJavaStubModelDescriptor)) {
continue;
}
for (PsiJavaFile javaFile : ((PsiJavaStubModelDescriptor) model).getSource().getJavaFiles()) {
for (PsiClass psiClass : javaFile.getClasses()) {
final PsiClass psiClaz = psiClass;
final String name = psiClaz.getName();
if (name == null || name.trim().equals("")) {
continue;
}
consumer.consume(new NavigationParticipant.NavigationTarget() {
public String getPresentation() {
return name;
}
public SConcept getConcept() {
if (psiClaz.isAnnotationType()) {
return (SConcept) MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a69dc80cL, "jetbrains.mps.baseLanguage.structure.Annotation");
} else if (psiClaz.isInterface()) {
return (SConcept) MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101edd46144L, "jetbrains.mps.baseLanguage.structure.Interface");
} else if (psiClaz.isEnum()) {
return (SConcept) MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xfc367070a5L, "jetbrains.mps.baseLanguage.structure.EnumClass");
} else {
return (SConcept) MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, "jetbrains.mps.baseLanguage.structure.ClassConcept");
}
}
public SNodeReference getNodeReference() {
return JavaForeignIdBuilder.computeNodePtr(psiClaz).toSNodeReference();
}
});
}
}
processedConsumer.consume(model);
}
}
public void initComponent() {
PersistenceRegistry.getInstance().addNavigationParticipant(this);
}
public void disposeComponent() {
PersistenceRegistry.getInstance().removeNavigationParticipant(this);
}
@NonNls
@NotNull
public String getComponentName() {
return "Java PSI stubs navigation participant";
}
}