mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJP-755 load what's new from jb.com right into editor
GitOrigin-RevId: 2faca6e424af2151336c89e0f62a24631f462431
This commit is contained in:
committed by
intellij-monorepo-bot
parent
87fd308f5a
commit
a5a158d7a6
+1
-1
@@ -11,7 +11,7 @@ import com.intellij.openapi.util.KeyWithDefaultValue
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
|
||||
class HTMLEditorProvider : FileEditorProvider, DumbAware {
|
||||
override fun createEditor(project: Project, file: VirtualFile): FileEditor = HTMLFileEditor(file)
|
||||
override fun createEditor(project: Project, file: VirtualFile): FileEditor = HTMLFileEditor()
|
||||
|
||||
override fun accept(project: Project, file: VirtualFile) = file.getUserData(HTML_CONTENT_TYPE)!!
|
||||
|
||||
|
||||
@@ -1,31 +1,60 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.fileEditor.impl
|
||||
|
||||
import com.intellij.CommonBundle
|
||||
import com.intellij.ide.plugins.MultiPanel
|
||||
import com.intellij.openapi.application.invokeLater
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.fileEditor.FileEditorLocation
|
||||
import com.intellij.openapi.fileEditor.FileEditorState
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.ui.ScrollPaneFactory
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import com.intellij.ui.components.JBLoadingPanel
|
||||
import com.intellij.ui.jcef.JCEFHtmlPanel
|
||||
import org.cef.browser.CefBrowser
|
||||
import org.cef.handler.CefLoadHandlerAdapter
|
||||
import java.awt.BorderLayout
|
||||
import java.beans.PropertyChangeListener
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JEditorPane
|
||||
|
||||
class HTMLFileEditor(private val vFile: VirtualFile) : FileEditor {
|
||||
private val component: JComponent =
|
||||
ScrollPaneFactory.createScrollPane(
|
||||
JEditorPane().also {
|
||||
it.editorKit = UIUtil.getHTMLEditorKit()
|
||||
it.text = VfsUtil.loadText(vFile)
|
||||
it.border = JBUI.Borders.empty(8, 12)
|
||||
it.isEditable = false
|
||||
})
|
||||
class HTMLFileEditor : FileEditor {
|
||||
private val htmlPanelComponent = JCEFHtmlPanel(null)
|
||||
private val loadingPanel = JBLoadingPanel(BorderLayout(), this).apply { setLoadingText(CommonBundle.getLoadingTreeNodeText()) }
|
||||
|
||||
override fun getComponent(): JComponent = component
|
||||
override fun getPreferredFocusedComponent() = component
|
||||
private val multiPanel: MultiPanel = object : MultiPanel() {
|
||||
override fun create(key: Int) = when (key) {
|
||||
LOADING_KEY -> loadingPanel
|
||||
CONTENT_KEY -> htmlPanelComponent.component
|
||||
else -> throw UnsupportedOperationException("Unknown key")
|
||||
}
|
||||
}
|
||||
|
||||
var url: String = "about:blank"
|
||||
set(value) {
|
||||
field = value
|
||||
htmlPanelComponent.loadURL(value)
|
||||
multiPanel.select(CONTENT_KEY, true)
|
||||
}
|
||||
|
||||
init {
|
||||
htmlPanelComponent.jbCefClient.addLoadHandler(object : CefLoadHandlerAdapter() {
|
||||
override fun onLoadingStateChange(browser: CefBrowser?, isLoading: Boolean, canGoBack: Boolean, canGoForward: Boolean) {
|
||||
if (isLoading) {
|
||||
invokeLater {
|
||||
loadingPanel.startLoading()
|
||||
multiPanel.select(LOADING_KEY, true)
|
||||
}
|
||||
}
|
||||
else {
|
||||
invokeLater {
|
||||
loadingPanel.stopLoading()
|
||||
multiPanel.select(CONTENT_KEY, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, htmlPanelComponent.cefBrowser)
|
||||
}
|
||||
|
||||
override fun getComponent() = multiPanel
|
||||
override fun getPreferredFocusedComponent() = multiPanel
|
||||
override fun getName() = "HTML Preview"
|
||||
override fun setState(state: FileEditorState) {}
|
||||
override fun isModified(): Boolean = false
|
||||
@@ -36,4 +65,9 @@ class HTMLFileEditor(private val vFile: VirtualFile) : FileEditor {
|
||||
override fun removePropertyChangeListener(listener: PropertyChangeListener) {}
|
||||
override fun getCurrentLocation(): FileEditorLocation? = null
|
||||
override fun dispose() {}
|
||||
|
||||
companion object {
|
||||
const val LOADING_KEY = 1
|
||||
const val CONTENT_KEY = 0
|
||||
}
|
||||
}
|
||||
+8
-1
@@ -13,8 +13,10 @@ 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;
|
||||
@@ -32,6 +34,7 @@ import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -101,7 +104,11 @@ final class UpdateInfoDialog extends AbstractUpdateDialog {
|
||||
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);
|
||||
FileEditorManager.getInstance(project).openFile(file, 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" : ""));
|
||||
}
|
||||
close(OK_EXIT_CODE);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user