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