package com.innovatian.idea.powershell.lang.psi;
import com.innovatian.idea.powershell.PsFileType;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.psi.*;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiShortNamesCache;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
public class PsPsiManager implements ProjectComponent
{
private final Project myProject;
private PsShortNamesCache myCache;
private PsiFile myDummyFile;
public PsPsiManager(Project project)
{
myProject = project;
}
public void projectOpened()
{
}
public void projectClosed()
{
}
@NotNull
public String getComponentName()
{
return "PsPsiManager";
}
public void initComponent()
{
myCache = new PsShortNamesCache(myProject);
StartupManager.getInstance(myProject).registerPostStartupActivity(new Runnable()
{
public void run()
{
ApplicationManager.getApplication().runWriteAction(new Runnable()
{
public void run()
{
if (!myProject.isDisposed())
{
JavaPsiFacade.getInstance(myProject).registerShortNamesCache(getNamesCache());
}
}
});
}
});
myDummyFile =
PsiFileFactory.getInstance(myProject)
.createFileFromText("dummy." + PsFileType.PS_FILE_TYPE.getDefaultExtension(), "");
}
public void disposeComponent()
{
}
public static PsPsiManager getInstance(Project project)
{
return project.getComponent(PsPsiManager.class);
}
public PsShortNamesCache getNamesCache()
{
return myCache;
}
}