Search in sources :

Example 1 with UsagePreviewPanel

use of com.intellij.usages.impl.UsagePreviewPanel in project intellij-community by JetBrains.

the class SlicePanel method layoutPanel.

private void layoutPanel() {
    if (myUsagePreviewPanel != null) {
        Disposer.dispose(myUsagePreviewPanel);
    }
    removeAll();
    JScrollPane pane = ScrollPaneFactory.createScrollPane(myTree);
    if (isPreview()) {
        pane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT | SideBorder.RIGHT));
        boolean vertical = myToolWindow.getAnchor() == ToolWindowAnchor.LEFT || myToolWindow.getAnchor() == ToolWindowAnchor.RIGHT;
        Splitter splitter = new Splitter(vertical, UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS);
        splitter.setFirstComponent(pane);
        myUsagePreviewPanel = new UsagePreviewPanel(myProject, new UsageViewPresentation());
        myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT));
        Disposer.register(this, myUsagePreviewPanel);
        splitter.setSecondComponent(myUsagePreviewPanel);
        add(splitter, BorderLayout.CENTER);
    } else {
        pane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT));
        add(pane, BorderLayout.CENTER);
    }
    add(createToolbar().getComponent(), BorderLayout.WEST);
    myTree.getParent().setBackground(UIManager.getColor("Tree.background"));
    revalidate();
}
Also used : UsageViewPresentation(com.intellij.usages.UsageViewPresentation) Splitter(com.intellij.openapi.ui.Splitter) UsagePreviewPanel(com.intellij.usages.impl.UsagePreviewPanel)

Example 2 with UsagePreviewPanel

use of com.intellij.usages.impl.UsagePreviewPanel in project intellij-community by JetBrains.

the class FindDialog method createCenterPanel.

