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

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

Introduction

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

Prototype

public static IdeFocusManager getInstance(@Nullable Project project) 

Source Link

Usage

From source file:com.intellij.ide.navigationToolbar.NavBarPanel.java

License:Apache License

public NavBarPanel(@NotNull Project project, boolean docked) {
    super(new FlowLayout(FlowLayout.LEFT, 0, 0));
    myProject = project;/*  ww w  .  j  a  va  2  s.  c  om*/
    myModel = createModel();
    myIdeView = new NavBarIdeView(this);
    myPresentation = new NavBarPresentation(myProject);
    myUpdateQueue = new NavBarUpdateQueue(this);

    CustomizationUtil.installPopupHandler(this, IdeActions.GROUP_NAVBAR_POPUP,
            ActionPlaces.NAVIGATION_BAR_POPUP);
    setOpaque(false);
    if (!docked && UIUtil.isUnderDarcula()) {
        setBorder(new LineBorder(Gray._120, 1));
    }
    myCopyPasteDelegator = new CopyPasteDelegator(myProject, NavBarPanel.this) {
        @Override
        @NotNull
        protected PsiElement[] getSelectedElements() {
            final PsiElement element = getSelectedElement(PsiElement.class);
            return element == null ? PsiElement.EMPTY_ARRAY : new PsiElement[] { element };
        }
    };

    myUpdateQueue.queueModelUpdateFromFocus();
    myUpdateQueue.queueRebuildUi();
    if (!docked) {
        final ActionCallback typeAheadDone = new ActionCallback();
        IdeFocusManager.getInstance(project).typeAheadUntil(typeAheadDone);
        myUpdateQueue.queueTypeAheadDone(typeAheadDone);
    }

    Disposer.register(project, this);
}

From source file:com.intellij.ide.navigationToolbar.NavBarPanel.java

License:Apache License

public void rebuildAndSelectTail(final boolean requestFocus) {
    myUpdateQueue.queueModelUpdateFromFocus();
    myUpdateQueue.queueRebuildUi();//from  w w w.  j a  v a 2 s . c o m
    myUpdateQueue.queueSelect(new Runnable() {
        @Override
        public void run() {
            if (!myList.isEmpty()) {
                myModel.setSelectedIndex(myList.size() - 1);
                if (requestFocus) {
                    IdeFocusManager.getInstance(myProject).requestFocus(NavBarPanel.this, true);
                }
            }
        }
    });

    myUpdateQueue.flush();
}

From source file:com.intellij.ide.navigationToolbar.NavBarPanel.java

License:Apache License

public void installActions(final int index, final NavBarItem component) {
    //suppress it for a while
    //installDnD(index, component);

    ListenerUtil.addMouseListener(component, new MouseAdapter() {
        @Override//w  ww  . jav  a  2 s .co m
        public void mouseReleased(final MouseEvent e) {
            if (SystemInfo.isWindows) {
                click(e);
            }
        }

        @Override
        public void mousePressed(final MouseEvent e) {
            if (!SystemInfo.isWindows) {
                click(e);
            }
        }

        private void click(final MouseEvent e) {
            if (e.isConsumed())
                return;

            if (e.isPopupTrigger()) {
                myModel.setSelectedIndex(index);
                IdeFocusManager.getInstance(myProject).requestFocus(NavBarPanel.this, true);
                rightClick(index);
                e.consume();
            } else if (!e.isPopupTrigger()) {
                if (e.getClickCount() == 1) {
                    ctrlClick(index);
                    myModel.setSelectedIndex(index);
                    e.consume();
                } else if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
                    myModel.setSelectedIndex(index);
                    IdeFocusManager.getInstance(myProject).requestFocus(NavBarPanel.this, true);
                    doubleClick(index);
                    e.consume();
                }
            }
        }
    });
}

From source file:com.intellij.ide.navigationToolbar.NavBarPopup.java

License:Apache License

