Added parameter info + isAvailable
This commit is contained in:
@@ -36,7 +36,7 @@ public abstract class JetIntentionAction<T extends PsiElement> implements Intent
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
|
public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiFile file) {
|
||||||
return element.isValid() && (file.getManager().isInProject(file) || file instanceof JetCodeFragment) && (file instanceof JetFile);
|
return element.isValid() && (file.getManager().isInProject(file) || file instanceof JetCodeFragment) && (file instanceof JetFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.quickfix
|
package org.jetbrains.kotlin.idea.quickfix
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.hint.ShowParameterInfoHandler
|
||||||
import com.intellij.codeInsight.intention.HighPriorityAction
|
import com.intellij.codeInsight.intention.HighPriorityAction
|
||||||
import com.intellij.codeInsight.intention.IntentionAction
|
import com.intellij.codeInsight.intention.IntentionAction
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||||
@@ -62,7 +65,7 @@ public object SuperClassNotInitialized : JetIntentionActionsFactory() {
|
|||||||
val substitutor = TypeUtils.makeSubstitutorForTypeParametersMap(typeArgsMap)
|
val substitutor = TypeUtils.makeSubstitutorForTypeParametersMap(typeArgsMap)
|
||||||
|
|
||||||
for (constructor in constructors) {
|
for (constructor in constructors) {
|
||||||
if (constructor.getValueParameters().isNotEmpty() && constructor.getValueParameters().none { it.getType().isError() }) {
|
if (constructor.getValueParameters().isNotEmpty()) {
|
||||||
val substitutedConstructor = constructor.substitute(substitutor) as ConstructorDescriptor
|
val substitutedConstructor = constructor.substitute(substitutor) as ConstructorDescriptor
|
||||||
fixes.add(AddParametersFix(delegator, classOrObjectDeclaration, substitutedConstructor))
|
fixes.add(AddParametersFix(delegator, classOrObjectDeclaration, substitutedConstructor))
|
||||||
}
|
}
|
||||||
@@ -85,7 +88,13 @@ public object SuperClassNotInitialized : JetIntentionActionsFactory() {
|
|||||||
val newSpecifier = element.replaced(JetPsiFactory(project).createDelegatorToSuperCall(element.getText() + "()"))
|
val newSpecifier = element.replaced(JetPsiFactory(project).createDelegatorToSuperCall(element.getText() + "()"))
|
||||||
|
|
||||||
if (putCaretIntoParenthesis) {
|
if (putCaretIntoParenthesis) {
|
||||||
editor?.moveCaret(newSpecifier.getValueArgumentList()!!.getLeftParenthesis()!!.getTextRange().getEndOffset())
|
if (editor != null) {
|
||||||
|
val offset = newSpecifier.getValueArgumentList()!!.getLeftParenthesis()!!.getTextRange().getEndOffset()
|
||||||
|
editor.moveCaret(offset)
|
||||||
|
if (!ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
|
ShowParameterInfoHandler.invoke(project, editor, file, offset - 1, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,6 +107,11 @@ public object SuperClassNotInitialized : JetIntentionActionsFactory() {
|
|||||||
|
|
||||||
override fun getFamilyName() = "Add constructor parameters from superclass"
|
override fun getFamilyName() = "Add constructor parameters from superclass"
|
||||||
|
|
||||||
|
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile): Boolean {
|
||||||
|
//TODO: can ConstructorDescriptor become invalid?
|
||||||
|
return super.isAvailable(project, editor, file) && superConstructor.getValueParameters().none { it.getType().isError() }
|
||||||
|
}
|
||||||
|
|
||||||
override fun getText(): String {
|
override fun getText(): String {
|
||||||
return "Add constructor parameters from " +
|
return "Add constructor parameters from " +
|
||||||
superConstructor.getContainingDeclaration().getName().asString() +
|
superConstructor.getContainingDeclaration().getName().asString() +
|
||||||
|
|||||||
Reference in New Issue
Block a user