@Override
public JComponent createCenterPanel() {
    JPanel optionsPanel = new JPanel();
    optionsPanel.setLayout(new GridBagLayout());
    GridBagConstraints gbConstraints = new GridBagConstraints();
    gbConstraints.weightx = 1;
    gbConstraints.weighty = 1;
    gbConstraints.fill = GridBagConstraints.BOTH;
    gbConstraints.gridwidth = GridBagConstraints.REMAINDER;
    JPanel topOptionsPanel = new JPanel();
    topOptionsPanel.setLayout(new GridLayout(1, 2, UIUtil.DEFAULT_HGAP, 0));
    topOptionsPanel.add(createFindOptionsPanel());
    optionsPanel.add(topOptionsPanel, gbConstraints);
    JPanel resultsOptionPanel = null;
    if (myHelper.getModel().isMultipleFiles()) {
        optionsPanel.add(createGlobalScopePanel(), gbConstraints);
        gbConstraints.weightx = 1;
        gbConstraints.weighty = 1;
        gbConstraints.fill = GridBagConstraints.HORIZONTAL;
        gbConstraints.gridwidth = GridBagConstraints.REMAINDER;
        optionsPanel.add(createFilterPanel(), gbConstraints);
        myCbToSkipResultsWhenOneUsage = createCheckbox(myHelper.isSkipResultsWithOneUsage(), FindBundle.message("find.options.skip.results.tab.with.one.occurrence.checkbox"));
        myCbToSkipResultsWhenOneUsage.addActionListener(e -> myHelper.setSkipResultsWithOneUsage(myCbToSkipResultsWhenOneUsage.isSelected()));
        resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints);
        resultsOptionPanel.add(myCbToSkipResultsWhenOneUsage);
        myCbToSkipResultsWhenOneUsage.setVisible(!myHelper.isReplaceState());
        if (haveResultsPreview()) {
            final JBTable table = new JBTable() {

                @Override
                public Dimension getPreferredSize() {
                    return new Dimension(myInputComboBox.getWidth(), super.getPreferredSize().height);
                }
            };
            table.setShowColumns(false);
            table.setShowGrid(false);
            table.setIntercellSpacing(JBUI.emptySize());
            new NavigateToSourceListener().installOn(table);
            Splitter previewSplitter = new Splitter(true, 0.5f, 0.1f, 0.9f);
            myUsagePreviewPanel = new UsagePreviewPanel(myProject, new UsageViewPresentation(), true);
            myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder());
            registerNavigateToSourceShortcutOnComponent(table, myUsagePreviewPanel);
            myResultsPreviewTable = table;
            new TableSpeedSearch(table, new Convertor<Object, String>() {

                @Override
                public String convert(Object o) {
                    return ((UsageInfo2UsageAdapter) o).getFile().getName();
                }
            });
            myResultsPreviewTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

                @Override
                public void valueChanged(ListSelectionEvent e) {
                    if (e.getValueIsAdjusting())
                        return;
                    int index = myResultsPreviewTable.getSelectionModel().getLeadSelectionIndex();
                    if (index != -1) {
                        UsageInfo usageInfo = ((UsageInfo2UsageAdapter) myResultsPreviewTable.getModel().getValueAt(index, 0)).getUsageInfo();
                        myUsagePreviewPanel.updateLayout(usageInfo.isValid() ? Collections.singletonList(usageInfo) : null);
                        VirtualFile file = usageInfo.getVirtualFile();
                        myUsagePreviewPanel.setBorder(IdeBorderFactory.createTitledBorder(file != null ? file.getPath() : "", false));
                    } else {
                        myUsagePreviewPanel.updateLayout(null);
                        myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder());
                    }
                }
            });
            mySearchRescheduleOnCancellationsAlarm = new Alarm();
            previewSplitter.setFirstComponent(new JBScrollPane(myResultsPreviewTable));
            previewSplitter.setSecondComponent(myUsagePreviewPanel.createComponent());
            myPreviewSplitter = previewSplitter;
        }
    } else {
        JPanel leftOptionsPanel = new JPanel();
        leftOptionsPanel.setLayout(new GridLayout(3, 1, 0, 4));
        leftOptionsPanel.add(createDirectionPanel());
        leftOptionsPanel.add(createOriginPanel());
        leftOptionsPanel.add(createScopePanel());
        topOptionsPanel.add(leftOptionsPanel);
    }
    if (myHelper.getModel().isOpenInNewTabVisible()) {
        myCbToOpenInNewTab = new JCheckBox(FindBundle.message("find.open.in.new.tab.checkbox"));
        myCbToOpenInNewTab.setFocusable(false);
        myCbToOpenInNewTab.setSelected(myHelper.isUseSeparateView());
        myCbToOpenInNewTab.setEnabled(myHelper.getModel().isOpenInNewTabEnabled());
        myCbToOpenInNewTab.addActionListener(e -> myHelper.setUseSeparateView(myCbToOpenInNewTab.isSelected()));
        if (resultsOptionPanel == null)
            resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints);
        resultsOptionPanel.add(myCbToOpenInNewTab);
    }
    if (myPreviewSplitter != null) {
        TabbedPane pane = new JBTabsPaneImpl(myProject, SwingConstants.TOP, myDisposable);
        pane.insertTab("Options", null, optionsPanel, null, 0);
        pane.insertTab(PREVIEW_TITLE, null, myPreviewSplitter, null, RESULTS_PREVIEW_TAB_INDEX);
        myContent = pane;
        final AnAction anAction = new DumbAwareAction() {

            @Override
            public void actionPerformed(AnActionEvent e) {
                int selectedIndex = myContent.getSelectedIndex();
                myContent.setSelectedIndex(1 - selectedIndex);
            }
        };
        final ShortcutSet shortcutSet = ActionManager.getInstance().getAction(IdeActions.ACTION_SWITCHER).getShortcutSet();
        anAction.registerCustomShortcutSet(shortcutSet, getRootPane(), myDisposable);
        if (myPreviewResultsTabWasSelected)
            myContent.setSelectedIndex(RESULTS_PREVIEW_TAB_INDEX);
        return pane.getComponent();
    }
    return optionsPanel;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ListSelectionEvent(javax.swing.event.ListSelectionEvent) UsagePreviewPanel(com.intellij.usages.impl.UsagePreviewPanel) JBTable(com.intellij.ui.table.JBTable) DumbAwareAction(com.intellij.openapi.project.DumbAwareAction) UsageInfo(com.intellij.usageView.UsageInfo) ListSelectionListener(javax.swing.event.ListSelectionListener) Alarm(com.intellij.util.Alarm) JBScrollPane(com.intellij.ui.components.JBScrollPane)

