diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ProjectFileExclusionManager.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ProjectFileExclusionManager.java index 82eeba9b06d1..f480e53dbbd8 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ProjectFileExclusionManager.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ProjectFileExclusionManager.java @@ -27,25 +27,24 @@ import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.util.containers.HashSet; import com.intellij.util.indexing.FileBasedIndex; import org.jdom.Attribute; import org.jdom.Element; import org.jetbrains.annotations.NotNull; -import java.util.Collection; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; /** * @author Rustam Vishnyakov */ -@State(name = "ExcludedFiles", storages = {@Storage(id = "default", file = "$PROJECT_FILE$")}) +@State(name = "ProjectFileExclusionManager", storages = {@Storage(id = "default", file = "$PROJECT_FILE$")}) public class ProjectFileExclusionManager implements PersistentStateComponent { private final static String FILE_ELEMENT = "file"; - private final static String PATH_ATTR = "path"; + private final static String PATH_ATTR = "url"; - private final Map myExcludedFiles = new TreeMap(); + private final Set myExcludedFiles = new HashSet(); private final Project myProject; public ProjectFileExclusionManager(Project project) { @@ -54,14 +53,14 @@ public class ProjectFileExclusionManager implements PersistentStateComponent getExcludedFiles() { - return myExcludedFiles.values(); + return myExcludedFiles; + } + + public Collection getSortedExcludedFiles() { + List excludedFiles = new ArrayList(); + excludedFiles.addAll(myExcludedFiles); + Collections.sort(excludedFiles, new Comparator() { + public int compare(final VirtualFile file1, final VirtualFile file2) { + return file1.getPath().toLowerCase().compareTo(file2.getPath().toLowerCase()); + } + }); + return excludedFiles; } @Override public Element getState() { final Element root = new Element("root"); - for (String key : myExcludedFiles.keySet()) { - VirtualFile vf = myExcludedFiles.get(key); + for (VirtualFile vf : getSortedExcludedFiles()) { final Element vfElement = new Element(FILE_ELEMENT); final Attribute filePathAttr = new Attribute(PATH_ATTR, VfsUtil.pathToUrl(vf.getPath())); vfElement.setAttribute(filePathAttr); @@ -108,7 +117,7 @@ public class ProjectFileExclusionManager implements PersistentStateComponent