public NavBarPopup(final NavBarPanel panel, Object[] siblings, final int selectedIndex) {
    super(createPopupContent(panel, siblings));
    myPanel = panel;/*from w ww  . ja va 2s  . c  om*/
    myIndex = selectedIndex;
    setFocusRequestor(getComponent());
    setForceShowAsPopup(true);
    ListenerUtil.addMouseListener(getComponent(), new MouseAdapter() {
        @Override
        public void mouseReleased(final MouseEvent e) {
            if (SystemInfo.isWindows) {
                click(e);
            }
        }

        @Override
        public void mousePressed(final MouseEvent e) {
            if (!SystemInfo.isWindows) {
                click(e);
            }
        }

        private void click(final MouseEvent e) {
            if (e.getComponent() != getList())
                return;
            if (!e.isConsumed() && e.isPopupTrigger()) {
                myPanel.getModel().setSelectedIndex(selectedIndex);
                IdeFocusManager.getInstance(myPanel.getProject()).requestFocus(myPanel, true);
                myPanel.rightClick(selectedIndex);
                e.consume();
            } else {
                final Object value = getList().getSelectedValue();
                if (value != null) {
                    myPanel.navigateInsideBar(value);
                }
            }
        }
    });
}

From source file:com.intellij.ide.navigationToolbar.NavBarUpdateQueue.java

License:Apache License

private void processUserActivity() {
    if (myPanel == null || !myPanel.isShowing()) {
        return;//from  w ww.j a v  a 2s  .c  om
    }

    final Project project = myPanel.getProject();
    IdeFocusManager.getInstance(project).doWhenFocusSettlesDown(new Runnable() {
        @Override
        public void run() {
            Window wnd = SwingUtilities.windowForComponent(myPanel);
            if (wnd == null)
                return;

            Component focus = null;

            if (!wnd.isActive()) {
                IdeFrame frame = UIUtil.getParentOfType(IdeFrame.class, myPanel);
                if (frame != null) {
                    focus = IdeFocusManager.getInstance(project).getLastFocusedFor(frame);
                }
            } else {
                final Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow();
                if (window instanceof Dialog) {
                    final Dialog dialog = (Dialog) window;
                    if (dialog.isModal() && !SwingUtilities.isDescendingFrom(myPanel, dialog)) {
                        return;
                    }
                }
            }

            if (focus != null && focus.isShowing()) {
                if (!myPanel.hasFocus() && !myPanel.isNodePopupShowing()) {
                    requestModelUpdate(DataManager.getInstance().getDataContext(focus), null, false);
                }
            } else if (wnd.isActive()) {
                requestModelUpdate(null, myPanel.getContextObject(), false);
            }
        }
    });
}

From source file:com.intellij.ide.projectView.BaseProjectTreeBuilder.java

License:Apache License

@NotNull
@Override/*from  www  .j a v a2  s .c o  m*/
public AsyncResult<Object> revalidateElement(Object element) {
    final AsyncResult<Object> result = new AsyncResult<Object>();

    if (element instanceof AbstractTreeNode) {
        AbstractTreeNode node = (AbstractTreeNode) element;
        final Object value = node.getValue();
        VirtualFile vFile = null;
        if (value instanceof PsiFileSystemItem) {
            vFile = ((PsiFileSystemItem) value).getVirtualFile();
        } else if (value instanceof PsiElement) {
            PsiFile psiFile = ((PsiElement) value).getContainingFile();
            if (psiFile != null) {
                vFile = psiFile.getVirtualFile();
            }
        }
        final ActionCallback cb = new ActionCallback();

        final VirtualFile finalVFile = vFile;
        final FocusRequestor focusRequestor = IdeFocusManager.getInstance(myProject).getFurtherRequestor();
        batch(new Progressive() {
            @Override
            public void run(@NotNull ProgressIndicator indicator) {
                final Ref<Object> target = new Ref<Object>();
                _select(value, finalVFile, false, Conditions.<AbstractTreeNode>alwaysTrue(), cb, indicator,
                        target, focusRequestor, false);
                cb.doWhenDone(new Runnable() {
                    @Override
                    public void run() {
                        result.setDone(target.get());
                    }
                }).doWhenRejected(new Runnable() {
                    @Override
                    public void run() {
                        result.setRejected();
                    }
                });
            }
        });
    } else {
        result.setRejected();
    }
    return result;
}

From source file:com.intellij.ide.projectView.BaseProjectTreeBuilder.java

License:Apache License