Example 3 with UsagePreviewPanel

use of com.intellij.usages.impl.UsagePreviewPanel in project intellij-community by JetBrains.

the class FindPopupPanel method initComponents.

private void initComponents() {
    myTitleLabel = new JBLabel(FindBundle.message("find.in.path.dialog.title"), UIUtil.ComponentStyle.REGULAR);
    myTitleLabel.setFont(myTitleLabel.getFont().deriveFont(Font.BOLD));
    myTitleLabel.setBorder(JBUI.Borders.empty(0, 4, 0, 16));
    myCbCaseSensitive = new StateRestoringCheckBox(FindBundle.message("find.popup.case.sensitive"));
    ItemListener liveResultsPreviewUpdateListener = new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            scheduleResultsUpdate();
        }
    };
    myCbCaseSensitive.addItemListener(liveResultsPreviewUpdateListener);
    myCbPreserveCase = new StateRestoringCheckBox(FindBundle.message("find.options.replace.preserve.case"));
    myCbPreserveCase.addItemListener(liveResultsPreviewUpdateListener);
    myCbPreserveCase.setVisible(myHelper.getModel().isReplaceState());
    myCbWholeWordsOnly = new StateRestoringCheckBox(FindBundle.message("find.popup.whole.words"));
    myCbWholeWordsOnly.addItemListener(liveResultsPreviewUpdateListener);
    myCbRegularExpressions = new StateRestoringCheckBox(FindBundle.message("find.popup.regex"));
    myCbRegularExpressions.addItemListener(liveResultsPreviewUpdateListener);
    myCbFileFilter = new StateRestoringCheckBox(FindBundle.message("find.popup.filemask"));
    myCbFileFilter.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (myCbFileFilter.isSelected()) {
                myFileMaskField.setEnabled(true);
                if (myCbFileFilter.getClientProperty("dontRequestFocus") == null) {
                    myFileMaskField.selectAll();
                    IdeFocusManager.getInstance(myProject).requestFocus(myFileMaskField, true);
                }
            } else {
                myFileMaskField.setEnabled(false);
                if (myCbFileFilter.getClientProperty("dontRequestFocus") == null) {
                    IdeFocusManager.getInstance(myProject).requestFocus(mySearchComponent, true);
                }
            }
        }
    });
    myCbFileFilter.addItemListener(liveResultsPreviewUpdateListener);
    myFileMaskField = new TextFieldWithAutoCompletion<String>(myProject, new TextFieldWithAutoCompletion.StringsCompletionProvider(myFileMasks, null), false, null) {

        @Override
        public void setEnabled(boolean enabled) {
            super.setEnabled(enabled);
            setBackground(enabled ? JBColor.background() : UIUtil.getComboBoxDisabledBackground());
        }
    };
    myFileMaskField.setPreferredWidth(JBUI.scale(100));
    myFileMaskField.addDocumentListener(new com.intellij.openapi.editor.event.DocumentAdapter() {

        @Override
        public void documentChanged(com.intellij.openapi.editor.event.DocumentEvent e) {
            scheduleResultsUpdate();
        }
    });
    DefaultActionGroup switchContextGroup = new DefaultActionGroup();
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.ANY));
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.IN_COMMENTS));
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.IN_STRING_LITERALS));
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.EXCEPT_COMMENTS));
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.EXCEPT_STRING_LITERALS));
    switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.EXCEPT_COMMENTS_AND_STRING_LITERALS));
    switchContextGroup.setPopup(true);
    Presentation filterPresentation = new Presentation();
    filterPresentation.setIcon(AllIcons.General.Filter);
    AnAction myShowFilterPopupAction = new AnAction() {

        @Override
        public void actionPerformed(AnActionEvent e) {
            if (PlatformDataKeys.CONTEXT_COMPONENT.getData(e.getDataContext()) == null)
                return;
            ListPopup listPopup = JBPopupFactory.getInstance().createActionGroupPopup(null, switchContextGroup, e.getDataContext(), false, null, 10);
            listPopup.showUnderneathOf(myFilterContextButton);
        }
    };
    myFilterContextButton = new ActionButton(myShowFilterPopupAction, filterPresentation, ActionPlaces.UNKNOWN, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE) {

        @Override
        public int getPopState() {
            int state = super.getPopState();
            if (state != ActionButtonComponent.NORMAL)
                return state;
            return mySelectedContextName.equals(FindDialog.getPresentableName(FindModel.SearchContext.ANY)) ? ActionButtonComponent.NORMAL : ActionButtonComponent.PUSHED;
        }
    };
    myFilterContextButton.setFocusable(true);
    DefaultActionGroup tabResultsContextGroup = new DefaultActionGroup();
    tabResultsContextGroup.add(new ToggleAction(FindBundle.message("find.options.skip.results.tab.with.one.usage.checkbox")) {

        @Override
        public boolean isSelected(AnActionEvent e) {
            return FindSettings.getInstance().isSkipResultsWithOneUsage();
        }

        @Override
        public void setSelected(AnActionEvent e, boolean state) {
            myHelper.setSkipResultsWithOneUsage(state);
        }

        @Override
        public void update(@NotNull AnActionEvent e) {
            super.update(e);
            e.getPresentation().setVisible(!myHelper.isReplaceState());
        }
    });
    tabResultsContextGroup.add(new ToggleAction(FindBundle.message("find.open.in.new.tab.checkbox")) {

        @Override
        public boolean isSelected(AnActionEvent e) {
            return FindSettings.getInstance().isShowResultsInSeparateView();
        }

        @Override
        public void setSelected(AnActionEvent e, boolean state) {
            myHelper.setUseSeparateView(state);
        }
    });
    tabResultsContextGroup.setPopup(true);
    Presentation tabSettingsPresentation = new Presentation();
    tabSettingsPresentation.setIcon(AllIcons.General.SecondaryGroup);
    myTabResultsButton = new ActionButton(tabResultsContextGroup, tabSettingsPresentation, ActionPlaces.UNKNOWN, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE);
    myOKButton = new JButton(FindBundle.message("find.popup.find.button"));
    myOkActionListener = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            FindModel validateModel = myHelper.getModel().clone();
            applyTo(validateModel, false);
            ValidationInfo validationInfo = getValidationInfo(validateModel);
            if (validationInfo == null) {
                myHelper.getModel().copyFrom(validateModel);
                myHelper.updateFindSettings();
                myHelper.doOKAction();
            } else {
                String message = validationInfo.message;
                Messages.showMessageDialog(FindPopupPanel.this, message, CommonBundle.getErrorTitle(), Messages.getErrorIcon());
                return;
            }
            Disposer.dispose(myBalloon);
        }
    };
    myOKButton.addActionListener(myOkActionListener);
    registerKeyboardAction(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!myHelper.isReplaceState()) {
                navigateToSelectedUsage();
                return;
            }
            myOkActionListener.actionPerformed(e);
        }
    }, NEW_LINE, WHEN_IN_FOCUSED_WINDOW);
    registerKeyboardAction(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (myHelper.isReplaceState())
                return;
            myOkActionListener.actionPerformed(e);
        }
    }, OK_FIND, WHEN_IN_FOCUSED_WINDOW);
    mySearchComponent = new JTextArea();
    mySearchComponent.setColumns(25);
    mySearchComponent.setRows(1);
    myReplaceComponent = new JTextArea();
    myReplaceComponent.setColumns(25);
    myReplaceComponent.setRows(1);
    mySearchTextArea = new SearchTextArea(mySearchComponent, true, true);
    myReplaceTextArea = new SearchTextArea(myReplaceComponent, false, false);
    DocumentAdapter documentAdapter = new DocumentAdapter() {

        @Override
        protected void textChanged(DocumentEvent e) {
            mySearchComponent.setRows(Math.max(1, Math.min(3, StringUtil.countChars(mySearchComponent.getText(), '\n') + 1)));
            myReplaceComponent.setRows(Math.max(1, Math.min(3, StringUtil.countChars(myReplaceComponent.getText(), '\n') + 1)));
            if (myBalloon == null)
                return;
            if (e.getDocument() == mySearchComponent.getDocument()) {
                scheduleResultsUpdate();
            }
        }
    };
    mySearchComponent.getDocument().addDocumentListener(documentAdapter);
    myReplaceComponent.getDocument().addDocumentListener(documentAdapter);
    mySearchTextArea.setMultilineEnabled(false);
    myReplaceTextArea.setMultilineEnabled(false);
    Pair<FindPopupScopeUI.ScopeType, JComponent>[] scopeComponents = myScopeUI.getComponents();
    List<AnAction> scopeActions = new LinkedList<>();
    myScopeDetailsPanel = new JPanel(new CardLayout());
    for (Pair<FindPopupScopeUI.ScopeType, JComponent> scopeComponent : scopeComponents) {
        FindPopupScopeUI.ScopeType scopeType = scopeComponent.first;
        scopeActions.add(new MySelectScopeToggleAction(scopeType));
        myScopeDetailsPanel.add(scopeType.name, scopeComponent.second);
    }
    myScopeSelectionToolbar = createToolbar(scopeActions.toArray(AnAction.EMPTY_ARRAY));
    mySelectedScope = scopeComponents[0].first;
    myResultsPreviewTable = new JBTable() {

        @Override
        public Dimension getPreferredScrollableViewportSize() {
            return new Dimension(getWidth(), 1 + getRowHeight() * 4);
        }
    };
    myResultsPreviewTable.setFocusable(false);
    myResultsPreviewTable.getEmptyText().setShowAboveCenter(false);
    myResultsPreviewTable.setShowColumns(false);
    myResultsPreviewTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    myResultsPreviewTable.setShowGrid(false);
    myResultsPreviewTable.setIntercellSpacing(JBUI.emptySize());
    new DoubleClickListener() {

        @Override
        protected boolean onDoubleClick(MouseEvent event) {
            if (event.getSource() != myResultsPreviewTable)
                return false;
            navigateToSelectedUsage();
            return true;
        }
    }.installOn(myResultsPreviewTable);
    myResultsPreviewTable.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent e) {
            myResultsPreviewTable.transferFocus();
        }
    });
    applyFont(JBUI.Fonts.label(), myCbCaseSensitive, myCbPreserveCase, myCbWholeWordsOnly, myCbRegularExpressions, myResultsPreviewTable);
    ScrollingUtil.installActions(myResultsPreviewTable, false, mySearchComponent);
    ScrollingUtil.installActions(myResultsPreviewTable, false, myReplaceComponent);
    UIUtil.redirectKeystrokes(myDisposable, mySearchComponent, myResultsPreviewTable, NEW_LINE);
    UIUtil.redirectKeystrokes(myDisposable, myReplaceComponent, myResultsPreviewTable, NEW_LINE);
    ActionListener helpAction = new ActionListener() {

        public void actionPerformed(final ActionEvent e) {
            HelpManager.getInstance().invokeHelp("reference.dialogs.findinpath");
        }
    };
    registerKeyboardAction(helpAction, KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    registerKeyboardAction(helpAction, KeyStroke.getKeyStroke(KeyEvent.VK_HELP, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    myUsagePreviewPanel = new UsagePreviewPanel(myProject, new UsageViewPresentation(), Registry.is("ide.find.as.popup.editable.code")) {

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(myResultsPreviewTable.getWidth(), Math.max(getHeight(), getLineHeight() * 15));
        }
    };
    Disposer.register(myDisposable, myUsagePreviewPanel);
    myResultsPreviewTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent e) {
            if (e.getValueIsAdjusting())
                return;
            int index = myResultsPreviewTable.getSelectedRow();
            if (index != -1) {
                UsageInfo usageInfo = ((UsageInfo2UsageAdapter) myResultsPreviewTable.getModel().getValueAt(index, 0)).getUsageInfo();
                myUsagePreviewPanel.updateLayout(usageInfo.isValid() ? Collections.singletonList(usageInfo) : null);
                VirtualFile file = usageInfo.getVirtualFile();
                String path = "";
                if (file != null) {
                    String relativePath = VfsUtilCore.getRelativePath(file, myProject.getBaseDir());
                    if (relativePath == null)
                        relativePath = file.getPath();
                    path = "<html><body>&nbsp;&nbsp;&nbsp;" + relativePath.replace(file.getName(), "<b>" + file.getName() + "</b>") + "</body></html>";
                }
                myUsagePreviewPanel.setBorder(IdeBorderFactory.createTitledBorder(path, false, new JBInsets(8, 0, -14, 0)));
            } else {
                myUsagePreviewPanel.updateLayout(null);
                myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder());
            }
        }
    });
    mySearchRescheduleOnCancellationsAlarm = new Alarm();
    JBSplitter splitter = new JBSplitter(true, .33f);
    splitter.setSplitterProportionKey(SPLITTER_SERVICE_KEY);
    splitter.setDividerWidth(JBUI.scale(2));
    splitter.getDivider().setBackground(OnePixelDivider.BACKGROUND);
    JBScrollPane scrollPane = new JBScrollPane(myResultsPreviewTable) {

        @Override
        public Dimension getMinimumSize() {
            Dimension size = super.getMinimumSize();
            size.height = myResultsPreviewTable.getPreferredScrollableViewportSize().height;
            return size;
        }
    };
    scrollPane.setBorder(IdeBorderFactory.createEmptyBorder());
    splitter.setFirstComponent(scrollPane);
    JPanel bottomPanel = new JPanel(new MigLayout("flowx, ins 4 4 0 4, fillx, hidemode 2, gap 0"));
    bottomPanel.add(myTabResultsButton);
    bottomPanel.add(Box.createHorizontalGlue(), "growx, pushx");
    myOKHintLabel = new JBLabel(KeymapUtil.getShortcutsText(new Shortcut[] { new KeyboardShortcut(OK_FIND, null) }));
    myOKHintLabel.setEnabled(false);
    bottomPanel.add(myOKHintLabel, "gapright 10");
    bottomPanel.add(myOKButton);
    myCodePreviewComponent = myUsagePreviewPanel.createComponent();
    splitter.setSecondComponent(myCodePreviewComponent);
    JPanel scopesPanel = new JPanel(new MigLayout("flowx, gap 26, ins 0"));
    scopesPanel.add(myScopeSelectionToolbar.getComponent());
    scopesPanel.add(myScopeDetailsPanel, "growx, pushx");
    setLayout(new MigLayout("flowx, ins 4, gap 0, fillx, hidemode 3"));
    int cbGapLeft = myCbCaseSensitive.getInsets().left;
    int cbGapRight = myCbCaseSensitive.getInsets().right;
    String cbGap = cbGapLeft + cbGapRight < 16 ? "gapright " + (16 - cbGapLeft - cbGapRight) : "";
    add(myTitleLabel, "sx 2, growx, pushx, growy");
    add(myCbCaseSensitive, cbGap);
    add(myCbPreserveCase, cbGap);
    add(myCbWholeWordsOnly, cbGap);
    add(myCbRegularExpressions, "gapright 0");
    add(RegExHelpPopup.createRegExLink("<html><body><b>?</b></body></html>", myCbRegularExpressions, LOG), "gapright " + (16 - cbGapLeft));
    add(myCbFileFilter);
    add(myFileMaskField, "gapright 16");
    add(myFilterContextButton, "wrap");
    add(mySearchTextArea, "pushx, growx, sx 10, gaptop 4, wrap");
    add(myReplaceTextArea, "pushx, growx, sx 10, gaptop 4, wrap");
    add(scopesPanel, "sx 10, pushx, growx, ax left, wrap, gaptop 4, gapbottom 4");
    add(splitter, "pushx, growx, growy, pushy, sx 10, wrap, pad -4 -4 4 4");
    add(bottomPanel, "pushx, growx, dock south, sx 10");
    MnemonicHelper.init(this);
    setFocusCycleRoot(true);
    setFocusTraversalPolicy(new ContainerOrderFocusTraversalPolicy() {

        @Override
        public Component getComponentAfter(Container container, Component c) {
            return (c == myResultsPreviewTable) ? mySearchComponent : super.getComponentAfter(container, c);
        }
    });
}
Also used : UsageViewPresentation(com.intellij.usages.UsageViewPresentation) UsagePreviewPanel(com.intellij.usages.impl.UsagePreviewPanel) JBInsets(com.intellij.util.ui.JBInsets) JBTable(com.intellij.ui.table.JBTable) ActionButton(com.intellij.openapi.actionSystem.impl.ActionButton) JBLabel(com.intellij.ui.components.JBLabel) ListPopup(com.intellij.openapi.ui.popup.ListPopup) DocumentEvent(javax.swing.event.DocumentEvent) ListSelectionListener(javax.swing.event.ListSelectionListener) JBScrollPane(com.intellij.ui.components.JBScrollPane) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ListSelectionEvent(javax.swing.event.ListSelectionEvent) java.awt.event(java.awt.event) UsageInfo(com.intellij.usageView.UsageInfo) MigLayout(net.miginfocom.swing.MigLayout) UsageViewPresentation(com.intellij.usages.UsageViewPresentation) FindUsagesProcessPresentation(com.intellij.usages.FindUsagesProcessPresentation) RelativePoint(com.intellij.ui.awt.RelativePoint) ValidationInfo(com.intellij.openapi.ui.ValidationInfo) Alarm(com.intellij.util.Alarm)

