/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.core; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.FileEditorManagerEvent; import com.intellij.openapi.fileEditor.FileEditorManagerListener; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.PathUtil; import gw.config.AbstractPlatformHelper; import gw.lang.reflect.module.IModule; import gw.plugin.ij.lang.psi.impl.GosuClassParseDataCache; import org.jetbrains.annotations.NotNull; import java.io.File; public class IDEAPlatformHelper extends AbstractPlatformHelper implements FileEditorManagerListener { private Project _project; public IDEAPlatformHelper(Project project) { _project = project; } @Override public boolean isInIDE() { return true; } @Override public boolean shouldCacheTypeNames() { return true; } @Override public void refresh(IModule module) { GosuClassParseDataCache.clear(); } // FileEditorManagerListener public void fileOpened(FileEditorManager source, final VirtualFile file) { } public void fileClosed(FileEditorManager source, VirtualFile file) { } public void selectionChanged(@NotNull FileEditorManagerEvent event) { } @Override public File getIndexFile(String id) { final File indexPath = PathManager.getIndexRoot(); File dir = new File(indexPath, "gosutypenames"); if (!dir.exists()) { dir.mkdir(); } String projectID = _project.getName() + "$" + _project.getLocationHash(); return new File(dir, projectID + "$" + id + "$index.txt"); } public File getIDEACachesDirFile() { return new File(getIDEACachesDir()); } public String getIDEACachesDir() { String dir = System.getProperty("caches_dir"); return dir == null ? PathManager.getSystemPath() + "/caches/" : dir; } public File getIDEACorruptionMarkerFile() { return new File(getIDEACachesDirFile(), "corruption.marker"); } }