@NotNull
private ActionCallback _select(final Object element, final VirtualFile file, final boolean requestFocus,
        final Condition<AbstractTreeNode> nonStopCondition) {

    final ActionCallback result = new ActionCallback();

    final FocusRequestor requestor = IdeFocusManager.getInstance(myProject).getFurtherRequestor();

    UiActivityMonitor.getInstance().addActivity(myProject, new UiActivity.AsyncBgOperation("projectViewSelect"),
            getUpdater().getModalityState());
    cancelUpdate().doWhenDone(new Runnable() {
        @Override//from  ww w  . ja  v  a 2  s. c om
        public void run() {
            batch(new Progressive() {
                @Override
                public void run(@NotNull ProgressIndicator indicator) {
                    _select(element, file, requestFocus, nonStopCondition, result, indicator, null, requestor,
                            false);
                    UiActivityMonitor.getInstance().removeActivity(myProject,
                            new UiActivity.AsyncBgOperation("projectViewSelect"));
                }
            });
        }
    });

    return result;
}

From source file:com.intellij.ide.projectView.impl.ProjectViewImpl.java

License:Apache License

private void showPane(AbstractProjectViewPane newPane) {
    AbstractProjectViewPane currentPane = getCurrentProjectViewPane();
    PsiElement selectedPsiElement = null;
    if (currentPane != null) {
        if (currentPane != newPane) {
            currentPane.saveExpandedPaths();
        }//from w  w w.ja v  a 2s . co m
        final PsiElement[] elements = currentPane.getSelectedPSIElements();
        if (elements.length > 0) {
            selectedPsiElement = elements[0];
        }
    }
    myViewContentPanel.removeAll();
    JComponent component = newPane.createComponent();
    UIUtil.removeScrollBorder(component);
    myViewContentPanel.setLayout(new BorderLayout());
    myViewContentPanel.add(component, BorderLayout.CENTER);
    myCurrentViewId = newPane.getId();
    String newSubId = myCurrentViewSubId = newPane.getSubId();
    myViewContentPanel.revalidate();
    myViewContentPanel.repaint();
    createToolbarActions();

    myAutoScrollToSourceHandler.install(newPane.myTree);

    IdeFocusManager.getInstance(myProject).requestFocus(newPane.getComponentToFocus(), false);

    newPane.restoreExpandedPaths();
    if (selectedPsiElement != null) {
        final VirtualFile virtualFile = PsiUtilCore.getVirtualFile(selectedPsiElement);
        if (virtualFile != null && ((ProjectViewSelectInTarget) newPane.createSelectInTarget())
                .isSubIdSelectable(newSubId, new SelectInContext() {
                    @Override
                    @NotNull
                    public Project getProject() {
                        return myProject;
                    }

                    @Override
                    @NotNull
                    public VirtualFile getVirtualFile() {
                        return virtualFile;
                    }

                    @Override
                    public Object getSelectorInFile() {
                        return null;
                    }

                    @Override
                    public FileEditorProvider getFileEditorProvider() {
                        return null;
                    }
                })) {
            newPane.select(selectedPsiElement, virtualFile, true);
        }
    }
    myAutoScrollToSourceHandler.onMouseClicked(newPane.myTree);
}

From source file:com.intellij.ide.structureView.newStructureView.StructureViewComponent.java

License:Apache License

public boolean select(final Object element, final boolean requestFocus) {
    myAbstractTreeBuilder.getReady(this).doWhenDone(new Runnable() {
        @Override/*from  w  ww .  j a  v  a2 s.c om*/
        public void run() {
            expandPathToElement(element).doWhenDone(new Consumer<AbstractTreeNode>() {
                @Override
                public void consume(AbstractTreeNode abstractTreeNode) {
                    myAbstractTreeBuilder.select(abstractTreeNode, new Runnable() {
                        @Override
                        public void run() {
                            if (requestFocus) {
                                IdeFocusManager.getInstance(myProject)
                                        .requestFocus(myAbstractTreeBuilder.getTree(), false);
                            }
                        }
                    });
                }
            });
        }
    });
    return true;
}

From source file:com.intellij.ide.util.FileStructurePopup.java

License:Apache License

