reuse PsiClassListCellRenderer instance

This commit is contained in:
peter
2016-05-19 10:44:19 +02:00
parent 3039f8117b
commit 3bea588f19
18 changed files with 22 additions and 27 deletions
@@ -333,7 +333,7 @@ public class MarkerType {
return null;
}
Comparator<PsiClass> comparator = new PsiClassListCellRenderer().getComparator();
Comparator<PsiClass> comparator = PsiClassListCellRenderer.INSTANCE.getComparator();
Arrays.sort(subclasses, comparator);
String start = aClass.isInterface()
@@ -120,7 +120,7 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction {
final Project project = firstClass.getProject();
final JList list = new JBList(classes);
PsiElementListCellRenderer renderer = new PsiClassListCellRenderer();
PsiElementListCellRenderer renderer = PsiClassListCellRenderer.INSTANCE;
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(renderer);
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
@@ -103,7 +103,7 @@ public class CreateInnerClassFromUsageFix extends CreateClassFromUsageBaseFix {
final Project project = classes[0].getProject();
final JList list = new JBList(classes);
PsiElementListCellRenderer renderer = new PsiClassListCellRenderer();
PsiElementListCellRenderer renderer = PsiClassListCellRenderer.INSTANCE;
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(renderer);
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
@@ -99,7 +99,7 @@ public class PullAsAbstractUpFix extends LocalQuickFixAndIntentionActionOnPsiEle
pullUp(method, containingClass, classesToPullUp.iterator().next());
}
else if (editor != null) {
NavigationUtil.getPsiElementPopup(classesToPullUp.toArray(new PsiClass[classesToPullUp.size()]), new PsiClassListCellRenderer(),
NavigationUtil.getPsiElementPopup(classesToPullUp.toArray(new PsiClass[classesToPullUp.size()]), PsiClassListCellRenderer.INSTANCE,
"Choose super class",
new PsiElementProcessor<PsiClass>() {
@Override
@@ -44,6 +44,6 @@ public abstract class ChooseClassAndDoHighlightRunnable extends ChooseOneOrAllRu
@Override
protected PsiElementListCellRenderer<PsiClass> createRenderer() {
return new PsiClassListCellRenderer();
return PsiClassListCellRenderer.INSTANCE;
}
}
@@ -28,7 +28,6 @@ import com.intellij.psi.*;
import com.intellij.psi.impl.FindSuperElementsHelper;
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.Consumer;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
@@ -63,7 +62,7 @@ public class ShowSiblingsAction extends ShowImplementationsAction {
final boolean isMethod = superElements[0] instanceof PsiMethod;
NavigatablePsiElement[] navigatablePsiElements = ContainerUtil.findAllAsArray(superElements, NavigatablePsiElement.class);
final JBPopup popup = PsiElementListNavigator.navigateOrCreatePopup(navigatablePsiElements, "Choose super " + (isMethod ? "method" : "class or interface"), "Super " + (isMethod ? "methods" : "classes/interfaces"),
isMethod ? new MethodCellRenderer(false) : new PsiClassListCellRenderer(), null,
isMethod ? new MethodCellRenderer(false) : PsiClassListCellRenderer.INSTANCE, null,
objects -> showSiblings(invokedByShortcut, project, editor, file, editor != null, (PsiElement)objects[0]));
if (popup != null) {
if (editor != null) {
@@ -178,14 +178,9 @@ public class ImplementAbstractMethodHandler {
}
private static class MyPsiElementListCellRenderer extends PsiElementListCellRenderer<PsiElement> {
private final PsiClassListCellRenderer myRenderer;
public MyPsiElementListCellRenderer() {
myRenderer = new PsiClassListCellRenderer();
}
void sort(PsiElement[] result) {
final Comparator<PsiClass> comparator = myRenderer.getComparator();
final Comparator<PsiClass> comparator = PsiClassListCellRenderer.INSTANCE.getComparator();
Arrays.sort(result, (o1, o2) -> {
if (o1 instanceof PsiEnumConstant && o2 instanceof PsiEnumConstant) {
return ((PsiEnumConstant)o1).getName().compareTo(((PsiEnumConstant)o2).getName());
@@ -198,7 +193,7 @@ public class ImplementAbstractMethodHandler {
@Override
public String getElementText(PsiElement element) {
return element instanceof PsiClass ? myRenderer.getElementText((PsiClass)element)
return element instanceof PsiClass ? PsiClassListCellRenderer.INSTANCE.getElementText((PsiClass)element)
: ((PsiEnumConstant)element).getName();
}
@@ -33,7 +33,7 @@ public class JavaGotoTargetRendererProvider implements GotoTargetRendererProvide
return new MethodCellRenderer(gotoData.hasDifferentNames());
}
else if (element instanceof PsiClass) {
return new PsiClassListCellRenderer();
return PsiClassListCellRenderer.INSTANCE;
}
return null;
}
@@ -23,7 +23,6 @@ import javax.swing.*;
public class MethodCellRenderer extends PsiElementListCellRenderer<PsiMethod>{
private final boolean myShowMethodNames;
private final PsiClassListCellRenderer myClassListCellRenderer = new PsiClassListCellRenderer();
@PsiFormatUtil.FormatMethodOptions
private final int myOptions;
@@ -37,7 +36,7 @@ public class MethodCellRenderer extends PsiElementListCellRenderer<PsiMethod>{
public String getElementText(PsiMethod element) {
final PsiNamedElement container = fetchContainer(element);
String text = container instanceof PsiClass ? myClassListCellRenderer.getElementText((PsiClass)container) : container.getName();
String text = container instanceof PsiClass ? PsiClassListCellRenderer.INSTANCE.getElementText((PsiClass)container) : container.getName();
if (myShowMethodNames) {
text += "."+PsiFormatUtil.formatMethod(element, PsiSubstitutor.EMPTY, myOptions, PsiFormatUtilBase.SHOW_TYPE);
}
@@ -58,6 +57,6 @@ public class MethodCellRenderer extends PsiElementListCellRenderer<PsiMethod>{
}
public int getIconFlags() {
return myClassListCellRenderer.getIconFlags();
return PsiClassListCellRenderer.INSTANCE.getIconFlags();
}
}
@@ -23,7 +23,7 @@ import com.intellij.psi.util.PsiFormatUtilBase;
import javax.swing.*;
public class MethodOrFunctionalExpressionCellRenderer extends PsiElementListCellRenderer<NavigatablePsiElement> {
private final PsiClassListCellRenderer myClassListCellRenderer = new PsiClassListCellRenderer();
private final PsiClassListCellRenderer myClassListCellRenderer = PsiClassListCellRenderer.INSTANCE;
private final MethodCellRenderer myMethodCellRenderer;
public MethodOrFunctionalExpressionCellRenderer(boolean showMethodNames) {
@@ -48,6 +48,6 @@ public class MethodOrFunctionalExpressionCellRenderer extends PsiElementListCell
}
public int getIconFlags() {
return myClassListCellRenderer.getIconFlags();
return PsiClassListCellRenderer.INSTANCE.getIconFlags();
}
}
@@ -20,6 +20,8 @@ import com.intellij.psi.presentation.java.ClassPresentationUtil;
import org.jetbrains.annotations.Nullable;
public class PsiClassListCellRenderer extends PsiElementListCellRenderer<PsiClass> {
public static final PsiClassListCellRenderer INSTANCE = new PsiClassListCellRenderer();
@Override
public String getElementText(PsiClass element) {
return ClassPresentationUtil.getNameForClass(element, false);
@@ -1519,7 +1519,7 @@ public class ExtractMethodProcessor implements MatchProvider {
if (classes.size() > 1) {
final PsiClass[] psiClasses = classes.keySet().toArray(new PsiClass[classes.size()]);
final PsiClass preselection = AnonymousTargetClassPreselectionUtil.getPreselection(classes.keySet(), psiClasses[0]);
NavigationUtil.getPsiElementPopup(psiClasses, new PsiClassListCellRenderer(), "Choose Destination Class", processor, preselection)
NavigationUtil.getPsiElementPopup(psiClasses, PsiClassListCellRenderer.INSTANCE, "Choose Destination Class", processor, preselection)
.showInBestPositionFor(myEditor);
return true;
}
@@ -134,7 +134,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
}
else {
PsiClass selection = AnonymousTargetClassPreselectionUtil.getPreselection(classes, myParentClass);
NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), new PsiClassListCellRenderer(),
NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), PsiClassListCellRenderer.INSTANCE,
"Choose class to introduce " + (myIsConstant ? "constant" : "field"),
new PsiElementProcessor<PsiClass>() {
@Override
@@ -94,7 +94,7 @@ public abstract class LocalToFieldHandler {
final boolean isStatic = tempIsStatic;
final PsiClass firstClass = classes.get(0);
final PsiClass preselection = AnonymousTargetClassPreselectionUtil.getPreselection(classes, firstClass);
NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), new PsiClassListCellRenderer(), "Choose class to introduce " + (myIsConstant ? "constant" : "field"), new PsiElementProcessor<PsiClass>() {
NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), PsiClassListCellRenderer.INSTANCE, "Choose class to introduce " + (myIsConstant ? "constant" : "field"), new PsiElementProcessor<PsiClass>() {
@Override
public boolean execute(@NotNull PsiClass aClass) {
AnonymousTargetClassPreselectionUtil.rememberSelection(aClass, aClass);
@@ -580,7 +580,7 @@ public class IntroduceParameterHandler extends IntroduceHandlerBase {
final PsiType returnType = emptyMethod.getReturnType();
LOG.assertTrue(returnType != null);
final String title = "Choose Applicable Functional Interface: " + methodSignature + " -> " + returnType.getPresentableText();
NavigationUtil.getPsiElementPopup(psiClasses, new PsiClassListCellRenderer(), title,
NavigationUtil.getPsiElementPopup(psiClasses, PsiClassListCellRenderer.INSTANCE, title,
new PsiElementProcessor<PsiClass>() {
@Override
public boolean execute(@NotNull PsiClass psiClass) {
@@ -85,7 +85,7 @@ public class GenerateMissedTestsAction extends PsiElementBaseIntentionAction {
}
final JBList list = new JBList(testClasses);
list.setCellRenderer(new PsiClassListCellRenderer());
list.setCellRenderer(PsiClassListCellRenderer.INSTANCE);
JBPopupFactory.getInstance().createListPopupBuilder(list)
.setItemChoosenCallback(() -> generateMissedTests((PsiClass)list.getSelectedValue(), srcClass, editor))
.setTitle("Choose Test")
@@ -102,7 +102,7 @@ public abstract class GrCreateFromUsageBaseFix extends Intention {
final Project project = classes.get(0).getProject();
final JList list = new JBList(classes);
PsiElementListCellRenderer renderer = new PsiClassListCellRenderer();
PsiElementListCellRenderer renderer = PsiClassListCellRenderer.INSTANCE;
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(renderer);
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
@@ -67,7 +67,7 @@ public abstract class GrIntroduceFieldHandlerBase<Settings extends GrIntroduceSe
}
};
NavigationUtil.getPsiElementPopup(scopes, new PsiClassListCellRenderer(), "Choose class to introduce field", processor).showInBestPositionFor(editor);
NavigationUtil.getPsiElementPopup(scopes, PsiClassListCellRenderer.INSTANCE, "Choose class to introduce field", processor).showInBestPositionFor(editor);
}
@NotNull