Example 4 with UsagePreviewPanel

use of com.intellij.usages.impl.UsagePreviewPanel in project intellij-community by JetBrains.

the class TodoPanel method initUI.

private void initUI() {
    UIUtil.setLineStyleAngled(myTree);
    myTree.setShowsRootHandles(true);
    myTree.setRootVisible(false);
    myTree.setCellRenderer(new TodoCompositeRenderer());
    EditSourceOnDoubleClickHandler.install(myTree);
    new TreeSpeedSearch(myTree);
    DefaultActionGroup group = new DefaultActionGroup();
    group.add(ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE));
    group.addSeparator();
    group.add(ActionManager.getInstance().getAction(IdeActions.GROUP_VERSION_CONTROLS));
    PopupHandler.installPopupHandler(myTree, group, ActionPlaces.TODO_VIEW_POPUP, ActionManager.getInstance());
    myTree.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (!e.isConsumed() && KeyEvent.VK_ENTER == e.getKeyCode()) {
                TreePath path = myTree.getSelectionPath();
                if (path == null) {
                    return;
                }
                final Object userObject = ((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject();
                if (!((userObject instanceof NodeDescriptor ? (NodeDescriptor) userObject : null) instanceof TodoItemNode)) {
                    return;
                }
                OpenSourceUtil.openSourcesFrom(DataManager.getInstance().getDataContext(TodoPanel.this), false);
            }
        }
    });
    myUsagePreviewPanel = new UsagePreviewPanel(myProject, FindInProjectUtil.setupViewPresentation(false, new FindModel()));
    Disposer.register(this, myUsagePreviewPanel);
    myUsagePreviewPanel.setVisible(mySettings.showPreview);
    setContent(createCenterComponent());
    myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {

        @Override
        public void valueChanged(final TreeSelectionEvent e) {
            ApplicationManager.getApplication().invokeLater(() -> {
                if (myUsagePreviewPanel.isVisible()) {
                    updatePreviewPanel();
                }
            }, ModalityState.NON_MODAL, myProject.getDisposed());
        }
    });
    // Create tool bars and register custom shortcuts
    JPanel toolBarPanel = new JPanel(new GridLayout());
    DefaultActionGroup leftGroup = new DefaultActionGroup();
    leftGroup.add(new PreviousOccurenceToolbarAction(myOccurenceNavigator));
    leftGroup.add(new NextOccurenceToolbarAction(myOccurenceNavigator));
    leftGroup.add(new ContextHelpAction("find.todoList"));
    toolBarPanel.add(ActionManager.getInstance().createActionToolbar(ActionPlaces.TODO_VIEW_TOOLBAR, leftGroup, false).getComponent());
    DefaultActionGroup rightGroup = new DefaultActionGroup();
    AnAction expandAllAction = CommonActionsManager.getInstance().createExpandAllAction(myTreeExpander, this);
    rightGroup.add(expandAllAction);
    AnAction collapseAllAction = CommonActionsManager.getInstance().createCollapseAllAction(myTreeExpander, this);
    rightGroup.add(collapseAllAction);
    if (!myCurrentFileMode) {
        MyShowModulesAction showModulesAction = new MyShowModulesAction();
        showModulesAction.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_M, SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.CTRL_MASK)), myTree);
        rightGroup.add(showModulesAction);
        MyShowPackagesAction showPackagesAction = new MyShowPackagesAction();
        showPackagesAction.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_P, SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.CTRL_MASK)), myTree);
        rightGroup.add(showPackagesAction);
        MyFlattenPackagesAction flattenPackagesAction = new MyFlattenPackagesAction();
        flattenPackagesAction.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_F, SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.CTRL_MASK)), myTree);
        rightGroup.add(flattenPackagesAction);
    }
    MyAutoScrollToSourceHandler autoScrollToSourceHandler = new MyAutoScrollToSourceHandler();
    autoScrollToSourceHandler.install(myTree);
    rightGroup.add(autoScrollToSourceHandler.createToggleAction());
    SetTodoFilterAction setTodoFilterAction = new SetTodoFilterAction(myProject, mySettings, todoFilter -> setTodoFilter(todoFilter));
    rightGroup.add(setTodoFilterAction);
    rightGroup.add(new MyPreviewAction());
    toolBarPanel.add(ActionManager.getInstance().createActionToolbar(ActionPlaces.TODO_VIEW_TOOLBAR, rightGroup, false).getComponent());
    setToolbar(toolBarPanel);
}
Also used : FindModel(com.intellij.find.FindModel) KeyAdapter(java.awt.event.KeyAdapter) NodeDescriptor(com.intellij.ide.util.treeView.NodeDescriptor) UsagePreviewPanel(com.intellij.usages.impl.UsagePreviewPanel) TreeSelectionListener(javax.swing.event.TreeSelectionListener) ContextHelpAction(com.intellij.ide.actions.ContextHelpAction) PreviousOccurenceToolbarAction(com.intellij.ide.actions.PreviousOccurenceToolbarAction) KeyEvent(java.awt.event.KeyEvent) NextOccurenceToolbarAction(com.intellij.ide.actions.NextOccurenceToolbarAction) TodoItemNode(com.intellij.ide.todo.nodes.TodoItemNode) TreePath(javax.swing.tree.TreePath) TreeSelectionEvent(javax.swing.event.TreeSelectionEvent)