public FileStructurePopup(@NotNull Project project, @NotNull FileEditor fileEditor,
        @NotNull StructureView structureView, final boolean applySortAndFilter) {
    myProject = project;/*from w  w w  . ja v  a  2s.  c  o m*/
    myFileEditor = fileEditor;
    myStructureViewDelegate = structureView;

    //Stop code analyzer to speedup EDT
    DaemonCodeAnalyzer.getInstance(myProject).disableUpdateByTimer(this);
    IdeFocusManager.getInstance(myProject).typeAheadUntil(myTreeHasBuilt);
    Disposer.register(this, myStructureViewDelegate);

    //long l = System.currentTimeMillis();
    if (myFileEditor instanceof TextEditor) {
        Editor e = ((TextEditor) myFileEditor).getEditor();
        myPsiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(e.getDocument());
    }

    //System.out.println(System.currentTimeMillis() - l);
    if (myStructureViewDelegate instanceof StructureViewComposite) {
        StructureViewComposite.StructureViewDescriptor[] views = ((StructureViewComposite) myStructureViewDelegate)
                .getStructureViews();
        myBaseTreeModel = new StructureViewCompositeModel(myPsiFile, views);
        Disposer.register(this, (Disposable) myBaseTreeModel);
    } else {
        myBaseTreeModel = myStructureViewDelegate.getTreeModel();
    }

    if (applySortAndFilter) {
        myTreeActionsOwner = new TreeStructureActionsOwner(myBaseTreeModel);
        myTreeModel = new TreeModelWrapper(myBaseTreeModel, myTreeActionsOwner);
    } else {
        myTreeActionsOwner = null;
        myTreeModel = myStructureViewDelegate.getTreeModel();
    }

    myTreeStructure = new SmartTreeStructure(project, myTreeModel) {
        @Override
        public void rebuildTree() {
            if (ApplicationManager.getApplication().isUnitTestMode() || !myPopup.isDisposed()) {
                super.rebuildTree();
            }
        }

        @Override
        public boolean isToBuildChildrenInBackground(final Object element) {
            return getRootElement() == element;
        }

        @Override
        protected TreeElementWrapper createTree() {
            return new StructureViewComponent.StructureViewTreeElementWrapper(myProject, myModel.getRoot(),
                    myModel);
        }

        @NonNls
        @Override
        public String toString() {
            return "structure view tree structure(model=" + myTreeModel + ")";
        }
    };

    myTree = new FileStructureTree(myTreeStructure.getRootElement(),
            Registry.is("fast.tree.expand.in.structure.view"));

    myTree.setCellRenderer(new NodeRenderer());

    mySpeedSearch = new MyTreeSpeedSearch();
    mySpeedSearch.setComparator(new SpeedSearchComparator(false, true));

    final FileStructurePopupFilter filter = new FileStructurePopupFilter();
    myFilteringStructure = new FilteringTreeStructure(filter, myTreeStructure,
            ApplicationManager.getApplication().isUnitTestMode());
    myAbstractTreeBuilder = new FilteringTreeBuilder(myTree, filter, myFilteringStructure, null) {
        @Override
        public void initRootNode() {

        }

        @Override
        protected boolean validateNode(Object child) {
            return StructureViewComponent.isValid(child);
        }

        @Override
        public void revalidateTree() {
            //myTree.revalidate();
            //myTree.repaint();
        }

        @Override
        public boolean isToEnsureSelectionOnFocusGained() {
            return false;
        }
    };

    myTreeExpander = new DefaultTreeExpander(myTree);
    final ModelListener modelListener = new ModelListener() {
        @Override
        public void onModelChanged() {
            myAbstractTreeBuilder.queueUpdate();
        }
    };
    myTreeModel.addModelListener(modelListener);
    Disposer.register(this, new Disposable() {
        @Override
        public void dispose() {
            myTreeModel.removeModelListener(modelListener);
        }
    });

    //myAbstractTreeBuilder.getUi().setPassthroughMode(true);
    myAbstractTreeBuilder.getUi().getUpdater().setDelay(1);
    myInitialPsiElement = getCurrentElement(myPsiFile);
    //myAbstractTreeBuilder.setCanYieldUpdate(true);
    Disposer.register(this, myAbstractTreeBuilder);
    TreeUtil.installActions(myTree);
}