From d8be2e428e7ea60fc97ef26ac12e84cfd650f13f Mon Sep 17 00:00:00 2001 From: "Dmitry.Krasilschikov" Date: Wed, 17 Jun 2020 20:52:13 +0300 Subject: [PATCH] IDEA-239815 Help | What's new action opens editor GitOrigin-RevId: 4d83b8574c3c3fd568a739f2092cd9b9a1dc7b16 --- .../com/intellij/ide/actions/WhatsNewAction.java | 8 +++++++- .../openapi/fileEditor/impl/HTMLEditorProvider.kt | 11 +++++++++++ .../updateSettings/impl/UpdateInfoDialog.java | 13 ++----------- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/WhatsNewAction.java b/platform/platform-impl/src/com/intellij/ide/actions/WhatsNewAction.java index 926ac47198c4..20670c95788e 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/WhatsNewAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/WhatsNewAction.java @@ -7,13 +7,19 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.application.ex.ApplicationInfoEx; +import com.intellij.openapi.fileEditor.impl.HTMLEditorProvider; import com.intellij.openapi.project.DumbAware; import org.jetbrains.annotations.NotNull; public class WhatsNewAction extends AnAction implements DumbAware { @Override public void actionPerformed(@NotNull AnActionEvent e) { - BrowserUtil.browse(ApplicationInfoEx.getInstanceEx().getWhatsNewUrl()); + String text = e.getPresentation().getText(); + if (e.getProject() == null || text == null) { + BrowserUtil.browse(ApplicationInfoEx.getInstanceEx().getWhatsNewUrl()); + } else { + HTMLEditorProvider.Companion.openEditor(e.getProject(), ApplicationInfoEx.getInstanceEx().getWhatsNewUrl(), text); + } } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HTMLEditorProvider.kt b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HTMLEditorProvider.kt index bb21e4c031d1..877ea115989e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HTMLEditorProvider.kt +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HTMLEditorProvider.kt @@ -2,6 +2,7 @@ package com.intellij.openapi.fileEditor.impl import com.intellij.openapi.fileEditor.FileEditor +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.FileEditorPolicy import com.intellij.openapi.fileEditor.FileEditorProvider import com.intellij.openapi.project.DumbAware @@ -9,6 +10,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key import com.intellij.openapi.util.KeyWithDefaultValue import com.intellij.openapi.vfs.VirtualFile +import com.intellij.testFramework.LightVirtualFile class HTMLEditorProvider : FileEditorProvider, DumbAware { override fun createEditor(project: Project, file: VirtualFile): FileEditor = HTMLFileEditor() @@ -21,5 +23,14 @@ class HTMLEditorProvider : FileEditorProvider, DumbAware { companion object { val HTML_CONTENT_TYPE: Key = KeyWithDefaultValue.create("HTML_CONTENT_TYPE", false) + + fun openEditor(project: Project, url: String, title: String) { + val file = LightVirtualFile(title) + file.putUserData(HTML_CONTENT_TYPE, true) + val fileEditors = FileEditorManager.getInstance(project).openFile(file, true) + if (fileEditors.isNotEmpty() && fileEditors[0] is HTMLFileEditor) { + (fileEditors[0] as HTMLFileEditor).url = url + } + } } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java index dd9d5eddfdb7..e2e6065210de 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java @@ -13,10 +13,7 @@ import com.intellij.openapi.application.*; import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.application.impl.ApplicationImpl; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileEditor.FileEditor; -import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.impl.HTMLEditorProvider; -import com.intellij.openapi.fileEditor.impl.HTMLFileEditor; import com.intellij.openapi.progress.PerformInBackgroundOption; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; @@ -27,7 +24,6 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.testFramework.LightVirtualFile; import com.intellij.ui.JBColor; import com.intellij.ui.LicensingFacade; import com.intellij.util.SystemProperties; @@ -102,13 +98,8 @@ final class UpdateInfoDialog extends AbstractUpdateDialog { @Override public void actionPerformed(ActionEvent e) { String title = IdeBundle.message("update.whats.new.file.name", ApplicationInfo.getInstance().getFullVersion()); - LightVirtualFile file = new LightVirtualFile(title, myNewBuild.getMessage()); - file.putUserData(HTMLEditorProvider.Companion.getHTML_CONTENT_TYPE(), true); - FileEditor[] fileEditors = FileEditorManager.getInstance(project).openFile(file, true); - if (fileEditors.length > 0 && fileEditors[0] instanceof HTMLFileEditor) { - ((HTMLFileEditor)fileEditors[0]) - .setUrl(myNewBuild.getBlogPost() + "/?var=embed" + (UIUtil.isUnderDarcula() ? "&theme=dark" : "")); - } + HTMLEditorProvider.Companion + .openEditor(project, myNewBuild.getBlogPost() + "/?var=embed" + (UIUtil.isUnderDarcula() ? "&theme=dark" : ""), title); close(OK_EXIT_CODE); } };