diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java index 4d3941a13cc1..cb38ec244ddc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java @@ -874,7 +874,8 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec // Now we have to create EditorComposite and insert it into the TabbedEditorComponent. // After that we have to select opened editor. - EditorWithProviderComposite composite = new EditorWithProviderComposite(file, newEditors, newProviders, FileEditorManagerImpl.this); + EditorWithProviderComposite composite = createComposite(file, newEditors, newProviders); + if (composite == null) return; if (index >= 0) { composite.getFile().putUserData(EditorWindow.INITIAL_INDEX_KEY, index); @@ -960,7 +961,30 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec } } }); - return Pair.create(compositeRef.get().getEditors(), compositeRef.get().getProviders()); + EditorWithProviderComposite composite = compositeRef.get(); + return Pair.create(composite == null ? EMPTY_EDITOR_ARRAY : composite.getEditors(), + composite == null ? EMPTY_PROVIDER_ARRAY : composite.getProviders()); + } + + @Nullable + private EditorWithProviderComposite createComposite(@NotNull VirtualFile file, + @NotNull FileEditor[] editors, @NotNull FileEditorProvider[] providers) { + if (NullUtils.hasNull(editors) || NullUtils.hasNull(providers)) { + List editorList = new ArrayList(editors.length); + List providerList = new ArrayList(providers.length); + for (int i = 0; i < editors.length; i++) { + FileEditor editor = editors[i]; + FileEditorProvider provider = providers[i]; + if (editor != null && provider != null) { + editorList.add(editor); + providerList.add(provider); + } + } + if (editorList.isEmpty()) return null; + editors = editorList.toArray(new FileEditor[editorList.size()]); + providers = providerList.toArray(new FileEditorProvider[providerList.size()]); + } + return new EditorWithProviderComposite(file, editors, providers, this); } private static void clearWindowIfNeeded(@NotNull EditorWindow window) {