Search in sources :

Example 41 with JBScrollPane

use of com.intellij.ui.components.JBScrollPane in project intellij-community by JetBrains.

the class RegExResponseHandler method getConfigurationComponent.

@NotNull
@Override
public JComponent getConfigurationComponent(@NotNull Project project) {
    FormBuilder builder = FormBuilder.createFormBuilder();
    final EditorTextField taskPatternText;
    taskPatternText = new LanguageTextField(RegExpLanguage.INSTANCE, project, myTaskRegex, false);
    taskPatternText.addDocumentListener(new DocumentAdapter() {

        @Override
        public void documentChanged(DocumentEvent e) {
            myTaskRegex = taskPatternText.getText();
        }
    });
    String tooltip = "<html>Task pattern should be a regexp with two matching groups: ({id}.+?) and ({summary}.+?)";
    builder.addLabeledComponent("Task Pattern:", new JBScrollPane(taskPatternText)).addTooltip(tooltip);
    return builder.getPanel();
}
Also used : FormBuilder(com.intellij.util.ui.FormBuilder) EditorTextField(com.intellij.ui.EditorTextField) DocumentAdapter(com.intellij.openapi.editor.event.DocumentAdapter) DocumentEvent(com.intellij.openapi.editor.event.DocumentEvent) JBScrollPane(com.intellij.ui.components.JBScrollPane) LanguageTextField(com.intellij.ui.LanguageTextField) NotNull(org.jetbrains.annotations.NotNull)

Example 42 with JBScrollPane

use of com.intellij.ui.components.JBScrollPane in project intellij-community by JetBrains.

the class ResourceBundleEditor method recreateEditorsPanel.

void recreateEditorsPanel() {
    if (!myProject.isOpen() || myDisposed)
        return;
    myValuesPanel.removeAll();
    myValuesPanel.setLayout(new CardLayout());
    JPanel valuesPanelComponent = new MyJPanel(new GridBagLayout());
    myValuesPanel.add(new JBScrollPane(valuesPanelComponent) {

        @Override
        public void updateUI() {
            super.updateUI();
            getViewport().setBackground(UIUtil.getPanelBackground());
        }
    }, VALUES);
    myValuesPanel.add(myNoPropertySelectedPanel, NO_PROPERTY_SELECTED);
    final List<PropertiesFile> propertiesFiles = myResourceBundle.getPropertiesFiles();
    GridBagConstraints gc = new GridBagConstraints(0, 0, 0, 0, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, JBUI.insets(5), 0, 0);
    releaseAllEditors();
    myTitledPanels.clear();
    int y = 0;
    Editor previousEditor = null;
    Editor firstEditor = null;
    for (final PropertiesFile propertiesFile : propertiesFiles) {
        final EditorEx editor = createEditor();
        final Editor oldEditor = myEditors.put(propertiesFile.getVirtualFile(), editor);
        if (firstEditor == null) {
            firstEditor = editor;
        }
        if (previousEditor != null) {
            editor.putUserData(ChooseSubsequentPropertyValueEditorAction.PREV_EDITOR_KEY, previousEditor);
            previousEditor.putUserData(ChooseSubsequentPropertyValueEditorAction.NEXT_EDITOR_KEY, editor);
        }
        previousEditor = editor;
        if (oldEditor != null) {
            EditorFactory.getInstance().releaseEditor(oldEditor);
        }
        editor.setViewer(!propertiesFile.getVirtualFile().isWritable());
        editor.getContentComponent().addKeyListener(new KeyAdapter() {

            @Override
            public void keyTyped(KeyEvent e) {
                if (editor.isViewer()) {
                    editor.setViewer(ReadonlyStatusHandler.getInstance(myProject).ensureFilesWritable(propertiesFile.getVirtualFile()).hasReadonlyFiles());
                }
            }
        });
        editor.addFocusListener(new FocusChangeListener() {

            @Override
            public void focusGained(final Editor editor) {
                mySelectedEditor = editor;
            }

            @Override
            public void focusLost(final Editor editor) {
                if (!editor.isViewer() && propertiesFile.getContainingFile().isValid()) {
                    writeEditorPropertyValue(null, editor, propertiesFile.getVirtualFile());
                    myVfsListener.flush();
                }
            }
        });
        gc.gridx = 0;
        gc.gridy = y++;
        gc.gridheight = 1;
        gc.gridwidth = GridBagConstraints.REMAINDER;
        gc.weightx = 1;
        gc.weighty = 1;
        gc.anchor = GridBagConstraints.CENTER;
        String title = propertiesFile.getName();
        title += PropertiesUtil.getPresentableLocale(propertiesFile.getLocale());
        JComponent comp = new JPanel(new BorderLayout()) {

            @Override
            public Dimension getPreferredSize() {
                Insets insets = getBorder().getBorderInsets(this);
                return new Dimension(100, editor.getLineHeight() * 4 + insets.top + insets.bottom);
            }
        };
        comp.add(editor.getComponent(), BorderLayout.CENTER);
        comp.setBorder(IdeBorderFactory.createTitledBorder(title, false));
        myTitledPanels.put(propertiesFile.getVirtualFile(), (JPanel) comp);
        valuesPanelComponent.add(comp, gc);
    }
    if (previousEditor != null) {
        previousEditor.putUserData(ChooseSubsequentPropertyValueEditorAction.NEXT_EDITOR_KEY, firstEditor);
        firstEditor.putUserData(ChooseSubsequentPropertyValueEditorAction.PREV_EDITOR_KEY, previousEditor);
    }
    gc.gridx = 0;
    gc.gridy = y;
    gc.gridheight = GridBagConstraints.REMAINDER;
    gc.gridwidth = GridBagConstraints.REMAINDER;
    gc.weightx = 10;
    gc.weighty = 1;
    valuesPanelComponent.add(new JPanel(), gc);
    selectionChanged();
    myValuesPanel.repaint();
    updateEditorsFromProperties(true);
}
Also used : EditorEx(com.intellij.openapi.editor.ex.EditorEx) KeyAdapter(java.awt.event.KeyAdapter) KeyEvent(java.awt.event.KeyEvent) XmlPropertiesFile(com.intellij.lang.properties.xml.XmlPropertiesFile) PropertiesFile(com.intellij.lang.properties.psi.PropertiesFile) com.intellij.openapi.fileEditor(com.intellij.openapi.fileEditor) JBScrollPane(com.intellij.ui.components.JBScrollPane) FocusChangeListener(com.intellij.openapi.editor.ex.FocusChangeListener)

