Example usage for com.intellij.openapi.wm IdeFocusManager requestDefaultFocus

List of usage examples for com.intellij.openapi.wm IdeFocusManager requestDefaultFocus

Introduction

In this page you can find the example usage for com.intellij.openapi.wm IdeFocusManager requestDefaultFocus.

Prototype

@NotNull
public ActionCallback requestDefaultFocus(boolean forced) 

Source Link

Document

Requests default focus.

Usage

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);
}