mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-85507: JavaCommonIntentionActionsFactory#createAddMethodAction implementation
This commit is contained in:
+7
-2
@@ -38,8 +38,13 @@ abstract class JvmCommonIntentionActionsFactory {
|
||||
|
||||
open fun createChangeModifierAction(declaration: UDeclaration, @PsiModifier.ModifierConstant @NonNls modifier: String, shouldPresent: Boolean): IntentionAction? = null
|
||||
|
||||
open fun createAddMethodAction(u: UClass, methodName: String, returnType: PsiType, vararg parameters: PsiType): IntentionAction? = null
|
||||
open fun createAddMethodAction(u: UClass,
|
||||
methodName: String,
|
||||
@PsiModifier.ModifierConstant visibilityModifier: String,
|
||||
returnType: PsiType,
|
||||
vararg parameters: PsiType): IntentionAction? = null
|
||||
|
||||
companion object : LanguageExtension<JvmCommonIntentionActionsFactory>("com.intellij.codeInsight.intention.jvmCommonIntentionActionsFactory")
|
||||
companion object : LanguageExtension<JvmCommonIntentionActionsFactory>(
|
||||
"com.intellij.codeInsight.intention.jvmCommonIntentionActionsFactory") {}
|
||||
}
|
||||
|
||||
|
||||
+32
-1
@@ -15,10 +15,18 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.intention.impl
|
||||
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.ModifierFix
|
||||
import com.intellij.codeInsight.intention.AbstractIntentionAction
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import org.jetbrains.uast.UDeclaration
|
||||
import com.intellij.codeInsight.intention.JvmCommonIntentionActionsFactory
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.util.VisibilityUtil
|
||||
import org.jetbrains.annotations.NotNull
|
||||
import org.jetbrains.uast.UClass
|
||||
import org.jetbrains.uast.UDeclaration
|
||||
|
||||
|
||||
class JavaCommonIntentionActionsFactory : JvmCommonIntentionActionsFactory() {
|
||||
@@ -27,4 +35,27 @@ class JavaCommonIntentionActionsFactory : JvmCommonIntentionActionsFactory() {
|
||||
return ModifierFix(declaration.modifierList, modifier, shouldPresent, false)
|
||||
}
|
||||
|
||||
override fun createAddMethodAction(u: UClass,
|
||||
methodName: String,
|
||||
@PsiModifier.ModifierConstant @NotNull visibilityModifier: String,
|
||||
returnType: PsiType,
|
||||
vararg parameters: PsiType): IntentionAction? {
|
||||
val paramsString = parameters.mapIndexed { i, t -> "${t.presentableText} arg$i" }.joinToString()
|
||||
val signatureString =
|
||||
"${VisibilityUtil.getVisibilityString(visibilityModifier)} ${returnType.presentableText} $methodName($paramsString){}"
|
||||
val smartPsi = SmartPointerManager.getInstance(u.project).createSmartPsiElementPointer(u.psi)
|
||||
return object : AbstractIntentionAction() {
|
||||
|
||||
private val text = QuickFixBundle.message("add.method.text", methodName, u.name)
|
||||
|
||||
override fun getText(): String = text
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: PsiFile) {
|
||||
val psi = smartPsi.element ?: return
|
||||
val createMethodFromText = PsiElementFactory.SERVICE.getInstance(u.project)
|
||||
.createMethodFromText(signatureString, psi)
|
||||
psi.add(createMethodFromText)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user