List of usage examples for com.intellij.openapi.ui.popup PopupChooserBuilder setItemChoosenCallback
@NotNull
public PopupChooserBuilder<T> setItemChoosenCallback(@NotNull Runnable runnable)
From source file:altn8.filechooser.AlternateFilePopupChooser.java
License:Apache License
/** * Let user choose from a list of files and do something with it. If only one item is present, the file will be processed * directly without user prompt. Nothing happens with an emtpy list. * * @param title Popup's title//from w w w. j a v a2s . c om * @param fileGroups List of fileGroups * @param currentProject * @param fileHandler FileHandler to process choosed files */ public static void prompt(String title, List<AlternateFileGroup> fileGroups, Project currentProject, final FileHandler fileHandler) { if (fileGroups != null && !fileGroups.isEmpty()) { // if we have only one group with 1 file... if (fileGroups.size() == 1 && fileGroups.get(0).getFiles().size() == 1) { // ...then open file directly fileHandler.processFile(fileGroups.get(0).getFiles().get(0)); } else { // let user choose... // list of Objects for out JList List<Object> list = new ArrayList<Object>(); // if we have only 1 group, we dont show title, just adding all PsiFiles if (fileGroups.size() == 1) { list.addAll(fileGroups.get(0).getFiles()); } else { // go thru all groups for (AlternateFileGroup fileGroup : fileGroups) { // add basefilename (will be presented as title) and all files list.add(fileGroup.getGroupTitle()); list.addAll(fileGroup.getFiles()); } } final JList valueList = new JList(list.toArray()); valueList.setCellRenderer(new AlternateCellRenderer(currentProject)); valueList.setSelectionModel(new AlternateListSelectionModel(list)); PopupChooserBuilder listPopupBuilder = JBPopupFactory.getInstance() .createListPopupBuilder(valueList); listPopupBuilder.setTitle(title); listPopupBuilder.setItemChoosenCallback(new Runnable() { public void run() { for (Object item : valueList.getSelectedValues()) { if (item instanceof PsiFile) { fileHandler.processFile((PsiFile) item); } } } }); listPopupBuilder.createPopup().showCenteredInCurrentWindow(currentProject); } } }
From source file:com.antoine.ideaplugin.greenrobot.ShowUsagesAction.java
License:Apache License
@NotNull private JBPopup createUsagePopup(@NotNull final List<Usage> usages, @NotNull final UsageInfoToUsageConverter.TargetElementsDescriptor descriptor, @NotNull Set<UsageNode> visibleNodes, @NotNull final FindUsagesHandler handler, final Editor editor, @NotNull final RelativePoint popupPosition, final int maxUsages, @NotNull final UsageViewImpl usageView, @NotNull final FindUsagesOptions options, @NotNull final JTable table, @NotNull final UsageViewPresentation presentation, @NotNull final AsyncProcessIcon processIcon, boolean hadMoreSeparator) { table.setRowHeight(PlatformIcons.CLASS_ICON.getIconHeight() + 2); table.setShowGrid(false);/*from w w w .j ava 2 s. c om*/ table.setShowVerticalLines(false); table.setShowHorizontalLines(false); table.setTableHeader(null); table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); table.setIntercellSpacing(new Dimension(0, 0)); PopupChooserBuilder builder = new PopupChooserBuilder(table); final String title = presentation.getTabText(); if (title != null) { String result = getFullTitle(usages, title, hadMoreSeparator, visibleNodes.size() - 1, true); builder.setTitle(result); builder.setAdText(getSecondInvocationTitle(options, handler)); } builder.setMovable(true).setResizable(true); builder.setItemChoosenCallback(new Runnable() { @Override public void run() { int[] selected = table.getSelectedRows(); for (int i : selected) { Object value = table.getValueAt(i, 0); if (value instanceof UsageNode) { Usage usage = ((UsageNode) value).getUsage(); if (usage == MORE_USAGES_SEPARATOR) { appendMoreUsages(editor, popupPosition, handler, maxUsages); return; } navigateAndHint(usage, null, handler, popupPosition, maxUsages, options); } } } }); final JBPopup[] popup = new JBPopup[1]; KeyboardShortcut shortcut = UsageViewImpl.getShowUsagesWithSettingsShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { popup[0].cancel(); showDialogAndFindUsages(handler, popupPosition, editor, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } shortcut = getShowUsagesShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { popup[0].cancel(); searchEverywhere(options, handler, editor, popupPosition, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } InplaceButton settingsButton = createSettingsButton(handler, popupPosition, editor, maxUsages, new Runnable() { @Override public void run() { popup[0].cancel(); } }); ActiveComponent spinningProgress = new ActiveComponent() { @Override public void setActive(boolean active) { } @Override public JComponent getComponent() { return processIcon; } }; builder.setCommandButton(new CompositeActiveComponent(spinningProgress, settingsButton)); DefaultActionGroup toolbar = new DefaultActionGroup(); usageView.addFilteringActions(toolbar); toolbar.add(UsageGroupingRuleProviderImpl.createGroupByFileStructureAction(usageView)); toolbar.add(new AnAction("Open Find Usages Toolwindow", "Show all usages in a separate toolwindow", AllIcons.Toolwindows.ToolWindowFind) { { AnAction action = ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_USAGES); setShortcutSet(action.getShortcutSet()); } @Override public void actionPerformed(AnActionEvent e) { hideHints(); popup[0].cancel(); FindUsagesManager findUsagesManager = ((FindManagerImpl) FindManager .getInstance(usageView.getProject())).getFindUsagesManager(); findUsagesManager.findUsages(handler.getPrimaryElements(), handler.getSecondaryElements(), handler, options, FindSettings.getInstance().isSkipResultsWithOneUsage()); } }); ActionToolbar actionToolbar = ActionManager.getInstance() .createActionToolbar(ActionPlaces.USAGE_VIEW_TOOLBAR, toolbar, true); actionToolbar.setReservePlaceAutoPopupIcon(false); final JComponent toolBar = actionToolbar.getComponent(); toolBar.setOpaque(false); builder.setSettingButton(toolBar); popup[0] = builder.createPopup(); JComponent content = popup[0].getContent(); myWidth = (int) (toolBar.getPreferredSize().getWidth() + new JLabel(getFullTitle(usages, title, hadMoreSeparator, visibleNodes.size() - 1, true)) .getPreferredSize().getWidth() + settingsButton.getPreferredSize().getWidth()); myWidth = -1; for (AnAction action : toolbar.getChildren(null)) { action.unregisterCustomShortcutSet(usageView.getComponent()); action.registerCustomShortcutSet(action.getShortcutSet(), content); } return popup[0]; }
From source file:com.demonwav.mcdev.platform.mixin.insight.MixinLineMarkerProvider.java
License:Open Source License
@Nullable @Override/*w w w . j a v a 2s.c o m*/ public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { if (!(element instanceof PsiClass)) { return null; } final PsiClass psiClass = (PsiClass) element; if (MixinUtils.getContainingMixinClass(psiClass) == null) { return null; } if (!MixinUtils.isMixinModule(element)) { return null; } final PsiElement identifier = psiClass.getNameIdentifier(); if (identifier == null) { return null; } return new MixinLineMarkerInfo(identifier, identifier.getTextRange(), Pass.UPDATE_ALL, getIcon(), (mouseEvent, psiElement) -> { final Editor editor = FileEditorManager.getInstance(psiClass.getProject()) .getSelectedTextEditor(); if (editor == null) { return; } final Map<PsiElement, PsiClass> psiClassMap = MixinUtils.getAllMixedClasses(psiClass); if (psiClassMap.isEmpty()) { return; } // If there's only one, just navigate to that class if (psiClassMap.size() == 1) { Map.Entry<PsiElement, PsiClass> entry = psiClassMap.entrySet().iterator().next(); PsiElement navElement = entry.getValue().getNavigationElement(); navElement = TargetElementUtil.getInstance().getGotoDeclarationTarget(entry.getValue(), navElement); if (navElement != null) { McEditorUtil.gotoTargetElement(navElement, editor, psiClass.getContainingFile()); } return; } final class Data { public Icon icon; public String text; public int offset; public Runnable runnable; public Data(Icon icon, String text, int offset, Runnable runnable) { this.icon = icon; this.text = text; this.offset = offset; this.runnable = runnable; } } // There's more than one, so create a pseudo-popup as if it was a merged icon List<Data> infos = Lists.newArrayList(); for (Map.Entry<PsiElement, PsiClass> entry : psiClassMap.entrySet()) { infos.add(new Data(getIcon(), entry.getKey().getText(), entry.getKey().getTextOffset(), () -> { PsiElement navElement = entry.getValue().getNavigationElement(); navElement = TargetElementUtil.getInstance() .getGotoDeclarationTarget(entry.getValue(), navElement); if (navElement != null) { McEditorUtil.gotoTargetElement(navElement, editor, psiClass.getContainingFile()); } })); } infos.sort(Comparator.comparingInt(o -> o.offset)); final JBList<Data> list = new JBList<>(infos); PopupChooserBuilder builder = JBPopupFactory.getInstance().createListPopupBuilder(list); // Modified Jetbrains code list.installCellRenderer(dom -> { if (dom instanceof Data) { Icon icon = ((Data) dom).icon; String text = ((Data) dom).text; final JBLabel label = new JBLabel(text, icon, SwingConstants.LEFT); label.setBorder(IdeBorderFactory.createEmptyBorder(2)); return label; } return new JBLabel(); }); builder.setItemChoosenCallback(() -> { final Data value = list.getSelectedValue(); if (value != null) { value.runnable.run(); } }).createPopup().show(new RelativePoint(mouseEvent)); // End Jetbrains code }); }
From source file:com.intellij.codeInsight.navigation.NavigationUtil.java
License:Apache License
@NotNull public static <T extends PsiElement> JBPopup getPsiElementPopup(@NotNull T[] elements, @NotNull final PsiElementListCellRenderer<T> renderer, @Nullable final String title, @NotNull final PsiElementProcessor<T> processor, @Nullable final T selection) { final JList list = new JBListWithHintProvider(elements) { @Nullable/*ww w . ja va 2 s . c om*/ @Override protected PsiElement getPsiElementForHint(Object selectedValue) { return (PsiElement) selectedValue; } }; list.setCellRenderer(renderer); list.setFont(ChooseByNameBase.getEditorFont()); if (selection != null) { list.setSelectedValue(selection, true); } final Runnable runnable = new Runnable() { @Override public void run() { int[] ids = list.getSelectedIndices(); if (ids == null || ids.length == 0) return; for (Object element : list.getSelectedValues()) { if (element != null) { processor.execute((T) element); } } } }; PopupChooserBuilder builder = new PopupChooserBuilder(list); if (title != null) { builder.setTitle(title); } renderer.installSpeedSearch(builder, true); JBPopup popup = builder.setItemChoosenCallback(runnable).createPopup(); builder.getScrollPane().setBorder(null); builder.getScrollPane().setViewportBorder(null); return popup; }
From source file:com.intellij.execution.ExecutionHelper.java
License:Apache License
public static void selectContentDescriptor(final @NotNull DataContext dataContext, final @NotNull Project project, @NotNull Collection<RunContentDescriptor> consoles, String selectDialogTitle, final Consumer<RunContentDescriptor> descriptorConsumer) { if (consoles.size() == 1) { RunContentDescriptor descriptor = consoles.iterator().next(); descriptorConsumer.consume(descriptor); descriptorToFront(project, descriptor); } else if (consoles.size() > 1) { final JList list = new JBList(consoles); final Icon icon = DefaultRunExecutor.getRunExecutorInstance().getIcon(); list.setCellRenderer(new ListCellRendererWrapper<RunContentDescriptor>() { @Override/*from w w w . ja v a 2 s. c o m*/ public void customize(final JList list, final RunContentDescriptor value, final int index, final boolean selected, final boolean hasFocus) { setText(value.getDisplayName()); setIcon(icon); } }); final PopupChooserBuilder builder = new PopupChooserBuilder(list); builder.setTitle(selectDialogTitle); builder.setItemChoosenCallback(new Runnable() { @Override public void run() { final Object selectedValue = list.getSelectedValue(); if (selectedValue instanceof RunContentDescriptor) { RunContentDescriptor descriptor = (RunContentDescriptor) selectedValue; descriptorConsumer.consume(descriptor); descriptorToFront(project, descriptor); } } }).createPopup().showInBestPositionFor(dataContext); } }
From source file:com.intellij.find.actions.ShowUsagesAction.java
License:Apache License
@NotNull private JBPopup createUsagePopup(@NotNull final List<Usage> usages, @NotNull Set<UsageNode> visibleNodes, @NotNull final FindUsagesHandler handler, final Editor editor, @NotNull final RelativePoint popupPosition, final int maxUsages, @NotNull final UsageViewImpl usageView, @NotNull final FindUsagesOptions options, @NotNull final JTable table, @NotNull final Runnable itemChoseCallback, @NotNull final UsageViewPresentation presentation, @NotNull final AsyncProcessIcon processIcon) { PopupChooserBuilder builder = new PopupChooserBuilder(table); final String title = presentation.getTabText(); if (title != null) { String result = getFullTitle(usages, title, false, visibleNodes.size() - 1, true); builder.setTitle(result);// w w w . j a v a 2s . c om builder.setAdText(getSecondInvocationTitle(options, handler)); } builder.setMovable(true).setResizable(true); builder.setMovable(true).setResizable(true); builder.setItemChoosenCallback(itemChoseCallback); final JBPopup[] popup = new JBPopup[1]; KeyboardShortcut shortcut = UsageViewImpl.getShowUsagesWithSettingsShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(@NotNull AnActionEvent e) { cancel(popup); showDialogAndFindUsages(handler, popupPosition, editor, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } shortcut = getShowUsagesShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(@NotNull AnActionEvent e) { cancel(popup); searchEverywhere(options, handler, editor, popupPosition, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } InplaceButton settingsButton = createSettingsButton(handler, popupPosition, editor, maxUsages, new Runnable() { @Override public void run() { cancel(popup); } }); ActiveComponent spinningProgress = new ActiveComponent() { @Override public void setActive(boolean active) { } @Override public JComponent getComponent() { return processIcon; } }; final DefaultActionGroup pinGroup = new DefaultActionGroup(); final ActiveComponent pin = createPinButton(handler, usageView, options, popup, pinGroup); builder.setCommandButton(new CompositeActiveComponent(spinningProgress, settingsButton, pin)); DefaultActionGroup toolbar = new DefaultActionGroup(); usageView.addFilteringActions(toolbar); toolbar.add(UsageGroupingRuleProviderImpl.createGroupByFileStructureAction(usageView)); ActionToolbar actionToolbar = ActionManager.getInstance() .createActionToolbar(ActionPlaces.USAGE_VIEW_TOOLBAR, toolbar, true); actionToolbar.setReservePlaceAutoPopupIcon(false); final JComponent toolBar = actionToolbar.getComponent(); toolBar.setOpaque(false); builder.setSettingButton(toolBar); popup[0] = builder.createPopup(); JComponent content = popup[0].getContent(); myWidth = (int) (toolBar.getPreferredSize().getWidth() + new JLabel(getFullTitle(usages, title, false, visibleNodes.size() - 1, true)).getPreferredSize() .getWidth() + settingsButton.getPreferredSize().getWidth()); myWidth = -1; for (AnAction action : toolbar.getChildren(null)) { action.unregisterCustomShortcutSet(usageView.getComponent()); action.registerCustomShortcutSet(action.getShortcutSet(), content); } for (AnAction action : pinGroup.getChildren(null)) { action.unregisterCustomShortcutSet(usageView.getComponent()); action.registerCustomShortcutSet(action.getShortcutSet(), content); } return popup[0]; }
From source file:com.intellij.ui.popup.util.MasterDetailPopupBuilder.java
License:Apache License
public JBPopup createMasterDetailPopup() { setupRenderer();//from w w w . j av a 2 s. c om myPathLabel = new JLabel(" "); myPathLabel.setHorizontalAlignment(SwingConstants.RIGHT); final Font font = myPathLabel.getFont(); myPathLabel.setFont(font.deriveFont((float) 10)); if (myDetailView == null) { myDetailView = new DetailViewImpl(myProject); } JPanel footerPanel = new JPanel(new BorderLayout()) { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(BORDER_COLOR); g.drawLine(0, 0, getWidth(), 0); } }; Runnable runnable = new Runnable() { @Override public void run() { IdeFocusManager.getInstance(myProject).doWhenFocusSettlesDown(new Runnable() { @Override public void run() { Object[] values = getSelectedItems(); if (values.length == 1) { myDelegate.itemChosen((ItemWrapper) values[0], myProject, myPopup, false); } else { for (Object value : values) { if (value instanceof ItemWrapper) { myDelegate.itemChosen((ItemWrapper) value, myProject, myPopup, false); } } } } }); } }; footerPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); footerPanel.add(myPathLabel); JComponent toolBar = null; if (myActions != null) { myActionToolbar = ActionManager.getInstance().createActionToolbar("", myActions, true); myActionToolbar.setReservePlaceAutoPopupIcon(false); myActionToolbar.setMinimumButtonSize(new Dimension(20, 20)); toolBar = myActionToolbar.getComponent(); toolBar.setOpaque(false); } final PopupChooserBuilder builder = createInnerBuilder().setMovable(true).setResizable(true) .setAutoselectOnMouseMove(false).setSettingButton(toolBar).setSouthComponent(footerPanel) .setCancelOnWindowDeactivation(myCancelOnWindowDeactivation) .setCancelOnClickOutside(myCancelOnClickOutside) .setUseDimensionServiceForXYLocation(myUseDimensionServiceForXYLocation); if (myDoneRunnable != null) { ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent event) { myDoneRunnable.run(); } }; //native button is pretty enough if ((SystemInfo.isMacOSLion || SystemInfo.isMacOSMountainLion) && !UIUtil.isUnderDarcula()) { final JButton done = new JButton("Done"); done.setMnemonic('o'); done.addActionListener(actionListener); builder.setCommandButton(new ActiveComponent() { @Override public void setActive(boolean active) { } @Override public JComponent getComponent() { return done; } }); } else { builder.setCommandButton(new InplaceButton( new IconButton("Close", AllIcons.Actions.CloseNew, AllIcons.Actions.CloseNewHovered), actionListener)); } } String title = myDelegate.getTitle(); if (title != null) { builder.setTitle(title); } builder.setItemChoosenCallback(runnable).setCloseOnEnter(myCloseOnEnter).setMayBeParent(true) .setDimensionServiceKey(myDimensionServiceKey).setFilteringEnabled(new Function<Object, String>() { @Override public String fun(Object o) { return ((ItemWrapper) o).speedSearchText(); } }); if (myMinSize != null) { builder.setMinSize(myMinSize); } myPopup = builder.createPopup(); builder.getScrollPane().setBorder(IdeBorderFactory.createBorder(SideBorder.RIGHT)); myPopup.addListener(new JBPopupListener() { @Override public void beforeShown(LightweightWindowEvent event) { } @Override public void onClosed(LightweightWindowEvent event) { myDetailView.clearEditor(); } }); if (myDoneRunnable != null) { new AnAction("Done") { @Override public void actionPerformed(AnActionEvent e) { myDoneRunnable.run(); } }.registerCustomShortcutSet(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK, myPopup.getContent()); } return myPopup; }
From source file:com.squareup.ideaplugin.dagger.ShowUsagesAction.java
License:Apache License
@NotNull private JBPopup createUsagePopup(@NotNull final List<Usage> usages, @NotNull final UsageInfoToUsageConverter.TargetElementsDescriptor descriptor, @NotNull Set<UsageNode> visibleNodes, @NotNull final FindUsagesHandler handler, final Editor editor, @NotNull final RelativePoint popupPosition, final int maxUsages, @NotNull final UsageViewImpl usageView, @NotNull final FindUsagesOptions options, @NotNull final JTable table, @NotNull final UsageViewPresentation presentation, @NotNull final AsyncProcessIcon processIcon, boolean hadMoreSeparator) { table.setRowHeight(PlatformIcons.CLASS_ICON.getIconHeight() + 2); table.setShowGrid(false);/*from w ww .j ava2 s .c o m*/ table.setShowVerticalLines(false); table.setShowHorizontalLines(false); table.setTableHeader(null); table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); table.setIntercellSpacing(new Dimension(0, 0)); PopupChooserBuilder builder = new PopupChooserBuilder(table); final String title = presentation.getTabText(); if (title != null) { String result = getFullTitle(usages, title, hadMoreSeparator, visibleNodes.size() - 1, true); builder.setTitle(result); builder.setAdText(getSecondInvocationTitle(options, handler)); } builder.setMovable(true).setResizable(true); builder.setItemChoosenCallback(new Runnable() { @Override public void run() { int[] selected = table.getSelectedRows(); for (int i : selected) { Object value = table.getValueAt(i, 0); if (value instanceof UsageNode) { Usage usage = ((UsageNode) value).getUsage(); if (usage == MORE_USAGES_SEPARATOR) { appendMoreUsages(editor, popupPosition, handler, maxUsages); return; } navigateAndHint(usage, null, handler, popupPosition, maxUsages, options); } } } }); final JBPopup[] popup = new JBPopup[1]; KeyboardShortcut shortcut = UsageViewImpl.getShowUsagesWithSettingsShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { popup[0].cancel(); showDialogAndFindUsages(handler, popupPosition, editor, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } shortcut = getShowUsagesShortcut(); if (shortcut != null) { new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { popup[0].cancel(); searchEverywhere(options, handler, editor, popupPosition, maxUsages); } }.registerCustomShortcutSet(new CustomShortcutSet(shortcut.getFirstKeyStroke()), table); } InplaceButton settingsButton = createSettingsButton(handler, popupPosition, editor, maxUsages, new Runnable() { @Override public void run() { popup[0].cancel(); } }); ActiveComponent spinningProgress = new ActiveComponent() { @Override public void setActive(boolean active) { } @Override public JComponent getComponent() { return processIcon; } }; builder.setCommandButton(new CompositeActiveComponent(spinningProgress, settingsButton)); DefaultActionGroup toolbar = new DefaultActionGroup(); usageView.addFilteringActions(toolbar); toolbar.add(UsageGroupingRuleProviderImpl.createGroupByFileStructureAction(usageView)); toolbar.add(new AnAction("Open Find Usages Toolwindow", "Show all usages in a separate toolwindow", AllIcons.Toolwindows.ToolWindowFind) { { AnAction action = ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_USAGES); setShortcutSet(action.getShortcutSet()); } @Override public void actionPerformed(AnActionEvent e) { hideHints(); popup[0].cancel(); FindUsagesManager findUsagesManager = ((FindManagerImpl) FindManager .getInstance(usageView.getProject())).getFindUsagesManager(); findUsagesManager.findUsages(handler.getPrimaryElements(), handler.getSecondaryElements(), handler, options, true); } }); ActionToolbar actionToolbar = ActionManager.getInstance() .createActionToolbar(ActionPlaces.USAGE_VIEW_TOOLBAR, toolbar, true); actionToolbar.setReservePlaceAutoPopupIcon(false); final JComponent toolBar = actionToolbar.getComponent(); toolBar.setOpaque(false); builder.setSettingButton(toolBar); popup[0] = builder.createPopup(); JComponent content = popup[0].getContent(); myWidth = (int) (toolBar.getPreferredSize().getWidth() + new JLabel(getFullTitle(usages, title, hadMoreSeparator, visibleNodes.size() - 1, true)) .getPreferredSize().getWidth() + settingsButton.getPreferredSize().getWidth()); myWidth = -1; for (AnAction action : toolbar.getChildren(null)) { action.unregisterCustomShortcutSet(usageView.getComponent()); action.registerCustomShortcutSet(action.getShortcutSet(), content); } return popup[0]; }
From source file:glslplugin.intentions.vectorcomponents.VectorComponentsIntention.java
License:Open Source License
protected void processIntention(PsiElement psiElement) { GLSLIdentifier elementTemp = null;/*from ww w .jav a2 s .c om*/ if (psiElement instanceof GLSLIdentifier) { elementTemp = (GLSLIdentifier) psiElement; } else { PsiElement parent = psiElement.getParent(); if (parent instanceof GLSLIdentifier) { elementTemp = (GLSLIdentifier) parent; } } if (elementTemp == null) { Logger.getInstance(VectorComponentsIntention.class) .warn("Could not find GLSLIdentifier for psiElement: " + psiElement); return; } final GLSLIdentifier element = elementTemp; String components = element.getText(); createComponentVariants(components); String[] variants = new String[] { components + " -> " + results[0], components + " -> " + results[1] }; //http://www.jetbrains.net/devnet/message/5208622#5208622 final JBList list = new JBList((Object[]) variants); PopupChooserBuilder builder = new PopupChooserBuilder(list); builder.setTitle("Select Variant"); builder.setItemChoosenCallback(new Runnable() { public void run() { WriteCommandAction writeAction = new WriteCommandAction(element.getProject(), element.getContainingFile()) { @Override protected void run(@NotNull Result result) throws Throwable { replaceIdentifierElement(element, results[list.getSelectedIndex()]); } }; writeAction.execute(); } }); JBPopup popup = builder.createPopup(); popup.showInBestPositionFor(getEditor()); }
From source file:org.apache.camel.idea.intention.CamelAddEndpointIntention.java
License:Apache License
@Override public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { // filter libraries to only be Camel libraries Set<String> artifacts = ServiceManager.getService(project, CamelService.class).getLibraries(); // find the camel component from those libraries boolean consumerOnly = CamelIdeaUtils.isConsumerEndpoint(element); List<String> names = findCamelComponentNamesInArtifact(artifacts, consumerOnly, project); // no camel endpoints then exit if (names.isEmpty()) { return;/*from w w w. j a v a 2 s . c om*/ } // show popup to chose the component JBList list = new JBList(names.toArray(new Object[names.size()])); PopupChooserBuilder builder = JBPopupFactory.getInstance().createListPopupBuilder(list); builder.setAdText(names.size() + " components"); builder.setTitle("Add Camel Endpoint"); builder.setItemChoosenCallback(() -> { String line = (String) list.getSelectedValue(); int pos = editor.getCaretModel().getCurrentCaret().getOffset(); if (pos > 0) { // must run this as write action because we change the source code new WriteCommandAction(project, element.getContainingFile()) { @Override protected void run(@NotNull Result result) throws Throwable { String text = line + ":"; editor.getDocument().insertString(pos, text); editor.getCaretModel().moveToOffset(pos + text.length()); } }.execute(); } }); JBPopup popup = builder.createPopup(); popup.showInBestPositionFor(editor); }