Add find usages option: search expected
This commit is contained in:
+32
-5
@@ -30,6 +30,7 @@ import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.StateRestoringCheckBox;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtilsKt;
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle;
|
||||
import org.jetbrains.kotlin.idea.core.PsiModificationUtilsKt;
|
||||
@@ -37,6 +38,8 @@ import org.jetbrains.kotlin.idea.findUsages.KotlinClassFindUsagesOptions;
|
||||
import org.jetbrains.kotlin.idea.refactoring.RenderingUtilsKt;
|
||||
import org.jetbrains.kotlin.psi.KtClass;
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject;
|
||||
import org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass;
|
||||
@@ -45,6 +48,7 @@ public class KotlinFindClassUsagesDialog extends FindClassUsagesDialog {
|
||||
private StateRestoringCheckBox constructorUsages;
|
||||
private StateRestoringCheckBox derivedClasses;
|
||||
private StateRestoringCheckBox derivedTraits;
|
||||
private StateRestoringCheckBox expectedUsages;
|
||||
|
||||
public KotlinFindClassUsagesDialog(
|
||||
KtClassOrObject classOrObject,
|
||||
@@ -144,14 +148,36 @@ public class KotlinFindClassUsagesDialog extends FindClassUsagesDialog {
|
||||
return (KotlinClassFindUsagesOptions) super.getFindUsagesOptions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureLabelComponent(@NotNull SimpleColoredComponent coloredComponent) {
|
||||
@Nullable
|
||||
private KtClassOrObject getOriginalClass() {
|
||||
PsiElement klass = LightClassUtilsKt.getUnwrapped(getPsiElement());
|
||||
//noinspection ConstantConditions
|
||||
KtClassOrObject originalClass = klass instanceof KtClassOrObject
|
||||
? (KtClassOrObject) klass
|
||||
: klass.getUserData(ORIGINAL_CLASS);
|
||||
return klass instanceof KtClassOrObject
|
||||
? (KtClassOrObject) klass
|
||||
: klass.getUserData(ORIGINAL_CLASS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addUsagesOptions(JPanel optionsPanel) {
|
||||
super.addUsagesOptions(optionsPanel);
|
||||
|
||||
KtClassOrObject klass = getOriginalClass();
|
||||
boolean isActual = klass != null && PsiUtilsKt.hasActualModifier(klass);
|
||||
KotlinClassFindUsagesOptions options = getFindUsagesOptions();
|
||||
if (isActual) {
|
||||
expectedUsages = addCheckboxToPanel(
|
||||
"Expected classes",
|
||||
options.getSearchExpected(),
|
||||
optionsPanel,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureLabelComponent(@NotNull SimpleColoredComponent coloredComponent) {
|
||||
KtClassOrObject originalClass = getOriginalClass();
|
||||
if (originalClass != null) {
|
||||
coloredComponent.append(RenderingUtilsKt.formatClass(originalClass));
|
||||
}
|
||||
@@ -173,5 +199,6 @@ public class KotlinFindClassUsagesDialog extends FindClassUsagesDialog {
|
||||
kotlinOptions.setSearchConstructorUsages(constructorUsages.isSelected());
|
||||
kotlinOptions.isDerivedClasses = derivedClasses.isSelected();
|
||||
kotlinOptions.isDerivedInterfaces = derivedTraits.isSelected();
|
||||
kotlinOptions.setSearchExpected(isSelected(expectedUsages));
|
||||
}
|
||||
}
|
||||
|
||||
+35
@@ -20,17 +20,27 @@ import com.intellij.find.FindBundle;
|
||||
import com.intellij.find.FindSettings;
|
||||
import com.intellij.find.findUsages.FindMethodUsagesDialog;
|
||||
import com.intellij.find.findUsages.FindUsagesHandler;
|
||||
import com.intellij.find.findUsages.JavaMethodFindUsagesOptions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.StateRestoringCheckBox;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtilsKt;
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod;
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle;
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFunctionFindUsagesOptions;
|
||||
import org.jetbrains.kotlin.idea.refactoring.RenderingUtilsKt;
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration;
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration;
|
||||
import org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class KotlinFindFunctionUsagesDialog extends FindMethodUsagesDialog {
|
||||
private StateRestoringCheckBox expectedUsages;
|
||||
|
||||
public KotlinFindFunctionUsagesDialog(
|
||||
PsiMethod method,
|
||||
Project project,
|
||||
@@ -43,6 +53,7 @@ public class KotlinFindFunctionUsagesDialog extends FindMethodUsagesDialog {
|
||||
super(method, project, findUsagesOptions, toShowInNewTab, mustOpenInNewTab, isSingleFile, handler);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected KotlinFunctionFindUsagesOptions getFindUsagesOptions() {
|
||||
return (KotlinFunctionFindUsagesOptions) myFindUsagesOptions;
|
||||
@@ -89,5 +100,29 @@ public class KotlinFindFunctionUsagesDialog extends FindMethodUsagesDialog {
|
||||
false
|
||||
);
|
||||
}
|
||||
PsiElement element = LightClassUtilsKt.getUnwrapped(getPsiElement());
|
||||
//noinspection ConstantConditions
|
||||
KtDeclaration function = element instanceof KtNamedDeclaration
|
||||
? (KtNamedDeclaration) element
|
||||
: ((KtLightMethod) element).getKotlinOrigin();
|
||||
|
||||
boolean isActual = function != null && PsiUtilsKt.hasActualModifier(function);
|
||||
KotlinFunctionFindUsagesOptions options = getFindUsagesOptions();
|
||||
if (isActual) {
|
||||
expectedUsages = addCheckboxToPanel(
|
||||
"Expected functions",
|
||||
options.getSearchExpected(),
|
||||
optionsPanel,
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calcFindUsagesOptions(JavaMethodFindUsagesOptions options) {
|
||||
super.calcFindUsagesOptions(options);
|
||||
|
||||
KotlinFunctionFindUsagesOptions kotlinOptions = (KotlinFunctionFindUsagesOptions) options;
|
||||
kotlinOptions.setSearchExpected(isSelected(expectedUsages));
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle;
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinPropertyFindUsagesOptions;
|
||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration;
|
||||
import org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -49,7 +50,9 @@ public class KotlinFindPropertyUsagesDialog extends JavaFindUsagesDialog<KotlinP
|
||||
private StateRestoringCheckBox cbReaders;
|
||||
private StateRestoringCheckBox cbWriters;
|
||||
private StateRestoringCheckBox cbOverrides;
|
||||
private StateRestoringCheckBox cbExpected;
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected KotlinPropertyFindUsagesOptions getFindUsagesOptions() {
|
||||
return (KotlinPropertyFindUsagesOptions) myFindUsagesOptions;
|
||||
@@ -67,6 +70,7 @@ public class KotlinFindPropertyUsagesDialog extends JavaFindUsagesDialog<KotlinP
|
||||
options.isReadAccess = isSelected(cbReaders);
|
||||
options.isWriteAccess = isSelected(cbWriters);
|
||||
options.setSearchOverrides(isSelected(cbOverrides));
|
||||
options.setSearchExpected(isSelected(cbExpected));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -116,6 +120,16 @@ public class KotlinFindPropertyUsagesDialog extends JavaFindUsagesDialog<KotlinP
|
||||
false
|
||||
);
|
||||
}
|
||||
boolean isActual = PsiUtilsKt.hasActualModifier(property);
|
||||
KotlinPropertyFindUsagesOptions options = getFindUsagesOptions();
|
||||
if (isActual) {
|
||||
cbExpected = addCheckboxToPanel(
|
||||
"Expected properties",
|
||||
options.getSearchExpected(),
|
||||
optionsPanel,
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,13 @@ import com.intellij.find.findUsages.JavaMethodFindUsagesOptions
|
||||
import com.intellij.find.findUsages.JavaVariableFindUsagesOptions
|
||||
import com.intellij.openapi.project.Project
|
||||
|
||||
class KotlinClassFindUsagesOptions(project: Project) : JavaClassFindUsagesOptions(project) {
|
||||
interface KotlinMemberFindUsagesOptions {
|
||||
var searchExpected: Boolean
|
||||
}
|
||||
|
||||
class KotlinClassFindUsagesOptions(project: Project) : KotlinMemberFindUsagesOptions, JavaClassFindUsagesOptions(project) {
|
||||
override var searchExpected: Boolean = true
|
||||
|
||||
var searchConstructorUsages: Boolean = true
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
@@ -34,13 +40,15 @@ class KotlinClassFindUsagesOptions(project: Project) : JavaClassFindUsagesOption
|
||||
}
|
||||
}
|
||||
|
||||
interface KotlinCallableFindUsagesOptions {
|
||||
interface KotlinCallableFindUsagesOptions : KotlinMemberFindUsagesOptions {
|
||||
var searchOverrides: Boolean
|
||||
|
||||
fun toJavaOptions(project: Project): FindUsagesOptions?
|
||||
}
|
||||
|
||||
class KotlinFunctionFindUsagesOptions(project: Project) : KotlinCallableFindUsagesOptions, JavaMethodFindUsagesOptions(project) {
|
||||
override var searchExpected: Boolean = true
|
||||
|
||||
override var searchOverrides: Boolean
|
||||
get() = isOverridingMethods
|
||||
set(value) {
|
||||
@@ -67,6 +75,7 @@ class KotlinFunctionFindUsagesOptions(project: Project) : KotlinCallableFindUsag
|
||||
class KotlinPropertyFindUsagesOptions(
|
||||
project: Project
|
||||
) : KotlinCallableFindUsagesOptions, JavaVariableFindUsagesOptions(project) {
|
||||
override var searchExpected: Boolean = true
|
||||
var isReadWriteAccess: Boolean = true
|
||||
override var searchOverrides: Boolean = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user