List of usage examples for com.intellij.openapi.wm IdeFocusManager getInstance
public static IdeFocusManager getInstance(@Nullable Project project)
From source file:com.intellij.ide.util.FileStructurePopup.java
License:Apache License
public void show() { //final long time = System.currentTimeMillis(); JComponent panel = createCenterPanel(); new MnemonicHelper().register(panel); boolean shouldSetWidth = DimensionService.getInstance().getSize(getDimensionServiceKey(), myProject) == null;//from w w w.j a v a 2 s .c o m myPopup = JBPopupFactory.getInstance().createComponentPopupBuilder(panel, null).setTitle(myTitle) .setResizable(true).setModalContext(false).setFocusable(true).setRequestFocus(true).setMovable(true) .setBelongsToGlobalPopupStack(true) //.setCancelOnClickOutside(false) //for debug and snapshots .setCancelKeyEnabled(false).setDimensionServiceKey(null, getDimensionServiceKey(), false) .setCancelCallback(new Computable<Boolean>() { @Override public Boolean compute() { DimensionService.getInstance().setLocation(getDimensionServiceKey(), myPopup.getLocationOnScreen(), myProject); return true; } }).createPopup(); myTree.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { if (myPopup.isVisible()) { final PopupUpdateProcessor updateProcessor = myPopup.getUserData(PopupUpdateProcessor.class); if (updateProcessor != null) { final AbstractTreeNode node = getSelectedNode(); updateProcessor.updatePopup(node); } } } }); Disposer.register(myPopup, this); Disposer.register(myPopup, new Disposable() { @Override public void dispose() { if (!myTreeHasBuilt.isDone()) { myTreeHasBuilt.setRejected(); } } }); myTree.getEmptyText().setText("Loading..."); final Point location = DimensionService.getInstance().getLocation(getDimensionServiceKey(), myProject); if (location != null) { myPopup.showInScreenCoordinates(myFileEditor.getComponent(), location); } else { myPopup.showCenteredInCurrentWindow(myProject); } ((AbstractPopup) myPopup).setShowHints(true); if (shouldSetWidth) { myPopup.setSize(new Dimension(myPreferredWidth + 10, myPopup.getSize().height)); } IdeFocusManager.getInstance(myProject).requestFocus(myTree, true); SwingUtilities.windowForComponent(myPopup.getContent()).addWindowFocusListener(new WindowFocusListener() { @Override public void windowGainedFocus(WindowEvent e) { } @Override public void windowLostFocus(WindowEvent e) { myPopup.cancel(); } }); ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { @Override public void run() { ApplicationManager.getApplication().runReadAction(new Runnable() { @Override public void run() { myFilteringStructure.rebuild(); } }); //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { @Override public void run() { myAbstractTreeBuilder.queueUpdate().doWhenDone(new Runnable() { @Override public void run() { myTreeHasBuilt.setDone(); //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (myAbstractTreeBuilder.isDisposed()) return; if (selectPsiElement(myInitialPsiElement) == null) { TreeUtil.ensureSelection(myAbstractTreeBuilder.getTree()); myAbstractTreeBuilder.revalidateTree(); } } }); } }); installUpdater(); } }); } }); }
From source file:com.intellij.ide.util.gotoByName.ChooseByNameBase.java
License:Apache License
/** * @param modalityState - if not null rebuilds list in given {@link ModalityState} *//*from w w w.jav a 2s . com*/ protected void initUI(final ChooseByNamePopupComponent.Callback callback, final ModalityState modalityState, final boolean allowMultipleSelection) { myPreviouslyFocusedComponent = WindowManagerEx.getInstanceEx().getFocusedComponent(myProject); myActionListener = callback; myTextFieldPanel.setLayout(new BoxLayout(myTextFieldPanel, BoxLayout.Y_AXIS)); final JPanel hBox = new JPanel(); hBox.setLayout(new BoxLayout(hBox, BoxLayout.X_AXIS)); JPanel caption2Tools = new JPanel(new BorderLayout()); if (myModel.getPromptText() != null) { JLabel label = new JLabel(myModel.getPromptText()); if (UIUtil.isUnderAquaLookAndFeel()) { label.setBorder(new CompoundBorder(new EmptyBorder(0, 9, 0, 0), label.getBorder())); } label.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); caption2Tools.add(label, BorderLayout.WEST); } caption2Tools.add(hBox, BorderLayout.EAST); myCardContainer.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 4)); // space between checkbox and filter/show all in view buttons final String checkBoxName = myModel.getCheckBoxName(); myCheckBox = new JCheckBox(checkBoxName != null ? checkBoxName + (myCheckBoxShortcut != null ? " (" + KeymapUtil.getShortcutsText(myCheckBoxShortcut.getShortcuts()) + ")" : "") : ""); myCheckBox.setAlignmentX(SwingConstants.RIGHT); if (!SystemInfo.isMac) { myCheckBox.setBorder(null); } myCheckBox.setSelected(myModel.loadInitialCheckBoxState()); if (checkBoxName == null) { myCheckBox.setVisible(false); } addCard(myCheckBox, CHECK_BOX_CARD); addCard(new HintLabel(myModel.getNotInMessage()), NOT_FOUND_IN_PROJECT_CARD); addCard(new HintLabel(IdeBundle.message("label.choosebyname.no.matches.found")), NOT_FOUND_CARD); JPanel searching = new JPanel(new BorderLayout(5, 0)); searching.add(new AsyncProcessIcon("searching"), BorderLayout.WEST); searching.add(new HintLabel(IdeBundle.message("label.choosebyname.searching")), BorderLayout.CENTER); addCard(searching, SEARCHING_CARD); myCard.show(myCardContainer, CHECK_BOX_CARD); if (isCheckboxVisible()) { hBox.add(myCardContainer); } final DefaultActionGroup group = new DefaultActionGroup(); group.add(new ShowFindUsagesAction() { @Override public PsiElement[][] getElements() { final Object[] objects = myListModel.toArray(); final List<PsiElement> prefixMatchElements = new ArrayList<PsiElement>(objects.length); final List<PsiElement> nonPrefixMatchElements = new ArrayList<PsiElement>(objects.length); List<PsiElement> curElements = prefixMatchElements; for (Object object : objects) { if (object instanceof PsiElement) { curElements.add((PsiElement) object); } else if (object instanceof DataProvider) { final PsiElement psi = CommonDataKeys.PSI_ELEMENT.getData((DataProvider) object); if (psi != null) { curElements.add(psi); } } else if (object == NON_PREFIX_SEPARATOR) { curElements = nonPrefixMatchElements; } } return new PsiElement[][] { PsiUtilCore.toPsiElementArray(prefixMatchElements), PsiUtilCore.toPsiElementArray(nonPrefixMatchElements) }; } }); final ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true); actionToolbar.setLayoutPolicy(ActionToolbar.NOWRAP_LAYOUT_POLICY); final JComponent toolbarComponent = actionToolbar.getComponent(); toolbarComponent.setBorder(null); if (myToolArea == null) { myToolArea = new JLabel(EmptyIcon.create(1, 24)); } hBox.add(myToolArea); hBox.add(toolbarComponent); myTextFieldPanel.add(caption2Tools); final ActionMap actionMap = new ActionMap(); actionMap.setParent(myTextField.getActionMap()); actionMap.put(DefaultEditorKit.copyAction, new AbstractAction() { @Override public void actionPerformed(@NotNull ActionEvent e) { if (myTextField.getSelectedText() != null) { actionMap.getParent().get(DefaultEditorKit.copyAction).actionPerformed(e); return; } final Object chosenElement = getChosenElement(); if (chosenElement instanceof PsiElement) { CopyReferenceAction.doCopy((PsiElement) chosenElement, myProject); } } }); myTextField.setActionMap(actionMap); myTextFieldPanel.add(myTextField); Font editorFont = getEditorFont(); myTextField.setFont(editorFont); if (checkBoxName != null) { if (myCheckBox != null && myCheckBoxShortcut != null) { new AnAction("change goto check box", null, null) { @RequiredDispatchThread @Override public void actionPerformed(@NotNull AnActionEvent e) { myCheckBox.setSelected(!myCheckBox.isSelected()); } }.registerCustomShortcutSet(myCheckBoxShortcut, myTextField); } } if (isCloseByFocusLost()) { myTextField.addFocusListener(new FocusAdapter() { @Override public void focusLost(@NotNull final FocusEvent e) { cancelListUpdater(); // cancel thread as early as possible myHideAlarm.addRequest(new Runnable() { @Override public void run() { JBPopup popup = JBPopupFactory.getInstance().getChildFocusedPopup(e.getComponent()); if (popup != null) { popup.addListener(new JBPopupListener.Adapter() { @Override public void onClosed(@NotNull LightweightWindowEvent event) { if (event.isOk()) { hideHint(); } } }); } else { Component oppositeComponent = e.getOppositeComponent(); if (oppositeComponent == myCheckBox) { IdeFocusManager.getInstance(myProject).requestFocus(myTextField, true); return; } if (oppositeComponent != null && !(oppositeComponent instanceof JFrame) && myList.isShowing() && (oppositeComponent == myList || SwingUtilities.isDescendingFrom(myList, oppositeComponent))) { IdeFocusManager.getInstance(myProject).requestFocus(myTextField, true);// Otherwise me may skip some KeyEvents return; } if (oppositeComponent != null) { ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(myProject); ToolWindow toolWindow = toolWindowManager .getToolWindow(toolWindowManager.getActiveToolWindowId()); if (toolWindow != null) { JComponent toolWindowComponent = toolWindow.getComponent(); if (SwingUtilities.isDescendingFrom(oppositeComponent, toolWindowComponent)) { return; // Allow toolwindows to gain focus (used by QuickDoc shown in a toolwindow) } } } EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue(); if (queue instanceof IdeEventQueue) { if (!((IdeEventQueue) queue).wasRootRecentlyClicked(oppositeComponent)) { Component root = SwingUtilities.getRoot(myTextField); if (root != null && root.isShowing()) { IdeFocusManager.getInstance(myProject).requestFocus(myTextField, true); return; } } } hideHint(); } } }, 5); } }); } if (myCheckBox != null) { myCheckBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(@NotNull ItemEvent e) { rebuildList(false); } }); myCheckBox.setFocusable(false); } myTextField.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { clearPostponedOkAction(false); rebuildList(false); } }); final Set<KeyStroke> upShortcuts = getShortcuts(IdeActions.ACTION_EDITOR_MOVE_CARET_UP); final Set<KeyStroke> downShortcuts = getShortcuts(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN); myTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(@NotNull KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER && (e.getModifiers() & InputEvent.SHIFT_MASK) != 0) { myClosedByShiftEnter = true; close(true); } if (!myListScrollPane.isVisible()) { return; } final int keyCode; // Add support for user-defined 'caret up/down' shortcuts. KeyStroke stroke = KeyStroke.getKeyStrokeForEvent(e); if (upShortcuts.contains(stroke)) { keyCode = KeyEvent.VK_UP; } else if (downShortcuts.contains(stroke)) { keyCode = KeyEvent.VK_DOWN; } else { keyCode = e.getKeyCode(); } switch (keyCode) { case KeyEvent.VK_DOWN: ListScrollingUtil.moveDown(myList, e.getModifiersEx()); break; case KeyEvent.VK_UP: ListScrollingUtil.moveUp(myList, e.getModifiersEx()); break; case KeyEvent.VK_PAGE_UP: ListScrollingUtil.movePageUp(myList); break; case KeyEvent.VK_PAGE_DOWN: ListScrollingUtil.movePageDown(myList); break; case KeyEvent.VK_TAB: close(true); break; case KeyEvent.VK_ENTER: if (myList.getSelectedValue() == EXTRA_ELEM) { myMaximumListSizeLimit += myListSizeIncreasing; rebuildList(myList.getSelectedIndex(), myRebuildDelay, ModalityState.current(), null); e.consume(); } break; } if (myList.getSelectedValue() == NON_PREFIX_SEPARATOR) { if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_PAGE_UP) { ListScrollingUtil.moveUp(myList, e.getModifiersEx()); } else { ListScrollingUtil.moveDown(myList, e.getModifiersEx()); } } } }); myTextField.addActionListener(new ActionListener() { @Override public void actionPerformed(@NotNull ActionEvent actionEvent) { doClose(true); } }); myList.setFocusable(false); myList.setSelectionMode(allowMultipleSelection ? ListSelectionModel.MULTIPLE_INTERVAL_SELECTION : ListSelectionModel.SINGLE_SELECTION); new ClickListener() { @Override public boolean onClick(@NotNull MouseEvent e, int clickCount) { if (!myTextField.hasFocus()) { IdeFocusManager.getInstance(myProject).requestFocus(myTextField, true); } if (clickCount == 2) { int selectedIndex = myList.getSelectedIndex(); Rectangle selectedCellBounds = myList.getCellBounds(selectedIndex, selectedIndex); if (selectedCellBounds != null && selectedCellBounds.contains(e.getPoint())) { // Otherwise it was reselected in the selection listener if (myList.getSelectedValue() == EXTRA_ELEM) { myMaximumListSizeLimit += myListSizeIncreasing; rebuildList(selectedIndex, myRebuildDelay, ModalityState.current(), null); } else { doClose(true); } } return true; } return false; } }.installOn(myList); myList.setCellRenderer(myModel.getListCellRenderer()); myList.setFont(editorFont); myList.addListSelectionListener(new ListSelectionListener() { private int myPreviousSelectionIndex = 0; @Override public void valueChanged(@NotNull ListSelectionEvent e) { if (myList.getSelectedValue() != NON_PREFIX_SEPARATOR) { myPreviousSelectionIndex = myList.getSelectedIndex(); chosenElementMightChange(); updateDocumentation(); } else if (allowMultipleSelection) { myList.setSelectedIndex(myPreviousSelectionIndex); } } }); myListScrollPane = ScrollPaneFactory.createScrollPane(myList); myListScrollPane.setViewportBorder(new EmptyBorder(0, 0, 0, 0)); myTextFieldPanel.setBorder(new EmptyBorder(2, 2, 2, 2)); showTextFieldPanel(); myInitialized = true; if (modalityState != null) { rebuildList(myInitialIndex, 0, modalityState, null); } }
From source file:com.intellij.ide.util.gotoByName.ChooseByNameBase.java
License:Apache License
private boolean postponeCloseWhenListReady(boolean ok) { if (!isToFixLostTyping()) return false; final String text = myTextField.getText(); if (ok && myCalcElementsThread != null && text != null && !text.trim().isEmpty()) { myPostponedOkAction = new ActionCallback(); IdeFocusManager.getInstance(myProject).typeAheadUntil(myPostponedOkAction); return true; }//from ww w . j a v a2 s . co m return false; }
From source file:com.intellij.internal.psiView.PsiViewerDialog.java
License:Apache License
private void focusEditor() { IdeFocusManager.getInstance(myProject).requestFocus(myEditor.getContentComponent(), true); }
From source file:com.intellij.internal.psiView.PsiViewerDialog.java
License:Apache License
private void focusTree() { IdeFocusManager.getInstance(myProject).requestFocus(myPsiTree, true); }
From source file:com.intellij.internal.psiView.PsiViewerDialog.java
License:Apache License
private void focusRefs() { IdeFocusManager.getInstance(myProject).requestFocus(myRefs, true); if (myRefs.getModel().getSize() > 0) { if (myRefs.getSelectedIndex() == -1) { myRefs.setSelectedIndex(0);//from www .ja v a 2 s . c om } } }
From source file:com.intellij.internal.psiView.PsiViewerDialog.java
License:Apache License
private void focusBlockTree() { IdeFocusManager.getInstance(myProject).requestFocus(myBlockTree, true); }
From source file:com.intellij.refactoring.extractMethodObject.ExtractMethodObjectDialog.java
License:Apache License
protected JComponent createCenterPanel() { mySignatureArea.setEditable(false);/* w w w . j av a 2s . c o m*/ myCreateInnerClassRb.setSelected(true); final ActionListener enableDisableListener = new ActionListener() { public void actionPerformed(final ActionEvent e) { enable(myCreateInnerClassRb.isSelected()); } }; myCreateInnerClassRb.addActionListener(enableDisableListener); myCreateAnonymousClassWrapperRb.addActionListener(enableDisableListener); myCreateAnonymousClassWrapperRb.setEnabled(!myMultipleExitPoints); myFoldCb.setSelected(myVariableData.isFoldingSelectedByDefault()); myFoldCb.setVisible(myVariableData.isFoldable()); myVariableData.setFoldingAvailable(myFoldCb.isSelected()); myInputVariables = myVariableData.getInputVariables() .toArray(new VariableData[myVariableData.getInputVariables().size()]); myFoldCb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { myVariableData.setFoldingAvailable(myFoldCb.isSelected()); myInputVariables = myVariableData.getInputVariables() .toArray(new VariableData[myVariableData.getInputVariables().size()]); myParametersTableContainer.removeAll(); myParametersTableContainer.add(createParametersPanel(), BorderLayout.CENTER); updateSignature(); updateVarargsEnabled(); } }); myParametersTableContainer.add(createParametersPanel(), BorderLayout.CENTER); final ActionListener updateSugnatureListener = new ActionListener() { public void actionPerformed(final ActionEvent e) { updateSignature(); IdeFocusManager.getInstance(myProject) .requestFocus(myCreateInnerClassRb.isSelected() ? myInnerClassName : myMethodName, false); } }; if (myStaticFlag || myCanBeStatic) { myCbMakeStatic.setEnabled(!myStaticFlag); myCbMakeStatic.setSelected(myStaticFlag); myCbMakeStatic.addActionListener(updateSugnatureListener); } else { myCbMakeStatic.setSelected(false); myCbMakeStatic.setEnabled(false); } updateVarargsEnabled(); myCbMakeVarargs.setSelected(myWasStatic); myCbMakeVarargs.addActionListener(updateSugnatureListener); myCbMakeVarargsAnonymous.setSelected(myWasStatic); myCbMakeVarargsAnonymous.addActionListener(updateSugnatureListener); final com.intellij.openapi.editor.event.DocumentAdapter nameListener = new com.intellij.openapi.editor.event.DocumentAdapter() { @Override public void documentChanged(final DocumentEvent e) { update(); } }; myInnerClassName.getDocument().addDocumentListener(nameListener); myMethodName.getDocument().addDocumentListener(nameListener); myPrivateRadioButton.setSelected(true); myCreateInnerClassRb.addActionListener(updateSugnatureListener); myCreateAnonymousClassWrapperRb.addActionListener(updateSugnatureListener); final Enumeration<AbstractButton> visibilities = myVisibilityGroup.getElements(); while (visibilities.hasMoreElements()) { visibilities.nextElement().addActionListener(updateSugnatureListener); } enable(true); return myWholePanel; }
From source file:com.intellij.refactoring.introduceparameterobject.IntroduceParameterObjectDialog.java
License:Apache License
public IntroduceParameterObjectDialog(PsiMethod sourceMethod) { super(sourceMethod.getProject(), true); this.sourceMethod = sourceMethod; setTitle(RefactorJBundle.message("introduce.parameter.object.title")); final DocumentListener docListener = new DocumentAdapter() { protected void textChanged(final DocumentEvent e) { validateButtons();/*from w w w.java2 s. co m*/ } }; final PsiClass containingClass = sourceMethod.getContainingClass(); keepMethodAsDelegate.setVisible(containingClass != null && !containingClass.isInterface()); classNameField.getDocument().addDocumentListener(docListener); myInnerClassNameTextField.getDocument().addDocumentListener(docListener); final PsiParameterList parameterList = sourceMethod.getParameterList(); final PsiParameter[] parameters = parameterList.getParameters(); parameterInfo = new VariableData[parameters.length]; for (int i = 0; i < parameterInfo.length; i++) { parameterInfo[i] = new VariableData(parameters[i]); parameterInfo[i].name = parameters[i].getName(); parameterInfo[i].passAsParameter = true; } sourceMethodTextField.setText(PsiFormatUtil.formatMethod(sourceMethod, PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_CONTAINING_CLASS | PsiFormatUtil.SHOW_NAME, 0)); final ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(useExistingClassButton); buttonGroup.add(createNewClassButton); buttonGroup.add(myCreateInnerClassRadioButton); createNewClassButton.setSelected(true); if (containingClass != null && containingClass.getQualifiedName() == null) { myCreateInnerClassRadioButton.setEnabled(false); } init(); final ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { toggleRadioEnablement(); final IdeFocusManager focusManager = IdeFocusManager.getInstance(myProject); if (useExistingClass()) { focusManager.requestFocus(existingClassField, true); } else if (myCreateInnerClassRadioButton.isSelected()) { focusManager.requestFocus(myInnerClassNameTextField, true); } else { focusManager.requestFocus(classNameField, true); } } }; useExistingClassButton.addActionListener(listener); createNewClassButton.addActionListener(listener); myCreateInnerClassRadioButton.addActionListener(listener); myGenerateAccessorsCheckBox.setSelected(true); myEscalateVisibilityCheckBox.setSelected(true); toggleRadioEnablement(); }
From source file:com.intellij.refactoring.replaceConstructorWithBuilder.ReplaceConstructorWithBuilderDialog.java
License:Apache License
protected JComponent createCenterPanel() { final Splitter splitter = new Splitter(true); splitter.setFirstComponent(createTablePanel()); splitter.setSecondComponent(myWholePanel); final ActionListener enableDisableListener = new ActionListener() { public void actionPerformed(final ActionEvent e) { setEnabled(myCreateBuilderClassRadioButton.isSelected()); IdeFocusManager.getInstance(myProject) .requestFocus(myCreateBuilderClassRadioButton.isSelected() ? myNewClassName : myExistentClassTF.getChildComponent(), true); validateButtons();/*from w w w .ja va 2 s .com*/ } }; myCreateBuilderClassRadioButton.addActionListener(enableDisableListener); myExistingBuilderClassRadioButton.addActionListener(enableDisableListener); myCreateBuilderClassRadioButton.setSelected(true); setEnabled(true); final DocumentAdapter validateButtonsListener = new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { validateButtons(); } }; myNewClassName.getDocument().addDocumentListener(validateButtonsListener); final PsiClass psiClass = myConstructors[0].getContainingClass(); LOG.assertTrue(psiClass != null); myNewClassName.setText(psiClass.getName() + "Builder"); return splitter; }