List of usage examples for com.intellij.openapi.wm IdeFocusManager requestDefaultFocus
@NotNull public ActionCallback requestDefaultFocus(boolean forced)
From source file:com.intellij.ide.actions.SearchEverywhereAction.java
License:Apache License
private void doNavigate(final int index) { final Project project = CommonDataKeys.PROJECT .getData(DataManager.getInstance().getDataContext(getField().getTextEditor())); final Executor executor = ourShiftIsPressed.get() ? DefaultRunExecutor.getRunExecutorInstance() : ExecutorRegistry.getInstance().getExecutorById(ToolWindowId.DEBUG); assert project != null; final SearchListModel model = getModel(); if (isMoreItem(index)) { final String pattern = myPopupField.getText(); WidgetID wid = null;//from ww w . ja v a 2 s .c o m if (index == model.moreIndex.classes) wid = WidgetID.CLASSES; else if (index == model.moreIndex.files) wid = WidgetID.FILES; else if (index == model.moreIndex.settings) wid = WidgetID.SETTINGS; else if (index == model.moreIndex.actions) wid = WidgetID.ACTIONS; else if (index == model.moreIndex.symbols) wid = WidgetID.SYMBOLS; else if (index == model.moreIndex.runConfigurations) wid = WidgetID.RUN_CONFIGURATIONS; if (wid != null) { final WidgetID widgetID = wid; myCurrentWorker.doWhenProcessed(new Runnable() { @Override public void run() { myCalcThread = new CalcThread(project, pattern, true); myPopupActualWidth = 0; myCurrentWorker = myCalcThread.insert(index, widgetID); } }); return; } } final String pattern = getField().getText(); final Object value = myList.getSelectedValue(); saveHistory(project, pattern, value); IdeFocusManager focusManager = IdeFocusManager.findInstanceByComponent(getField().getTextEditor()); if (myPopup != null && myPopup.isVisible()) { myPopup.cancel(); } if (value instanceof BooleanOptionDescription) { final BooleanOptionDescription option = (BooleanOptionDescription) value; option.setOptionState(!option.isOptionEnabled()); myList.revalidate(); myList.repaint(); getField().requestFocus(); return; } if (value instanceof OptionsTopHitProvider) { //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { @Override public void run() { getField().setText("#" + ((OptionsTopHitProvider) value).getId() + " "); } }); return; } Runnable onDone = null; AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); try { if (value instanceof PsiElement) { onDone = new Runnable() { @Override public void run() { NavigationUtil.activateFileWithPsiElement((PsiElement) value, true); } }; return; } else if (isVirtualFile(value)) { onDone = new Runnable() { @Override public void run() { OpenSourceUtil.navigate(true, new OpenFileDescriptor(project, (VirtualFile) value)); } }; return; } else if (isActionValue(value) || isSetting(value) || isRunConfiguration(value)) { focusManager.requestDefaultFocus(true); final Component comp = myContextComponent; final AnActionEvent event = myActionEvent; IdeFocusManager.getInstance(project).doWhenFocusSettlesDown(new Runnable() { @Override public void run() { Component c = comp; if (c == null) { c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); } if (isRunConfiguration(value)) { ((ChooseRunConfigurationPopup.ItemWrapper) value).perform(project, executor, DataManager.getInstance().getDataContext(c)); } else { GotoActionAction.openOptionOrPerformAction(value, pattern, project, c, event); if (isToolWindowAction(value)) return; } } }); return; } else if (value instanceof Navigatable) { onDone = new Runnable() { @Override public void run() { OpenSourceUtil.navigate(true, (Navigatable) value); } }; return; } } finally { token.finish(); final ActionCallback callback = onFocusLost(); if (onDone != null) { callback.doWhenDone(onDone); } } focusManager.requestDefaultFocus(true); }
From source file:com.intellij.ide.IdeEventQueue.java
License:Apache License
public void fixStickyFocusedComponents(@Nullable AWTEvent e) { if (e != null && !(e instanceof InputEvent)) return; final KeyboardFocusManager mgr = KeyboardFocusManager.getCurrentKeyboardFocusManager(); if (Registry.is("actionSystem.fixStickyFocusedWindows")) { fixStickyWindow(mgr, mgr.getActiveWindow(), "setGlobalActiveWindow"); fixStickyWindow(mgr, mgr.getFocusedWindow(), "setGlobalFocusedWindow"); }/*from w ww . j av a2s . c o m*/ if (Registry.is("actionSystem.fixNullFocusedComponent")) { final Component focusOwner = mgr.getFocusOwner(); if (focusOwner == null || !focusOwner.isShowing() || focusOwner instanceof JFrame || focusOwner instanceof JDialog) { final Application app = ApplicationManager.getApplication(); if (app instanceof ApplicationEx && !((ApplicationEx) app).isLoaded()) { return; } boolean mouseEventsAhead = isMouseEventAhead(e); boolean focusTransferredNow = IdeFocusManager.getGlobalInstance().isFocusBeingTransferred(); boolean okToFixFocus = !mouseEventsAhead && !focusTransferredNow; if (okToFixFocus) { Window showingWindow = mgr.getActiveWindow(); if (showingWindow == null) { Method getNativeFocusOwner = ReflectionUtil.getDeclaredMethod(KeyboardFocusManager.class, "getNativeFocusOwner"); if (getNativeFocusOwner != null) { try { Object owner = getNativeFocusOwner.invoke(mgr); if (owner instanceof Component) { showingWindow = UIUtil.getWindow((Component) owner); } } catch (Exception e1) { LOG.debug(e1); } } } if (showingWindow != null) { final IdeFocusManager fm = IdeFocusManager.findInstanceByComponent(showingWindow); ExpirableRunnable maybeRequestDefaultFocus = new ExpirableRunnable() { @Override public void run() { if (getPopupManager().requestDefaultFocus(false)) return; final Application app = ApplicationManager.getApplication(); if (app != null && app.isActive()) { fm.requestDefaultFocus(false); } } @Override public boolean isExpired() { return !UIUtil.isMeaninglessFocusOwner(mgr.getFocusOwner()); } }; fm.revalidateFocus(maybeRequestDefaultFocus); } } } } }
From source file:com.intellij.ui.FocusTrackback.java
License:Apache License
public void restoreFocus() { final Application app = ApplicationManager.getApplication(); if (app == null || wrongOS() || myConsumed || isSheduledForRestore()) return;// w w w. j a v a2 s. c o m Project project = null; DataContext context = myParentWindow == null ? DataManager.getInstance().getDataContext() : DataManager.getInstance().getDataContext(myParentWindow); if (context != null) { project = CommonDataKeys.PROJECT.getData(context); } mySheduledForRestore = true; final List<FocusTrackback> stack = getCleanStackForRoot(); final int index = stack.indexOf(this); for (int i = index - 1; i >= 0; i--) { if (stack.get(i).isSheduledForRestore()) { dispose(); return; } } if (project != null && !project.isDisposed()) { final IdeFocusManager focusManager = IdeFocusManager.getInstance(project); cleanParentWindow(); final Project finalProject = project; focusManager.requestFocus(new MyFocusCommand(), myForcedRestore).doWhenProcessed(new Runnable() { public void run() { dispose(); } }).doWhenRejected(new Runnable() { @Override public void run() { focusManager.revalidateFocus(new ExpirableRunnable.ForProject(finalProject) { @Override public void run() { if (UIUtil.isMeaninglessFocusOwner(focusManager.getFocusOwner())) { focusManager.requestDefaultFocus(false); } } }); } }); } else { // no ide focus manager, so no way -- do just later //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { public void run() { _restoreFocus(); dispose(); } }); } }
From source file:ru.list.search.AssistantSearchEverywhereAction.java
License:Apache License
private void doNavigate(final int index, final int windowIndex) { final DataManager dataManager = DataManager.getInstance(); if (dataManager == null) return;//from w w w . j a va 2 s .c o m final Project project = CommonDataKeys.PROJECT .getData(dataManager.getDataContext(getField().getTextEditor())); final Executor executor = ourShiftIsPressed.get() ? DefaultRunExecutor.getRunExecutorInstance() : ExecutorRegistry.getInstance().getExecutorById(ToolWindowId.DEBUG); assert project != null; final SearchListModel model = getModel(); if (isMoreItem(index)) { final String pattern = myPopupField.getText(); WidgetID wid = null; if (index == model.moreIndex.classes) wid = WidgetID.CLASSES; else if (index == model.moreIndex.files) wid = WidgetID.FILES; else if (index == model.moreIndex.settings) wid = WidgetID.SETTINGS; else if (index == model.moreIndex.actions) wid = WidgetID.ACTIONS; else if (index == model.moreIndex.symbols) wid = WidgetID.SYMBOLS; else if (index == model.moreIndex.runConfigurations) wid = WidgetID.RUN_CONFIGURATIONS; if (wid != null) { final WidgetID widgetID = wid; myCurrentWorker.doWhenProcessed(new Runnable() { @Override public void run() { myCalcThread = new CalcThread(project, pattern, true); myPopupActualWidth = 0; myCurrentWorker = myCalcThread.insert(index, widgetID); } }); return; } } final String pattern = getField().getText(); final Object value = myList.getSelectedValue(); saveHistory(project, pattern, value); IdeFocusManager focusManager = IdeFocusManager.findInstanceByComponent(getField().getTextEditor()); if (myPopup != null && myPopup.isVisible()) { myPopup.cancel(); } if (value instanceof BooleanOptionDescription) { final BooleanOptionDescription option = (BooleanOptionDescription) value; option.setOptionState(!option.isOptionEnabled()); myList.revalidate(); myList.repaint(); getField().requestFocus(); return; } if (value instanceof OptionsTopHitProvider) { //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { @Override public void run() { getField().setText("#" + ((OptionsTopHitProvider) value).getId() + " "); } }); return; } Runnable onDone = null; AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); try { if (value instanceof PsiElement) { onDone = new Runnable() { public void run() { PsiElement psiElement = (PsiElement) value; FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project); AssistantUtils.openPsiElement(windowIndex, psiElement, fileEditorManager, myEditorWindow); } }; return; } else if (isVirtualFile(value)) { onDone = new Runnable() { public void run() { VirtualFile virtualFile = (VirtualFile) value; FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project); AssistantUtils.openFileInEditorGroup(windowIndex, virtualFile, fileEditorManager, myEditorWindow); } }; return; } else if (isActionValue(value) || isSetting(value) || isRunConfiguration(value)) { focusManager.requestDefaultFocus(true); final Component comp = myContextComponent; final AnActionEvent event = myActionEvent; IdeFocusManager.getInstance(project).doWhenFocusSettlesDown(new Runnable() { @Override public void run() { Component c = comp; if (c == null) { c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); } if (isRunConfiguration(value)) { ((ChooseRunConfigurationPopup.ItemWrapper) value).perform(project, executor, dataManager.getDataContext(c)); } else { GotoActionAction.openOptionOrPerformAction(value, pattern, project, c, event); if (isToolWindowAction(value)) return; } } }); return; } else if (value instanceof Navigatable) { onDone = new Runnable() { @Override public void run() { Navigatable navigatable = (Navigatable) value; FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project); AssistantUtils.openNavigatable(windowIndex, navigatable, fileEditorManager, myEditorWindow); } }; return; } } finally { token.finish(); final ActionCallback callback = onFocusLost(); if (onDone != null) { callback.doWhenDone(onDone); } } focusManager.requestDefaultFocus(true); }