From 64cdfb7dd22c63ee3d9c7c4fbc94dabb0efb1b86 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 21 Mar 2018 19:44:17 +0300 Subject: [PATCH] default quick doc for files: show basic attributes (for IDEA-145898) --- .../documentation/DocumentationManager.java | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 968e1e1a8578..904d54a6fb6a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -13,6 +13,7 @@ import com.intellij.codeInsight.lookup.LookupEx; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.ide.BrowserUtil; import com.intellij.ide.actions.BaseNavigateToSourceAction; +import com.intellij.ide.highlighter.ArchiveFileType; import com.intellij.ide.util.PropertiesComponent; import com.intellij.ide.util.gotoByName.ChooseByNameBase; import com.intellij.lang.Language; @@ -28,6 +29,9 @@ import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.PlainTextFileType; +import com.intellij.openapi.fileTypes.UnknownFileType; import com.intellij.openapi.preview.PreviewManager; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; @@ -37,6 +41,8 @@ import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.*; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.*; import com.intellij.openapi.wm.ex.ToolWindowEx; @@ -51,6 +57,7 @@ import com.intellij.ui.popup.AbstractPopup; import com.intellij.ui.popup.PopupUpdateProcessor; import com.intellij.util.Alarm; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -60,7 +67,12 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; import java.lang.ref.WeakReference; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributes; import java.util.*; import java.util.List; @@ -1152,8 +1164,12 @@ public class DocumentationManager extends DockablePopupManager result = new Ref<>(); QuickDocUtil.runInReadActionWithWriteActionPriorityWithRetries(() -> { if (!myElement.isValid()) return; - final SmartPsiElementPointer originalElement = myElement.getUserData(ORIGINAL_ELEMENT_KEY); - String doc = provider.generateDoc(myElement, originalElement != null ? originalElement.getElement() : null); + SmartPsiElementPointer originalPointer = myElement.getUserData(ORIGINAL_ELEMENT_KEY); + PsiElement originalPsi = originalPointer != null ? originalPointer.getElement() : null; + String doc = provider.generateDoc(myElement, originalPsi); + if (doc == null && myElement instanceof PsiFile) { + doc = generateFileDoc((PsiFile)myElement); + } result.set(doc); }, DOC_GENERATION_TIMEOUT_MILLISECONDS, DOC_GENERATION_PAUSE_MILLISECONDS, null); return result.get(); @@ -1176,5 +1192,29 @@ public class DocumentationManager extends DockablePopupManager"); } }