diff --git a/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java b/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java index 6e679e17a9ae..eba3184bccba 100644 --- a/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java +++ b/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java @@ -16,13 +16,9 @@ package com.intellij.analysis; -import com.intellij.ide.highlighter.ModuleFileType; -import com.intellij.ide.highlighter.ProjectFileType; -import com.intellij.ide.highlighter.WorkspaceFileType; import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.progress.ProgressIndicator; @@ -322,11 +318,7 @@ public class AnalysisScope { final FileIndex projectFileIndex, final PsiManager psiManager, final boolean needReadAction) { if (fileOrDir.isDirectory()) return true; - final FileType fileType = fileOrDir.getFileType(); - if (fileType instanceof WorkspaceFileType || - fileType instanceof ProjectFileType || - fileType instanceof ModuleFileType || - fileOrDir.getPath().contains("/.idea/")) return true; + if (ProjectUtil.isProjectOrWorkspaceFile(fileOrDir)) return true; if (projectFileIndex.isInContent(fileOrDir) && (myIncludeTestSource || !projectFileIndex.isInTestSourceContent(fileOrDir))) { return processFile(fileOrDir, visitor, psiManager, needReadAction); } diff --git a/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java b/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java index dec2bfb9fdb1..38aeeb4565ff 100644 --- a/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java +++ b/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java @@ -19,6 +19,11 @@ */ package com.intellij.openapi.project; +import com.intellij.ide.highlighter.InternalFileType; +import com.intellij.ide.highlighter.ModuleFileType; +import com.intellij.ide.highlighter.ProjectFileType; +import com.intellij.ide.highlighter.WorkspaceFileType; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.util.SystemInfo; @@ -26,6 +31,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFilePathWrapper; import com.intellij.util.SystemProperties; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,6 +39,8 @@ import java.io.File; import java.io.IOException; public class ProjectUtil { + @NonNls public static final String DIRECTORY_BASED_PROJECT_DIR = ".idea"; + private ProjectUtil() { } @@ -91,4 +99,14 @@ public class ProjectUtil { public static Project guessProjectForFile(VirtualFile file) { return ProjectLocator.getInstance().guessProjectForFile(file); } + + public static boolean isProjectOrWorkspaceFile(final VirtualFile file) { + return isProjectOrWorkspaceFile(file, file.getFileType()); + } + + public static boolean isProjectOrWorkspaceFile(final VirtualFile file, + final FileType fileType) { + if (fileType instanceof InternalFileType) return true; + return file.getPath().contains("/"+ DIRECTORY_BASED_PROJECT_DIR +"/"); + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightLevelUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightLevelUtil.java index 4c426c9e864d..fe7ebe6d818c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightLevelUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightLevelUtil.java @@ -16,9 +16,9 @@ package com.intellij.codeInsight.daemon.impl.analysis; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index 64326746a86d..8bfa2e639829 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -18,7 +18,6 @@ package com.intellij.find.impl; import com.intellij.find.*; import com.intellij.find.ngrams.TrigramIndex; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; @@ -39,6 +38,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.FileIndexImplUtil; import com.intellij.openapi.ui.MessageType; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndex.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndex.java index a45986ba7d9d..3db3e5528531 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndex.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndex.java @@ -16,11 +16,11 @@ package com.intellij.psi.impl.cache.impl.id; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.lang.cacheBuilder.CacheBuilderRegistry; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.fileTypes.impl.AbstractFileType; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.indexing.*; import com.intellij.util.io.DataExternalizer; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java index 7229aa6353ca..6d410ad075f9 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java @@ -16,7 +16,6 @@ package com.intellij.psi.impl.cache.impl.todo; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.lang.Language; import com.intellij.lang.LanguageParserDefinitions; import com.intellij.lang.ParserDefinition; @@ -24,6 +23,7 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.fileTypes.impl.AbstractFileType; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.cache.impl.id.IdTableBuilding; diff --git a/platform/platform-api/src/com/intellij/ide/highlighter/InternalFileType.java b/platform/platform-api/src/com/intellij/ide/highlighter/InternalFileType.java new file mode 100644 index 000000000000..337b92e6af6d --- /dev/null +++ b/platform/platform-api/src/com/intellij/ide/highlighter/InternalFileType.java @@ -0,0 +1,24 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.highlighter; + +import com.intellij.openapi.fileTypes.FileType; + +/** + * @author gregsh + */ +public interface InternalFileType extends FileType { +} diff --git a/platform/platform-api/src/com/intellij/ide/highlighter/ModuleFileType.java b/platform/platform-api/src/com/intellij/ide/highlighter/ModuleFileType.java index 432d607237f0..6860c3519dda 100644 --- a/platform/platform-api/src/com/intellij/ide/highlighter/ModuleFileType.java +++ b/platform/platform-api/src/com/intellij/ide/highlighter/ModuleFileType.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; -public class ModuleFileType implements FileType { +public class ModuleFileType implements InternalFileType { @NonNls public static final String DEFAULT_EXTENSION = "iml"; @NonNls public static final String DOT_DEFAULT_EXTENSION = ".iml"; diff --git a/platform/platform-api/src/com/intellij/ide/highlighter/ProjectFileType.java b/platform/platform-api/src/com/intellij/ide/highlighter/ProjectFileType.java index f3195959355e..4fdc799cd4d1 100644 --- a/platform/platform-api/src/com/intellij/ide/highlighter/ProjectFileType.java +++ b/platform/platform-api/src/com/intellij/ide/highlighter/ProjectFileType.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; -public class ProjectFileType implements FileType { +public class ProjectFileType implements InternalFileType { @NonNls public static final String DEFAULT_EXTENSION = "ipr"; @NonNls public static final String DOT_DEFAULT_EXTENSION = ".ipr"; private static final Icon ICON = IconLoader.getIcon("/nodes/ideaProject.png"); diff --git a/platform/platform-api/src/com/intellij/ide/highlighter/WorkspaceFileType.java b/platform/platform-api/src/com/intellij/ide/highlighter/WorkspaceFileType.java index dd5526a5f368..f862445871b0 100644 --- a/platform/platform-api/src/com/intellij/ide/highlighter/WorkspaceFileType.java +++ b/platform/platform-api/src/com/intellij/ide/highlighter/WorkspaceFileType.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; -public class WorkspaceFileType implements FileType { +public class WorkspaceFileType implements InternalFileType { private static final Icon ICON = IconLoader.getIcon("/nodes/ideaWorkspace.png"); @NonNls public static final String DEFAULT_EXTENSION = "iws"; @NonNls public static final String DOT_DEFAULT_EXTENSION = "." + DEFAULT_EXTENSION; diff --git a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java index 2f711b709d27..a7506922888b 100644 --- a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java +++ b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java @@ -15,7 +15,6 @@ */ package com.intellij.ide; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.PersistentStateComponent; @@ -23,6 +22,7 @@ import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.SystemInfo; diff --git a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java index 36b251b3b02f..62c5cf0a798b 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java @@ -18,13 +18,10 @@ package com.intellij.ide.impl; import com.intellij.CommonBundle; import com.intellij.ide.GeneralSettings; import com.intellij.ide.IdeBundle; -import com.intellij.ide.highlighter.ModuleFileType; import com.intellij.ide.highlighter.ProjectFileType; -import com.intellij.ide.highlighter.WorkspaceFileType; import com.intellij.openapi.components.StorageScheme; import com.intellij.openapi.components.impl.stores.IProjectStore; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ex.ProjectEx; @@ -42,7 +39,6 @@ import com.intellij.openapi.wm.WindowManager; import com.intellij.projectImport.ProjectOpenProcessor; import com.intellij.ui.AppIcon; import org.jdom.JDOMException; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -55,7 +51,6 @@ import java.io.IOException; */ public class ProjectUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.ide.impl.ProjectUtil"); - @NonNls public static final String DIRECTORY_BASED_PROJECT_DIR = ".idea"; private ProjectUtil() { } @@ -109,7 +104,7 @@ public class ProjectUtil { } if (path.endsWith(ProjectFileType.DOT_DEFAULT_EXTENSION) || - virtualFile.isDirectory() && virtualFile.findChild(DIRECTORY_BASED_PROJECT_DIR) != null) { + virtualFile.isDirectory() && virtualFile.findChild(com.intellij.openapi.project.ProjectUtil.DIRECTORY_BASED_PROJECT_DIR) != null) { return openProject(path, projectToClose, forceOpenInNewFrame); } @@ -138,8 +133,8 @@ public class ProjectUtil { return null; } - if (file.isDirectory() && !new File(file, DIRECTORY_BASED_PROJECT_DIR).exists()) { - Messages.showMessageDialog(IdeBundle.message("error.project.file.does.not.exist", new File(file, DIRECTORY_BASED_PROJECT_DIR).getPath()), CommonBundle.getErrorTitle(), + if (file.isDirectory() && !new File(file, com.intellij.openapi.project.ProjectUtil.DIRECTORY_BASED_PROJECT_DIR).exists()) { + Messages.showMessageDialog(IdeBundle.message("error.project.file.does.not.exist", new File(file, com.intellij.openapi.project.ProjectUtil.DIRECTORY_BASED_PROJECT_DIR).getPath()), CommonBundle.getErrorTitle(), Messages.getErrorIcon()); return null; } @@ -238,22 +233,4 @@ public class ProjectUtil { IdeFocusManager.getInstance(p).requestFocus(cmd, false); } } - - public static boolean isProjectOrWorkspaceFile(final VirtualFile file) { - return isProjectOrWorkspaceFile(file, file.getFileType()); - } - - public static boolean isProjectOrWorkspaceFile(final VirtualFile file, - final FileType fileType) { - final boolean iprBased = fileType instanceof WorkspaceFileType || fileType instanceof ProjectFileType || fileType instanceof ModuleFileType; - if (iprBased) return true; - VirtualFile parent = file.getParent(); - if (parent != null) { - if (parent.getName().equals(DIRECTORY_BASED_PROJECT_DIR)) return true; - parent = parent.getParent(); - if (parent != null && parent.getName().equals(DIRECTORY_BASED_PROJECT_DIR)) return true; - } - - return false; - } } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java index f171994ad807..901babbf609d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java @@ -15,9 +15,6 @@ */ package com.intellij.openapi.diff.impl.mergeTool; -import com.intellij.ide.highlighter.ModuleFileType; -import com.intellij.ide.highlighter.ProjectFileType; -import com.intellij.ide.highlighter.WorkspaceFileType; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.undo.DocumentReference; @@ -31,6 +28,7 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.project.ex.ProjectManagerEx; import com.intellij.openapi.vfs.VirtualFile; @@ -93,8 +91,7 @@ public interface MergeVersion { FileDocumentManager.getInstance().saveDocument(myDocument); final VirtualFile file = getFile(); if (file != null) { - final FileType fileType = file.getFileType(); - if (fileType instanceof ProjectFileType || fileType instanceof WorkspaceFileType || fileType instanceof ModuleFileType) { + if (ProjectUtil.isProjectOrWorkspaceFile(file)) { ProjectManagerEx.getInstanceEx().saveChangedProjectFile(file, project); } } diff --git a/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java b/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java index 5ba74aad86c4..5b47b049cb19 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java @@ -16,11 +16,11 @@ package com.maddyhome.idea.copyright.util; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.lang.Commenter; import com.intellij.lang.LanguageCommenters; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.*; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; diff --git a/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java b/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java index 359779267cf3..b20fe9c1571f 100644 --- a/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java +++ b/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java @@ -16,8 +16,8 @@ package com.intellij.xml.util; import com.intellij.ide.highlighter.XmlFileType; -import com.intellij.ide.impl.ProjectUtil; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.include.FileIncludeInfo; import com.intellij.psi.impl.include.FileIncludeProvider; @@ -27,7 +27,6 @@ import com.intellij.util.text.CharSequenceReader; import com.intellij.util.xml.NanoXmlUtil; import org.jetbrains.annotations.NotNull; -import java.io.ByteArrayInputStream; import java.util.ArrayList; /**