mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Move fileType to upper level
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<Language> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -333,17 +333,18 @@
|
||||
serviceImplementation="com.intellij.ide.scratch.ScratchFileServiceImpl$App"/>
|
||||
<projectService serviceInterface="com.intellij.ide.scratch.ScratchFileService"
|
||||
serviceImplementation="com.intellij.ide.scratch.ScratchFileServiceImpl$Prj"/>
|
||||
|
||||
<fileTypeFactory implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$TypeFactory"/>
|
||||
<navbar implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$NavBarExtension"/>
|
||||
<lang.substitutor language="TEXT" implementationClass="com.intellij.ide.scratch.ScratchFileServiceImpl$Substitutor" order="first"/>
|
||||
<nonProjectFileWritingAccessExtension implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$AccessExtension"/>
|
||||
<fileIconProvider implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$FilePresentation"/>
|
||||
<editorTabTitleProvider implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$FilePresentation"/>
|
||||
|
||||
<syntaxHighlighter factoryClass="com.intellij.ide.scratch.ScratchFileServiceImpl$Highlighter" order="first"/>
|
||||
|
||||
<scratch.rootType implementation="com.intellij.ide.scratch.ScratchRootType" />
|
||||
<scratch.rootType implementation="com.intellij.execution.console.HistoryRootType"/>
|
||||
<scratch.rootType implementation="com.intellij.execution.console.IdeConsoleRootType"/>
|
||||
<fileTypeFactory implementation="com.intellij.ide.scratch.ScratchRootType$TypeFactory"/>
|
||||
|
||||
<colorSettingsPage implementation="com.intellij.openapi.options.colors.pages.GeneralColorsPage" id="general"/>
|
||||
<colorSettingsPage implementation="com.intellij.openapi.options.colors.pages.DefaultLanguageColorsPage" id="defaultLanguage"/>
|
||||
|
||||
Reference in New Issue
Block a user