Filtering kind of speedsearch for more list choosers + fix filtering performance for large lists.

This commit is contained in:
Maxim Shafirov
2009-10-22 20:46:46 +04:00
parent 031fd1ed10
commit 0e4d2bb041
15 changed files with 96 additions and 31 deletions
@@ -115,7 +115,8 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction {
PsiElementListCellRenderer renderer = new PsiClassListCellRenderer();
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(renderer);
renderer.installSpeedSearch(list);
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
renderer.installSpeedSearch(builder);
Runnable runnable = new Runnable() {
public void run() {
@@ -135,7 +136,7 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction {
}
};
new PopupChooserBuilder(list).
builder.
setTitle(QuickFixBundle.message("target.class.chooser.title")).
setItemChoosenCallback(runnable).
createPopup().
@@ -93,7 +93,8 @@ public class CreateInnerClassFromUsageFix extends CreateClassFromUsageBaseFix {
PsiElementListCellRenderer renderer = new PsiClassListCellRenderer();
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(renderer);
renderer.installSpeedSearch(list);
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
renderer.installSpeedSearch(builder);
Runnable runnable = new Runnable() {
public void run() {
@@ -118,7 +119,7 @@ public class CreateInnerClassFromUsageFix extends CreateClassFromUsageBaseFix {
}
};
new PopupChooserBuilder(list).
builder.
setTitle(QuickFixBundle.message("target.class.chooser.title")).
setItemChoosenCallback(runnable).
createPopup().
@@ -15,18 +15,18 @@
*/
package com.intellij.codeInsight.highlighting;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.ide.util.PsiClassListCellRenderer;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.ui.popup.PopupChooserBuilder;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassType;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.ui.popup.PopupChooserBuilder;
import com.intellij.ide.util.PsiClassListCellRenderer;
import com.intellij.codeInsight.CodeInsightBundle;
import javax.swing.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Vector;
public abstract class ChooseClassAndDoHighlightRunnable implements Runnable {
@@ -79,7 +79,8 @@ public abstract class ChooseClassAndDoHighlightRunnable implements Runnable {
myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
myList.setCellRenderer(renderer);
renderer.installSpeedSearch(myList);
final PopupChooserBuilder builder = new PopupChooserBuilder(myList);
renderer.installSpeedSearch(builder);
final Runnable callback = new Runnable() {
public void run() {
@@ -96,7 +97,7 @@ public abstract class ChooseClassAndDoHighlightRunnable implements Runnable {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
new PopupChooserBuilder(myList).
builder.
setTitle(myTitle).
setItemChoosenCallback(callback).
createPopup().
@@ -96,7 +96,6 @@ public class ImplementAbstractMethodHandler {
myList = new JList(result[0]);
myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
myList.setCellRenderer(renderer);
renderer.installSpeedSearch(myList);
final Runnable runnable = new Runnable(){
public void run() {
@@ -107,7 +106,10 @@ public class ImplementAbstractMethodHandler {
}
};
new PopupChooserBuilder(myList).
final PopupChooserBuilder builder = new PopupChooserBuilder(myList);
renderer.installSpeedSearch(builder);
builder.
setTitle(CodeInsightBundle.message("intention.implement.abstract.method.class.chooser.title")).
setItemChoosenCallback(runnable).
createPopup().