List of usage examples for com.intellij.openapi.ui.popup JBPopupListener JBPopupListener
JBPopupListener
From source file:com.intellij.tasks.actions.SearchSupport.java
License:Apache License
private void showPopup(boolean explicit) { myCancelled = false;/*from w ww .ja v a 2 s . c om*/ List<T> list = getItems(myTextField.getText()); myListModel.clear(); myListModel.addAll(list); if (list.isEmpty()) { if (explicit) { showNoSuggestions(); } else { hideCurrentPopup(); } return; } ensureSelectionExists(); myList.setPrototypeCellValue(null); if (isPopupShowing()) { adjustPopupSize(); return; } hideCurrentPopup(); final PopupChooserBuilder builder = JBPopupFactory.getInstance().createListPopupBuilder(myList); builder.addListener(new JBPopupListener() { public void beforeShown(LightweightWindowEvent event) { myTextField.registerKeyboardAction(myCancelAction, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); } public void onClosed(LightweightWindowEvent event) { myTextField.unregisterKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)); } }); myCurrentPopup = builder.setRequestFocus(false).setAutoSelectIfEmpty(false).setResizable(false) .setCancelCallback(new Computable<Boolean>() { public Boolean compute() { final int caret = myTextField.getCaretModel().getOffset(); getEditor().getSelectionModel().setSelection(caret, caret); myTextField.setFocusTraversalKeysEnabled(true); ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { myTextField.requestFocus(); } }); return Boolean.TRUE; } }).setItemChoosenCallback(new Runnable() { public void run() { processChosenFromCompletion(); } }).setCancelKeyEnabled(false).setAlpha(0.1f).setFocusOwners(new Component[] { myTextField }) .createPopup(); adjustPopupSize(); showPopup(); }
From source file:com.intellij.ui.popup.util.MasterDetailPopupBuilder.java
License:Apache License
public JBPopup createMasterDetailPopup() { setupRenderer();//from w w w. ja v a 2 s . com 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.vladsch.MissingInActions.util.ui.ComboBoxAction.java
License:Apache License
@Override public void actionPerformed(AnActionEvent e) { JComponent button = (JComponent) e.getPresentation().getClientProperty(CUSTOM_COMPONENT_PROPERTY); if (button == null) { Component contextComponent = e.getData(PlatformDataKeys.CONTEXT_COMPONENT); JRootPane rootPane = UIUtil.getParentOfType(JRootPane.class, contextComponent); if (rootPane != null) { button = (ComboBoxButton) UIUtil.uiTraverser(rootPane).bfsTraversal() .filter(component -> component instanceof ComboBoxButton && ((ComboBoxButton) component).getMyAction() == this) .first();/* w w w. j a v a 2 s.co m*/ } if (button == null) return; } //if (!button.isShowing()) return; if (button instanceof ComboBoxButton && button.isShowing()) { final Editor editor = e.getData(PlatformDataKeys.EDITOR); ((ComboBoxButton) button).myPresentation.putClientProperty(COMBO_BOX_EDITOR_PROPERTY, editor); ((ComboBoxButton) button).showPopup(); } else { DataContext context = e.getDataContext(); Project project = e.getProject(); if (project == null) return; final Editor editor = e.getData(PlatformDataKeys.EDITOR); DefaultActionGroup group = createPopupActionGroup(button, editor); ListPopup popup = JBPopupFactory.getInstance().createActionGroupPopup(myPopupTitle, group, context, myShowNumbers, shouldShowDisabledActions(), false, null, getMaxRows(), getPreselectCondition()); popup.setMinimumSize(new Dimension(getMinWidth(), getMinHeight())); JComponent finalButton = button; popup.addListSelectionListener(ev -> { actionSelected(finalButton, editor, ev); }); popup.addListener(new JBPopupListener() { @Override public void beforeShown(final LightweightWindowEvent event) { popupStart(finalButton, editor); } @Override public void onClosed(final LightweightWindowEvent event) { popupDone(finalButton, editor); } }); popup.showCenteredInCurrentWindow(project); } }
From source file:krasa.formatter.plugin.ProjectSettingsForm.java
License:Apache License
public ProjectSettingsForm(final Project project) { DONATEButton.setBorder(BorderFactory.createEmptyBorder()); DONATEButton.setContentAreaFilled(false); this.project = project; JToggleButton[] modifiableButtons = new JToggleButton[] { useDefaultFormatter, useEclipseFormatter, optimizeImportsCheckBox, enableJavaFormatting, doNotFormatOtherFilesRadioButton, formatOtherFilesWithExceptionsRadioButton, formatSelectedTextInAllFileTypes, enableJSFormatting, enableCppFormatting, importOrderConfigurationManualRadioButton, importOrderConfigurationFromFileRadioButton, enableGWTNativeMethodsCheckBox }; for (JToggleButton button : modifiableButtons) { button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { updateComponents();/*from w w w. ja v a2 s.c o m*/ } }); } JTextField[] modifiableFields = new JTextField[] { pathToEclipsePreferenceFileJava, pathToEclipsePreferenceFileJS, pathToEclipsePreferenceFileCpp, disabledFileTypes, importOrder, pathToImportOrderPreferenceFile }; for (JTextField field : modifiableFields) { field.getDocument().addDocumentListener(new DocumentAdapter() { protected void textChanged(DocumentEvent e) { updateComponents(); } }); } eclipsePreferenceFilePathJavaBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseForFile(pathToEclipsePreferenceFileJava); } }); pathToImportOrderPreferenceFileBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseForFile(pathToImportOrderPreferenceFile); } }); eclipsePreferenceFilePathJSBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseForFile(pathToEclipsePreferenceFileJS); } }); eclipsePreferenceFilePathCppBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseForFile(pathToEclipsePreferenceFileCpp); } }); rootComponent.addAncestorListener(new AncestorListener() { public void ancestorAdded(AncestorEvent event) { // Called when component becomes visible, to ensure that the // popups // are visible when the form is shown for the first time. updateComponents(); } public void ancestorRemoved(AncestorEvent event) { } public void ancestorMoved(AncestorEvent event) { } }); pathToEclipsePreferenceFileJava.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { setJavaFormatterProfileModel(); } }); pathToEclipsePreferenceFileJS.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { setJavaScriptFormatterProfileModel(); } }); pathToEclipsePreferenceFileCpp.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { setCppFormatterProfileModel(); } }); newProfile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (isModified(displayedSettings)) { createConfirmation("Profile was modified, save changes to current profile?", "Yes", "No", new Runnable() { @Override public void run() { apply(); createProfile(); } }, new Runnable() { @Override public void run() { importFrom(displayedSettings); createProfile(); } }, 0).showInFocusCenter(); } else { createProfile(); } } private void createProfile() { Settings settings = GlobalSettings.getInstance().newSettings(); refreshProfilesModel(); profiles.setSelectedItem(settings); } }); copyProfile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (isModified(displayedSettings)) { ListPopup confirmation = createConfirmation( "Profile was modified, save changes to current profile?", "Yes", "No", new Runnable() { @Override public void run() { apply(); copyProfile(); } }, new Runnable() { @Override public void run() { importFrom(displayedSettings); copyProfile(); } }, 0); confirmation.showInFocusCenter(); } else { copyProfile(); } } private void copyProfile() { Settings settings = GlobalSettings.getInstance().copySettings(displayedSettings); refreshProfilesModel(); profiles.setSelectedItem(settings); } }); setJavaFormatterProfileModel(); setJavaScriptFormatterProfileModel(); setCppFormatterProfileModel(); profilesModel = createProfilesModel(); profiles.setModel(profilesModel); profiles.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // && isSameId() if (displayedSettings != null && getSelectedItem() != null && isModified(displayedSettings)) { showConfirmationDialogOnProfileChange(); } else if (displayedSettings != null && getSelectedItem() != null) { importFromInternal(getSelectedItem()); } } }); profiles.setRenderer(new ListCellRendererWrapper() { @Override public void customize(JList jList, Object value, int i, boolean b, boolean b1) { if (value != null) { setText(((Settings) value).getName()); } } }); rename.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JTextField content = new JTextField(); content.setText(displayedSettings.getName()); JBPopup balloon = PopupFactoryImpl.getInstance().createComponentPopupBuilder(content, content) .createPopup(); balloon.setMinimumSize(new Dimension(200, 20)); balloon.addListener(new JBPopupListener() { @Override public void beforeShown(LightweightWindowEvent event) { } @Override public void onClosed(LightweightWindowEvent event) { displayedSettings.setName(content.getText()); } }); balloon.showUnderneathOf(rename); } }); delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int selectedIndex = profiles.getSelectedIndex(); GlobalSettings.getInstance().delete(getSelectedItem(), getProject()); profiles.setModel(profilesModel = createProfilesModel()); int itemCount = profiles.getItemCount(); if (selectedIndex < itemCount && selectedIndex >= 0) { Object itemAt = profiles.getItemAt(selectedIndex); importFromInternal((Settings) itemAt); profiles.setSelectedIndex(selectedIndex); } if (selectedIndex == itemCount && selectedIndex - 1 >= 0) { Object itemAt = profiles.getItemAt(selectedIndex - 1); importFromInternal((Settings) itemAt); profiles.setSelectedIndex(selectedIndex - 1); } else { Settings defaultSettings = GlobalSettings.getInstance().getDefaultSettings(); importFromInternal(defaultSettings); profiles.setSelectedItem(defaultSettings); } } }); DONATEButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { BareBonesBrowserLaunch.openURL( "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=75YN7U7H7D7XU&lc=CZ&item_name=Eclipse%20code%20formatter%20%2d%20IntelliJ%20plugin%20%2d%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest"); } }); helpButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { BareBonesBrowserLaunch .openURL("http://code.google.com/p/eclipse-code-formatter-intellij-plugin/wiki/HowTo"); } }); ; homepage.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { BareBonesBrowserLaunch.openURL("http://plugins.intellij.net/plugin/?idea&id=6546"); } }); }