Converted to Kotlin

This commit is contained in:
Valentin Kipyatkov
2015-05-05 16:30:20 +03:00
parent 0c7a366ddf
commit 1fa14af02f
2 changed files with 58 additions and 63 deletions
@@ -1,63 +0,0 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.idea.quickfix;
import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyIntention;
import org.jetbrains.kotlin.psi.JetCallableDeclaration;
import org.jetbrains.kotlin.psi.JetNamedFunction;
import org.jetbrains.kotlin.psi.JetProperty;
import org.jetbrains.kotlin.types.JetType;
@SuppressWarnings("IntentionDescriptionNotFoundInspection")
public class SpecifyTypeExplicitlyFix extends PsiElementBaseIntentionAction {
@NotNull
@Override
public String getFamilyName() {
return "Specify type explicitly";
}
@Override
public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement element) {
//noinspection unchecked
JetCallableDeclaration declaration = PsiTreeUtil.getParentOfType(element, JetProperty.class, JetNamedFunction.class);
JetType type = SpecifyTypeExplicitlyIntention.Companion.getTypeForDeclaration(declaration);
SpecifyTypeExplicitlyIntention.Companion.addTypeAnnotation(editor, declaration, type);
}
@Override
public boolean isAvailable(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement element) {
//noinspection unchecked
JetCallableDeclaration declaration = PsiTreeUtil.getParentOfType(element, JetProperty.class, JetNamedFunction.class);
if (declaration instanceof JetProperty) {
setText("Specify type explicitly");
}
else if (declaration instanceof JetNamedFunction) {
setText("Specify return type explicitly");
}
else {
return false;
}
return !SpecifyTypeExplicitlyIntention.Companion.getTypeForDeclaration(declaration).isError();
}
}
@@ -0,0 +1,58 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyIntention
import org.jetbrains.kotlin.psi.JetCallableDeclaration
import org.jetbrains.kotlin.psi.JetNamedFunction
import org.jetbrains.kotlin.psi.JetProperty
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
SuppressWarnings("IntentionDescriptionNotFoundInspection")
public class SpecifyTypeExplicitlyFix : PsiElementBaseIntentionAction() {
override fun getFamilyName() = "Specify type explicitly"
override fun invoke(project: Project, editor: Editor, element: PsiElement) {
val declaration = declarationByElement(element)!!
val type = SpecifyTypeExplicitlyIntention.getTypeForDeclaration(declaration)
SpecifyTypeExplicitlyIntention.addTypeAnnotation(editor, declaration, type)
}
override fun isAvailable(project: Project, editor: Editor, element: PsiElement): Boolean {
val declaration = declarationByElement(element)
if (declaration is JetProperty) {
setText("Specify type explicitly")
}
else if (declaration is JetNamedFunction) {
setText("Specify return type explicitly")
}
else {
return false
}
return !SpecifyTypeExplicitlyIntention.getTypeForDeclaration(declaration).isError()
}
private fun declarationByElement(element: PsiElement): JetCallableDeclaration? {
return PsiTreeUtil.getParentOfType(element, javaClass<JetProperty>(), javaClass<JetNamedFunction>()) as JetCallableDeclaration?
}
}