From 87ba153a2db213c915d18662297509d93a61529a Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 30 Jan 2015 23:31:44 +0300 Subject: [PATCH] Move fileType to upper level --- .../ide/scratch/ScratchFileServiceImpl.java | 12 ++- .../intellij/ide/scratch/ScratchFileType.java | 78 +++++++++++++++++++ .../intellij/ide/scratch/ScratchRootType.java | 63 +-------------- .../src/META-INF/LangExtensions.xml | 5 +- 4 files changed, 93 insertions(+), 65 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileType.java 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 f6496810aea0..f792078c5a54 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java @@ -169,7 +169,7 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { @Override public Language getMapping(@Nullable VirtualFile file) { Language language = super.getMapping(file); - if (language == null && file != null && file.getFileType() == ScratchRootType.SCRATCH_FILE_TYPE) { + if (language == null && file != null && file.getFileType() == ScratchFileType.INSTANCE) { String extension = file.getExtension(); FileType fileType = extension == null ? null : FileTypeManager.getInstance().getFileTypeByExtension(extension); language = fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null; @@ -229,6 +229,14 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { } } + public static class TypeFactory extends FileTypeFactory { + + @Override + public void createFileTypes(@NotNull FileTypeConsumer consumer) { + consumer.consume(ScratchFileType.INSTANCE); + } + } + public static class Substitutor extends LanguageSubstitutor { @Nullable @Override @@ -275,7 +283,7 @@ public abstract class ScratchFileServiceImpl extends ScratchFileService { @Override public boolean isWritable(@NotNull VirtualFile file) { - return ScratchFileService.getInstance().getRootType(file) != null; + return file.getFileType() == ScratchFileType.INSTANCE; } } diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileType.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileType.java new file mode 100644 index 000000000000..6a4f1c027b25 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileType.java @@ -0,0 +1,78 @@ +/* + * Copyright 2000-2015 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.scratch; + +import com.intellij.openapi.fileTypes.LanguageFileType; +import com.intellij.openapi.fileTypes.PlainTextFileType; +import com.intellij.openapi.fileTypes.PlainTextLanguage; +import com.intellij.openapi.fileTypes.ex.FileTypeIdentifiableByVirtualFile; +import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +/** + * @author gregsh + */ +public class ScratchFileType extends LanguageFileType implements FileTypeIdentifiableByVirtualFile { + + public static final LanguageFileType INSTANCE = new ScratchFileType(); + + ScratchFileType() { + super(PlainTextLanguage.INSTANCE); + } + + @Override + public boolean isMyFileType(@NotNull VirtualFile file) { + return ScratchFileService.getInstance().getRootType(file) != null; + } + + @NotNull + @Override + public String getName() { + return "Scratch"; + } + + @NotNull + @Override + public String getDescription() { + return "Scratch"; + } + + @NotNull + @Override + public String getDefaultExtension() { + return ""; + } + + @Nullable + @Override + public Icon getIcon() { + return PlainTextFileType.INSTANCE.getIcon(); + } + + @Override + public boolean isReadOnly() { + return true; + } + + @Nullable + @Override + public String getCharset(@NotNull VirtualFile file, @NotNull byte[] content) { + return null; + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java index 2f813722b91d..e128110c388b 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java @@ -18,8 +18,6 @@ package com.intellij.ide.scratch; import com.intellij.icons.AllIcons; import com.intellij.lang.Language; import com.intellij.lang.PerFileMappings; -import com.intellij.openapi.fileTypes.*; -import com.intellij.openapi.fileTypes.ex.FileTypeIdentifiableByVirtualFile; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.LanguageSubstitutors; @@ -35,8 +33,6 @@ import javax.swing.*; */ public final class ScratchRootType extends RootType { - public static final LanguageFileType SCRATCH_FILE_TYPE = new MyFileType(); - @NotNull public static ScratchRootType getInstance() { return findByClass(ScratchRootType.class); @@ -50,69 +46,14 @@ public final class ScratchRootType extends RootType { public Language substituteLanguage(@NotNull Project project, @NotNull VirtualFile file) { PerFileMappings mapping = ScratchFileService.getInstance().getScratchesMapping(); Language language = mapping.getMapping(file); - return language != null && language != SCRATCH_FILE_TYPE.getLanguage() ? + return language != null && language != ScratchFileType.INSTANCE.getLanguage() ? LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, project) : language; } @Nullable @Override public Icon substituteIcon(@NotNull Project project, @NotNull VirtualFile file) { - Icon icon = ObjectUtils.chooseNotNull(super.substituteIcon(project, file), SCRATCH_FILE_TYPE.getIcon()); + Icon icon = ObjectUtils.chooseNotNull(super.substituteIcon(project, file), ScratchFileType.INSTANCE.getIcon()); return LayeredIcon.create(icon, AllIcons.Actions.Scratch); } - - public static class TypeFactory extends FileTypeFactory { - - @Override - public void createFileTypes(@NotNull FileTypeConsumer consumer) { - consumer.consume(SCRATCH_FILE_TYPE); - } - } - - private static class MyFileType extends LanguageFileType implements FileTypeIdentifiableByVirtualFile { - - MyFileType() { - super(PlainTextLanguage.INSTANCE); - } - - @Override - public boolean isMyFileType(@NotNull VirtualFile file) { - return ScratchFileService.getInstance().getRootType(file) != null; - } - - @NotNull - @Override - public String getName() { - return "Scratch"; - } - - @NotNull - @Override - public String getDescription() { - return "Scratch"; - } - - @NotNull - @Override - public String getDefaultExtension() { - return ""; - } - - @Nullable - @Override - public Icon getIcon() { - return PlainTextFileType.INSTANCE.getIcon(); - } - - @Override - public boolean isReadOnly() { - return true; - } - - @Nullable - @Override - public String getCharset(@NotNull VirtualFile file, @NotNull byte[] content) { - return null; - } - } } diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 59ab584d4214..1ce3d821a60f 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -333,17 +333,18 @@ serviceImplementation="com.intellij.ide.scratch.ScratchFileServiceImpl$App"/> + + - + -