mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
[floating toolbar] IDEA-322542: mark FloatingToolbarFilter deprecated
Preparing FloatingToolbarFilter for removal. FloatingToolbarCustomizer should be used instead. GitOrigin-RevId: b065860565e5918aa09a87b2aa82008c242a04d3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8294e727eb
commit
1502cdc977
@@ -31,7 +31,7 @@ import javax.swing.JComponent
|
||||
class CodeFloatingToolbar(
|
||||
editor: Editor,
|
||||
coroutineScope: CoroutineScope
|
||||
): FloatingToolbar(editor, coroutineScope, "Floating.CodeToolbar") {
|
||||
): FloatingToolbar(editor, coroutineScope) {
|
||||
|
||||
companion object {
|
||||
private val FLOATING_TOOLBAR = Key<CodeFloatingToolbar>("floating.codeToolbar")
|
||||
@@ -118,20 +118,21 @@ class CodeFloatingToolbar(
|
||||
return editor.visualToLogicalPosition(lineStartPosition).line
|
||||
}
|
||||
|
||||
override fun createActionGroup(): ActionGroup? {
|
||||
val contextAwareActionGroupId = getContextAwareGroupId()
|
||||
val mainActionGroup = CustomActionsSchema.getInstance().getCorrectedAction(contextAwareActionGroupId) as? ActionGroup ?: return super.createActionGroup()
|
||||
val showIntentionsAction = CustomActionsSchema.getInstance().getCorrectedAction("ShowIntentionActions") ?: error("Can't find ShowIntentionActions action")
|
||||
override fun createActionGroup(): ActionGroup {
|
||||
val contextAwareActionGroupId = getContextAwareGroupId(editor) ?: FloatingToolbarCustomizer.DefaultGroup().getActionGroup()
|
||||
val mainActionGroup = CustomActionsSchema.getInstance().getCorrectedAction(contextAwareActionGroupId) ?: error("Can't find groupId action")
|
||||
val showIntentionsAction = CustomActionsSchema.getInstance().getCorrectedAction("ShowIntentionActions")
|
||||
?: error("Can't find ShowIntentionActions action")
|
||||
val configurationGroup = createConfigureGroup(contextAwareActionGroupId)
|
||||
return DefaultActionGroup(showIntentionsAction, Separator.create(), mainActionGroup, Separator.create(), configurationGroup)
|
||||
}
|
||||
|
||||
private fun getContextAwareGroupId(): String {
|
||||
val project = editor.project ?: return defaultActionGroupId
|
||||
private fun getContextAwareGroupId(editor: Editor): String? {
|
||||
val project = editor.project ?: return null
|
||||
val psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.document)
|
||||
val elementAtOffset = psiFile?.findElementAt(editor.caretModel.primaryCaret.offset)
|
||||
val targetLanguage = elementAtOffset?.language ?: return defaultActionGroupId
|
||||
return FloatingToolbarCustomizer.findActionGroupFor(targetLanguage) ?: defaultActionGroupId
|
||||
val targetLanguage = elementAtOffset?.language ?: return null
|
||||
return FloatingToolbarCustomizer.findActionGroupFor(targetLanguage)
|
||||
}
|
||||
|
||||
private fun createConfigureGroup(customizableGroupId: String): ActionGroup {
|
||||
|
||||
@@ -16,9 +16,10 @@ internal class FloatingCodeToolbarEditorCustomizer: TextEditorCustomizer {
|
||||
val editor = textEditor.editor
|
||||
val project = editor.project ?: return
|
||||
val file = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) ?: return
|
||||
if (!FloatingToolbarFilter.isEnabledForLanguage(file.language)) {
|
||||
return
|
||||
}
|
||||
val languages = file.viewProvider.languages
|
||||
val isCustomizationAvailable = languages.any { language -> FloatingToolbarCustomizer.findActionGroupFor(language) != null }
|
||||
val isEnabledExplicitly = FloatingToolbarFilter.isEnabledForLanguage(file.language)
|
||||
if (!isCustomizationAvailable && !isEnabledExplicitly) return
|
||||
val coroutineScope = FloatingCodeToolbarScope.createChildScope(project)
|
||||
val toolbar = CodeFloatingToolbar(editor, coroutineScope)
|
||||
Disposer.register(textEditor, toolbar)
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.Internal
|
||||
public interface FloatingToolbarCustomizer {
|
||||
interface FloatingToolbarCustomizer {
|
||||
companion object {
|
||||
private val EP = LanguageExtension<FloatingToolbarCustomizer>("com.intellij.lang.floatingToolbarCustomizer")
|
||||
|
||||
@@ -17,4 +17,10 @@ public interface FloatingToolbarCustomizer {
|
||||
}
|
||||
|
||||
fun getActionGroup(): String?
|
||||
|
||||
class DefaultGroup: FloatingToolbarCustomizer {
|
||||
override fun getActionGroup(): String {
|
||||
return "Floating.CodeToolbar"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,9 @@ import java.util.List;
|
||||
* Extension point to enable floating code toolbar for specific language.
|
||||
* @see CodeFloatingToolbar
|
||||
* @see FloatingToolbarFilter.ENABLED
|
||||
* @deprecated Use {@link FloatingToolbarCustomizer} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public interface FloatingToolbarFilter {
|
||||
|
||||
LanguageExtension<FloatingToolbarFilter> EP = new LanguageExtension<>("com.intellij.lang.floatingToolbarFilter");
|
||||
@@ -24,6 +26,10 @@ public interface FloatingToolbarFilter {
|
||||
return ContainerUtil.all(supporters, supporter -> supporter.isEnabled());
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link FloatingToolbarCustomizer.DefaultGroup} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
class ENABLED implements FloatingToolbarFilter {
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
|
||||
@@ -4,7 +4,6 @@ package com.intellij.openapi.actionSystem.impl
|
||||
import com.intellij.codeInsight.hint.HintManager
|
||||
import com.intellij.codeInsight.hint.HintManagerImpl
|
||||
import com.intellij.ide.IdeEventQueue
|
||||
import com.intellij.ide.ui.customization.CustomActionsSchema
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces
|
||||
@@ -42,13 +41,12 @@ import kotlin.properties.Delegates
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
@ApiStatus.Internal
|
||||
open class FloatingToolbar(
|
||||
abstract class FloatingToolbar(
|
||||
val editor: Editor,
|
||||
/**
|
||||
* This scope will be canceled on dispose.
|
||||
*/
|
||||
private val coroutineScope: CoroutineScope,
|
||||
protected val defaultActionGroupId: String
|
||||
private val coroutineScope: CoroutineScope
|
||||
): Disposable {
|
||||
protected var hint: LightweightHint? = null
|
||||
private var buttonSize: Int by Delegates.notNull()
|
||||
@@ -83,6 +81,8 @@ open class FloatingToolbar(
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract fun createActionGroup(): ActionGroup?
|
||||
|
||||
open fun hideByOtherHints(): Boolean = false
|
||||
|
||||
@RequiresEdt
|
||||
@@ -154,10 +154,6 @@ open class FloatingToolbar(
|
||||
hide()
|
||||
}
|
||||
|
||||
protected open fun createActionGroup(): ActionGroup? {
|
||||
return CustomActionsSchema.getInstance().getCorrectedAction(defaultActionGroupId) as? ActionGroup
|
||||
}
|
||||
|
||||
private suspend fun createUpdatedActionToolbar(targetComponent: JComponent): ActionToolbar {
|
||||
return suspendCancellableCoroutine { continuation ->
|
||||
createActionToolbar(targetComponent) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.intellij.plugins.markdown.ui.floating
|
||||
|
||||
import com.intellij.ide.ui.customization.CustomActionsSchema
|
||||
import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.actionSystem.impl.FloatingToolbar
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.options.advanced.AdvancedSettings
|
||||
@@ -13,7 +15,7 @@ import org.intellij.plugins.markdown.lang.psi.impl.MarkdownFile
|
||||
internal class MarkdownFloatingToolbar(
|
||||
editor: Editor,
|
||||
coroutineScope: CoroutineScope
|
||||
): FloatingToolbar(editor, coroutineScope, "Markdown.Toolbar.Floating") {
|
||||
): FloatingToolbar(editor, coroutineScope) {
|
||||
private val elementsToIgnore = listOf(
|
||||
MarkdownElementTypes.CODE_FENCE,
|
||||
MarkdownElementTypes.CODE_BLOCK,
|
||||
@@ -32,4 +34,8 @@ internal class MarkdownFloatingToolbar(
|
||||
override fun isEnabled(): Boolean {
|
||||
return !AdvancedSettings.getBoolean("markdown.hide.floating.toolbar")
|
||||
}
|
||||
|
||||
override fun createActionGroup(): ActionGroup? {
|
||||
return CustomActionsSchema.getInstance().getCorrectedAction("Markdown.Toolbar.Floating") as? ActionGroup
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user