From 3da5494bb9c170691f8601a302e612554b3e5b0c Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Thu, 15 Jan 2015 18:28:48 +0300 Subject: [PATCH] Scratches: cleanup --- .../intellij/ide/scratch/ScratchFileService.java | 10 ++++++---- .../ide/scratch/ScratchFileServiceImpl.java | 14 +++++++++----- .../com/intellij/ide/scratch/ScratchWidget.java | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileService.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileService.java index dd4dcc190646..f6f0e2ae410f 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileService.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileService.java @@ -29,7 +29,7 @@ import java.util.Map; public abstract class ScratchFileService { - public static RootType SCRATCHES = RootType.newRootType("scratches", "Scratches"); + public static final RootType SCRATCHES = RootType.newRootType("scratches", "Scratches"); public static ScratchFileService getInstance(@NotNull Project project) { return ServiceManager.getService(project, ScratchFileService.class); @@ -42,11 +42,11 @@ public abstract class ScratchFileService { @NotNull public abstract String getRootPath(@NotNull RootType rootType); + public abstract boolean isFileInRoot(@NotNull VirtualFile file, @NotNull RootType rootType); + @Nullable public abstract VirtualFile createScratchFile(@NotNull Project project, @NotNull Language language, @NotNull String initialContent); - public abstract boolean isScratchFile(@NotNull VirtualFile file); - @NotNull public abstract PerFileMappings getScratchesMapping(); @@ -56,15 +56,17 @@ public abstract class ScratchFileService { private final String myId; private final String myDisplayName; - private RootType(String id, String displayName) { + private RootType(@NotNull String id, @Nullable String displayName) { myId = id; myDisplayName = displayName; } + @NotNull public String getId() { return myId; } + @Nullable public String getDisplayName() { return myDisplayName; } diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java index 797b2480c7a5..dc9102cd1337 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java @@ -236,7 +236,7 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { @Override public boolean isWritable(@NotNull VirtualFile file) { - return file.getFileType() == SCRATCH_FILE_TYPE; // todo ensure project is OK + return file.getFileType() == SCRATCH_FILE_TYPE; } } @@ -280,8 +280,13 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { } @Override - public boolean isScratchFile(@NotNull VirtualFile file) { - return file.getFileType() == SCRATCH_FILE_TYPE; + public boolean isFileInRoot(@NotNull VirtualFile file, @NotNull RootType rootType) { + return rootType == SCRATCHES ? file.getFileType() == SCRATCH_FILE_TYPE : isFileInRootImpl(file, rootType); + } + + private static boolean isFileInRootImpl(@NotNull VirtualFile file, RootType scratches) { + String rootPath = ScratchFileService.getInstance().getRootPath(scratches); + return file.getPath().startsWith(rootPath); } private static class MyFileType extends LanguageFileType implements FileTypeIdentifiableByVirtualFile, InternalFileType { @@ -292,8 +297,7 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { @Override public boolean isMyFileType(@NotNull VirtualFile file) { - String rootPath = ScratchFileService.getInstance().getRootPath(SCRATCHES); - return file.getPath().startsWith(rootPath); + return isFileInRootImpl(file, SCRATCHES); } @NotNull diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchWidget.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchWidget.java index 41d341035e69..e5f7577fe43f 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchWidget.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchWidget.java @@ -106,7 +106,7 @@ class ScratchWidget extends EditorBasedWidget implements CustomStatusBarWidget.M VirtualFile file = getSelectedFile(); if (file == null) return; ScratchFileService fileService = ScratchFileService.getInstance(); - if (fileService.isScratchFile(file)) { + if (fileService.isFileInRoot(file, ScratchFileService.SCRATCHES)) { Language lang = fileService.getScratchesMapping().getMapping(file); if (lang == null) { lang = LanguageSubstitutors.INSTANCE.substituteLanguage(((LanguageFileType)file.getFileType()).getLanguage(), file, project);