From d37ab607bd407df19cb355663115f39319757fd1 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Sat, 10 Jun 2017 20:32:48 +0200 Subject: [PATCH] Support Svg editor --- .../editor/impl/ImageFileEditorProvider.java | 11 ++++++---- .../impl/ImageFileTypeManagerImpl.java | 20 ++++++++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/images/src/org/intellij/images/editor/impl/ImageFileEditorProvider.java b/images/src/org/intellij/images/editor/impl/ImageFileEditorProvider.java index ec58737d12b5..c36fa48e2c0f 100644 --- a/images/src/org/intellij/images/editor/impl/ImageFileEditorProvider.java +++ b/images/src/org/intellij/images/editor/impl/ImageFileEditorProvider.java @@ -15,9 +15,8 @@ */ package org.intellij.images.editor.impl; -import com.intellij.openapi.fileEditor.FileEditor; -import com.intellij.openapi.fileEditor.FileEditorPolicy; -import com.intellij.openapi.fileEditor.FileEditorProvider; +import com.intellij.openapi.fileEditor.*; +import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -47,7 +46,11 @@ final class ImageFileEditorProvider implements FileEditorProvider, DumbAware { @Override @NotNull public FileEditor createEditor(@NotNull Project project, @NotNull VirtualFile file) { - return new ImageFileEditorImpl(project, file); + ImageFileEditorImpl viewer = new ImageFileEditorImpl(project, file); + if ("svg".equalsIgnoreCase(file.getExtension())) { + return new TextEditorWithPreview((TextEditor)TextEditorProvider.getInstance().createEditor(project, file), viewer); + } + return viewer; } @Override diff --git a/images/src/org/intellij/images/fileTypes/impl/ImageFileTypeManagerImpl.java b/images/src/org/intellij/images/fileTypes/impl/ImageFileTypeManagerImpl.java index 096883fa0b20..e30a72d328c6 100644 --- a/images/src/org/intellij/images/fileTypes/impl/ImageFileTypeManagerImpl.java +++ b/images/src/org/intellij/images/fileTypes/impl/ImageFileTypeManagerImpl.java @@ -19,7 +19,7 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeConsumer; import com.intellij.openapi.fileTypes.UserBinaryFileType; import com.intellij.openapi.fileTypes.UserFileType; -import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import gnu.trove.THashSet; @@ -43,16 +43,18 @@ final class ImageFileTypeManagerImpl extends ImageFileTypeManager { @NonNls private static final String IMAGE_FILE_TYPE_NAME = "Images"; private static final String IMAGE_FILE_TYPE_DESCRIPTION = ImagesBundle.message("images.filetype.description"); private static final UserFileType imageFileType; + private static final UserFileType svgFileType; static { imageFileType = new ImageFileType(); imageFileType.setIcon(ImagesIcons.ImagesFileType); imageFileType.setName(IMAGE_FILE_TYPE_NAME); imageFileType.setDescription(IMAGE_FILE_TYPE_DESCRIPTION); + svgFileType = new SvgFileType(); } public boolean isImage(VirtualFile file) { - return file.getFileType() instanceof ImageFileType; + return file.getFileType() instanceof ImageFileType || file.getFileType() instanceof SvgFileType; } public FileType getImageFileType() { @@ -62,6 +64,18 @@ final class ImageFileTypeManagerImpl extends ImageFileTypeManager { public static final class ImageFileType extends UserBinaryFileType { } + public static final class SvgFileType extends UserFileType { + @Override + public SettingsEditor getEditor() { + return null; + } + + @Override + public boolean isBinary() { + return false; + } + } + public void createFileTypes(final @NotNull FileTypeConsumer consumer) { final Set processed = new THashSet<>(); @@ -73,8 +87,8 @@ final class ImageFileTypeManagerImpl extends ImageFileTypeManager { } processed.add(IfsUtil.ICO_FORMAT.toLowerCase()); - if (Registry.is("ide.svg.viewer")) processed.add(IfsUtil.SVG_FORMAT.toLowerCase()); consumer.consume(imageFileType, StringUtil.join(processed, FileTypeConsumer.EXTENSION_DELIMITER)); + consumer.consume(svgFileType, "svg"); } }