Aggregations

UsagePreviewPanel (com.intellij.usages.impl.UsagePreviewPanel)4 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 JBScrollPane (com.intellij.ui.components.JBScrollPane)2 JBTable (com.intellij.ui.table.JBTable)2 UsageInfo (com.intellij.usageView.UsageInfo)2 UsageViewPresentation (com.intellij.usages.UsageViewPresentation)2 Alarm (com.intellij.util.Alarm)2 ListSelectionEvent (javax.swing.event.ListSelectionEvent)2 ListSelectionListener (javax.swing.event.ListSelectionListener)2 FindModel (com.intellij.find.FindModel)1 ContextHelpAction (com.intellij.ide.actions.ContextHelpAction)1 NextOccurenceToolbarAction (com.intellij.ide.actions.NextOccurenceToolbarAction)1 PreviousOccurenceToolbarAction (com.intellij.ide.actions.PreviousOccurenceToolbarAction)1 TodoItemNode (com.intellij.ide.todo.nodes.TodoItemNode)1 NodeDescriptor (com.intellij.ide.util.treeView.NodeDescriptor)1 ActionButton (com.intellij.openapi.actionSystem.impl.ActionButton)1 DumbAwareAction (com.intellij.openapi.project.DumbAwareAction)1 Splitter (com.intellij.openapi.ui.Splitter)1 ValidationInfo (com.intellij.openapi.ui.ValidationInfo)1 ListPopup (com.intellij.openapi.ui.popup.ListPopup)1