Doc/Impl popups in various PSI chooser lists

This commit is contained in:
Gregory.Shrago
2013-02-28 16:17:20 +04:00
parent 2ba78e79cf
commit 1a1b282b34
3 changed files with 12 additions and 1 deletions
@@ -52,6 +52,7 @@ import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.intellij.psi.*;
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.ui.ListScrollingUtil;
import com.intellij.ui.content.Content;
import com.intellij.ui.popup.AbstractPopup;
import com.intellij.ui.popup.NotLookupOrSearchCondition;
@@ -135,6 +136,7 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
((AbstractPopup)hint).focusPreferredComponent();
return;
}
if (action instanceof ListScrollingUtil.ListScrollAction) return;
if (action == myActionManagerEx.getAction(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN)) return;
if (action == myActionManagerEx.getAction(IdeActions.ACTION_EDITOR_MOVE_CARET_UP)) return;
if (action == myActionManagerEx.getAction(IdeActions.ACTION_EDITOR_MOVE_CARET_PAGE_DOWN)) return;
@@ -180,6 +180,8 @@ public class ShowImplementationsAction extends AnAction implements PopupAction {
String text = "";
if (element != null) {
// if (element instanceof PsiPackage) return;
PsiFile containingFile = element.getContainingFile();
if (containingFile == null || !containingFile.getViewProvider().isPhysical()) return;
impls = getSelfAndImplementations(editor, element, createImplementationsSearcher());
text = SymbolPresentationUtil.getSymbolPresentableText(element);
@@ -34,6 +34,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.ElementBase;
import com.intellij.psi.search.PsiElementProcessor;
import com.intellij.ui.JBListWithHintProvider;
import com.intellij.ui.components.JBList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -83,7 +84,13 @@ public final class NavigationUtil {
@Nullable final String title,
@NotNull final PsiElementProcessor<T> processor,
@Nullable final T selection) {
final JList list = new JBList(elements);
final JList list = new JBListWithHintProvider(elements) {
@Nullable
@Override
protected PsiElement getPsiElementForHint(Object selectedValue) {
return (PsiElement)selectedValue;
}
};
list.setCellRenderer(renderer);
if (selection != null) {
list.setSelectedValue(selection, true);