IDEA-64495 Have IntelliJ's datasource files (*.IDS) treated same as IML, IPR, & IWS files

This commit is contained in:
Gregory Shrago
2011-04-18 20:12:00 +04:00
parent 67f98f42a6
commit 8bad5be23e
15 changed files with 58 additions and 51 deletions
@@ -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);
}
@@ -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 +"/");
}
}
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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 {
}
@@ -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";
@@ -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");
@@ -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;
@@ -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;
@@ -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;
}
}
@@ -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);
}
}
@@ -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;
@@ -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;
/**