mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
open as native via empty interface INativeFileType
This commit is contained in:
@@ -19,7 +19,7 @@ package com.intellij.psi.impl;
|
||||
import com.intellij.navigation.ItemPresentation;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.NativeFileType;
|
||||
import com.intellij.openapi.fileTypes.INativeFileType;
|
||||
import com.intellij.openapi.fileTypes.UnknownFileType;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
@@ -136,7 +136,7 @@ public abstract class ElementBase extends UserDataHolderBase implements Iconable
|
||||
}
|
||||
|
||||
public static boolean isNativeFileType(FileType fileType) {
|
||||
return fileType instanceof NativeFileType || fileType instanceof UnknownFileType;
|
||||
return fileType instanceof INativeFileType || fileType instanceof UnknownFileType;
|
||||
}
|
||||
|
||||
protected Icon getAdjustedBaseIcon(Icon icon, int flags) {
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.intellij.navigation.NavigationItem;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileHelper;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.fileEditor.impl.EditorHistoryManager;
|
||||
import com.intellij.openapi.ui.popup.JBPopup;
|
||||
@@ -33,6 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.Navigatable;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.ElementBase;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -93,7 +93,9 @@ public final class NavigationUtil {
|
||||
boolean openAsNative = false;
|
||||
if (elt instanceof PsiFile) {
|
||||
VirtualFile virtualFile = ((PsiFile)elt).getVirtualFile();
|
||||
openAsNative = OpenFileHelper.openAsNative(virtualFile);
|
||||
if (virtualFile != null) {
|
||||
openAsNative = ElementBase.isNativeFileType(virtualFile.getFileType());
|
||||
}
|
||||
}
|
||||
if (openAsNative || !activatePsiElementIfOpen(elt)) {
|
||||
((NavigationItem)elt).navigate(true);
|
||||
|
||||
+1
-4
@@ -17,9 +17,6 @@
|
||||
package com.intellij.openapi.fileTypes.impl;
|
||||
|
||||
import com.intellij.ide.FileIconProvider;
|
||||
import com.intellij.openapi.fileEditor.OpenFileHelper;
|
||||
import com.intellij.openapi.fileTypes.NativeFileType;
|
||||
import com.intellij.openapi.fileTypes.UnknownFileType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -93,7 +90,7 @@ public class NativeFileIconProvider implements FileIconProvider {
|
||||
}
|
||||
|
||||
protected boolean isNativeFileType(VirtualFile file) {
|
||||
return OpenFileHelper.openAsNative(file) || ElementBase.isNativeFileType(file.getFileType());
|
||||
return ElementBase.isNativeFileType(file.getFileType());
|
||||
}
|
||||
|
||||
private static class Ext extends ComparableObject.Impl {
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.DataKey;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.INativeFileType;
|
||||
import com.intellij.openapi.fileTypes.NativeFileType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -119,12 +120,7 @@ public class OpenFileDescriptor implements Navigatable {
|
||||
FileType type = FileTypeManager.getInstance().getKnownFileTypeOrAssociate(myFile);
|
||||
if (type == null || !myFile.isValid()) return false;
|
||||
|
||||
boolean openAsNative = OpenFileHelper.openAsNative(myFile);
|
||||
|
||||
if (!openAsNative) {
|
||||
openAsNative = type instanceof NativeFileType;
|
||||
}
|
||||
if (openAsNative) {
|
||||
if (type instanceof INativeFileType) {
|
||||
return NativeFileType.openAssociatedApplication(myFile);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.intellij.openapi.fileEditor;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
|
||||
public abstract class OpenFileHelper {
|
||||
|
||||
public static boolean openAsNative(VirtualFile virtualFile) {
|
||||
boolean openAsNative = false;
|
||||
for (OpenFileHelper h : Extensions.getExtensions(EP_NAME)) {
|
||||
if (h.canHelp(virtualFile)) {
|
||||
openAsNative = h.doOpenAsNative(virtualFile);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return openAsNative;
|
||||
}
|
||||
|
||||
public static ExtensionPointName<OpenFileHelper> EP_NAME = ExtensionPointName.create("com.intellij.openFileDescriptorHelper");
|
||||
|
||||
public abstract boolean canHelp(VirtualFile file);
|
||||
|
||||
public abstract boolean doOpenAsNative(VirtualFile file);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.intellij.openapi.fileTypes;
|
||||
|
||||
public interface INativeFileType extends FileType {
|
||||
}
|
||||
@@ -29,7 +29,7 @@ import java.util.List;
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public class NativeFileType implements FileType {
|
||||
public class NativeFileType implements INativeFileType {
|
||||
private static final Icon ICON = IconLoader.getIcon("/fileTypes/custom.png");
|
||||
private NativeFileType() { }
|
||||
|
||||
|
||||
@@ -113,5 +113,4 @@
|
||||
|
||||
<extensionPoint name="xmlRpcHandler" beanClass="com.intellij.ide.XmlRpcHandlerBean"/>
|
||||
|
||||
<extensionPoint name="openFileDescriptorHelper" interface="com.intellij.openapi.fileEditor.OpenFileHelper"/>
|
||||
</extensionPoints>
|
||||
|
||||
Reference in New Issue
Block a user