IDEA-239815 Help | What's new action opens editor

GitOrigin-RevId: 4d83b8574c3c3fd568a739f2092cd9b9a1dc7b16
This commit is contained in:
Dmitry.Krasilschikov
2020-06-17 21:01:59 +03:00
committed by intellij-monorepo-bot
parent d1d4830e30
commit d8be2e428e
3 changed files with 20 additions and 12 deletions
@@ -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
@@ -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<Boolean> = 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
}
}
}
}
@@ -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);
}
};