void () { disposeNonTextEditor(); final ImplementationViewElement foundElement = mySwitcher.getCurrentElement(); final Project project = foundElement.getProject(); final VirtualFile vFile = foundElement.getContainingFile(); if (vFile == null) return; for (ImplementationViewDocumentFactory documentFactory : ImplementationViewDocumentFactory.EP_NAME.getExtensions()) { Document document = documentFactory.createDocument(foundElement); if (document != null) { replaceEditor(project, vFile, documentFactory, document); return; } } for (FileEditorProvider provider : FileEditorProviderManager.getInstance().getProviderList(project, vFile)) { if (provider instanceof QuickDefinitionProvider) { updateTextElement(foundElement); myBinarySwitch.show(myViewingPanel, TEXT_PAGE_KEY); break; } else if (provider.accept(project, vFile)) { myCurrentNonTextEditorProvider = provider; myNonTextEditor = myCurrentNonTextEditorProvider.createEditor(project, vFile); myBinaryPanel.removeAll(); myBinaryPanel.add(myNonTextEditor.getComponent()); myBinarySwitch.show(myViewingPanel, BINARY_PAGE_KEY); break; } } }