List of usage examples for com.intellij.openapi.ui.popup JBPopup showInFocusCenter
void showInFocusCenter();
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(); }