Example usage for com.intellij.openapi.ui.popup JBPopup showInFocusCenter

List of usage examples for com.intellij.openapi.ui.popup JBPopup showInFocusCenter

Introduction

In this page you can find the example usage for com.intellij.openapi.ui.popup JBPopup showInFocusCenter.

Prototype

void showInFocusCenter();

Source Link

Document

Shows the popups in the center of currently focused component

Usage

From source file:com.intellij.execution.filters.impl.MultipleFilesHyperlinkInfo.java

License:Apache License

@Override
public void navigate(@NotNull final Project project, @Nullable RelativePoint hyperlinkLocationPoint) {
    List<PsiFile> currentFiles = new ArrayList<PsiFile>();

    AccessToken accessToken = ReadAction.start();
    try {//  w  w  w  .j av  a2s.  com
        for (VirtualFile file : myVirtualFiles) {
            if (!file.isValid())
                continue;

            PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
            if (psiFile != null) {
                PsiElement navigationElement = psiFile.getNavigationElement(); // Sources may be downloaded.
                if (navigationElement instanceof PsiFile) {
                    currentFiles.add((PsiFile) navigationElement);
                    continue;
                }
                currentFiles.add(psiFile);
            }
        }
    } finally {
        accessToken.finish();
    }

    if (currentFiles.isEmpty())
        return;

    if (currentFiles.size() == 1) {
        new OpenFileHyperlinkInfo(myProject, currentFiles.get(0).getVirtualFile(), myLineNumber)
                .navigate(project);
    } else {
        final JBList list = new JBList(currentFiles);
        int width = WindowManager.getInstance().getFrame(project).getSize().width;
        list.setCellRenderer(new GotoFileCellRenderer(width));
        JBPopup popup = JBPopupFactory.getInstance().createListPopupBuilder(list).setTitle("Choose Target File")
                .setItemChoosenCallback(new Runnable() {
                    @Override
                    public void run() {
                        VirtualFile file = ((PsiFile) list.getSelectedValue()).getVirtualFile();
                        new OpenFileHyperlinkInfo(myProject, file, myLineNumber).navigate(project);
                    }
                }).createPopup();
        if (hyperlinkLocationPoint != null) {
            popup.show(hyperlinkLocationPoint);
        } else {
            popup.showInFocusCenter();
        }
    }
}

From source file:ws.epigraph.ideaplugin.schema.features.rename.SchemaRenameUtil.java

License:Apache License

private static void afterChoosingSuperMember(@NotNull PsiNamedElement member,
        @NotNull List<PsiNamedElement> maxSuperMembers, @Nullable Editor editor,
        @NotNull PsiElementProcessor<PsiNamedElement> action) {
    if (maxSuperMembers.isEmpty()) {
        action.execute(member);/*from w ww.j  a v  a 2 s.  co  m*/
        return;
    }

    final List<PsiNamedElement> memberAndMaxSuperMembers = new ArrayList<>(maxSuperMembers);
    memberAndMaxSuperMembers.add(member);

    final List<SchemaTypeDef> typeAndMaxSuperTypes = memberAndMaxSuperMembers.stream()
            .map(e -> PsiTreeUtil.getParentOfType(e, SchemaTypeDef.class, false)).collect(Collectors.toList());

    // no zippers in java 8..
    final Map<SchemaTypeDef, PsiNamedElement> typesToMembers = memberAndMaxSuperMembers.stream()
            .collect(Collectors.toMap(t -> PsiTreeUtil.getParentOfType(t, SchemaTypeDef.class, false),
                    Function.identity()));
    final boolean onlyOneSuperType = typeAndMaxSuperTypes.size() == 1;

    final SchemaTypeDef renameAllMarkerObject = SchemaElementFactory.createRecordTypeDef(member.getProject(),
            "renameAll");
    typesToMembers.put(renameAllMarkerObject, null);

    // should map maintain order?
    // selection = renameAllMarkerObject ?

    final PsiElementProcessor<SchemaTypeDef> processor = typeDef -> {
        if (typeDef == renameAllMarkerObject) {
            PsiNamedElement element = typesToMembers.get(typeDef);
            // TODO element is actually null
            action.execute(element);
        } else {
            PsiNamedElement mainOne = typesToMembers.get(typeAndMaxSuperTypes.iterator().next());
            superMembersToRename.clear();
            Iterator<SchemaTypeDef> it = typeAndMaxSuperTypes.iterator();
            it.next(); // drop first one
            while (it.hasNext()) {
                SchemaTypeDef td = it.next();
                if (it.hasNext())
                    superMembersToRename.add(typesToMembers.get(td)); // drop last one
            }
            action.execute(mainOne);
        }
        return false;
    };

    final String renameAllText = SchemaBundle.message("rename.all.base.members");
    final String renameBase = SchemaBundle.message("rename.base.member");
    final String renameOnlyCurrent = SchemaBundle.message("rename.only.current.member");
    final String name = member.getName();
    final String title = onlyOneSuperType
            ? SchemaBundle.message("rename.overrides.member", name,
                    SchemaPresentationUtil.getName(typeAndMaxSuperTypes.iterator().next(), true))
            : SchemaBundle.message("rename.has.multiple.base.members", name);

    final SchemaTypeDef[] typesPlusMarker = typeAndMaxSuperTypes
            .toArray(new SchemaTypeDef[typeAndMaxSuperTypes.size() + 1]);
    typesPlusMarker[typesPlusMarker.length - 1] = renameAllMarkerObject;
    reverse(typesPlusMarker);

    final JBPopup popup = NavigationUtil.getPsiElementPopup(typesPlusMarker,
            new PsiElementListCellRenderer<SchemaTypeDef>() {
                @Override
                protected Icon getIcon(PsiElement element) {
                    return SchemaPresentationUtil.getIcon(element);
                }

                @Override
                public String getElementText(SchemaTypeDef t) {
                    if (t == renameAllMarkerObject)
                        return renameAllText;

                    if (t == typeAndMaxSuperTypes.get(typeAndMaxSuperTypes.size() - 1))
                        return renameOnlyCurrent;
                    else if (onlyOneSuperType)
                        return renameBase;
                    else
                        return SchemaBundle.message("rename.only.in", t.getKind().name,
                                SchemaPresentationUtil.getName(t, false));
                }

                @Nullable
                @Override
                protected String getContainerText(SchemaTypeDef t, String name) {
                    if (t == renameAllMarkerObject
                            || t == typeAndMaxSuperTypes.get(typeAndMaxSuperTypes.size() - 1)
                            || onlyOneSuperType)
                        return null;
                    return SchemaPresentationUtil.getNamespaceString(t, true);
                }

                @Override
                protected int getIconFlags() {
                    return 0;
                }
            }, title, processor, renameAllMarkerObject);

    if (ApplicationManager.getApplication().isUnitTestMode()) {
        processor.execute(onlyOneSuperType ? typeAndMaxSuperTypes.iterator().next() : renameAllMarkerObject);
        return;
    }
    if (editor != null)
        popup.showInBestPositionFor(editor);
    else
        popup.showInFocusCenter();
}