Example 43 with JBScrollPane

use of com.intellij.ui.components.JBScrollPane in project intellij-community by JetBrains.

the class CertificateConfigurable method addCertificatePanel.

private void addCertificatePanel(@NotNull X509Certificate certificate) {
    String uniqueName = getCardName(certificate);
    JPanel infoPanel = new CertificateInfoPanel(certificate);
    UIUtil.addInsets(infoPanel, UIUtil.PANEL_REGULAR_INSETS);
    JBScrollPane scrollPane = new JBScrollPane(infoPanel);
    //scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    myDetailsPanel.add(scrollPane, uniqueName);
}
Also used : JBScrollPane(com.intellij.ui.components.JBScrollPane)

Example 44 with JBScrollPane

use of com.intellij.ui.components.JBScrollPane 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 45 with JBScrollPane

use of com.intellij.ui.components.JBScrollPane 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)

Aggregations

JBScrollPane (com.intellij.ui.components.JBScrollPane)51 ActionEvent (java.awt.event.ActionEvent)7 Nullable (org.jetbrains.annotations.Nullable)7 DialogWrapper (com.intellij.openapi.ui.DialogWrapper)6 VirtualFile (com.intellij.openapi.vfs.VirtualFile)6 JBList (com.intellij.ui.components.JBList)6 ListSelectionEvent (javax.swing.event.ListSelectionEvent)6 ListSelectionListener (javax.swing.event.ListSelectionListener)5 JBTable (com.intellij.ui.table.JBTable)4 Tree (com.intellij.ui.treeStructure.Tree)4 java.awt (java.awt)4 MouseEvent (java.awt.event.MouseEvent)4 List (java.util.List)4 javax.swing (javax.swing)4 TreePath (javax.swing.tree.TreePath)4 NotNull (org.jetbrains.annotations.NotNull)4 Module (com.intellij.openapi.module.Module)3 Project (com.intellij.openapi.project.Project)3 VerticalFlowLayout (com.intellij.openapi.ui.VerticalFlowLayout)3 StringUtil (com.intellij.openapi.util.text.StringUtil)3