Search in sources :

Example 1 with JBList

use of com.intellij.ui.components.JBList in project go-lang-idea-plugin by go-lang-plugin-org.

the class GoMultiplePackagesQuickFix method invoke.

@Override
public void invoke(@NotNull Project project, @NotNull PsiFile file, @Nullable("is null when called from inspection") Editor editor, @NotNull PsiElement startElement, @NotNull PsiElement endElement) {
    if (editor == null || myTestingPackageName != null) {
        renamePackagesInDirectory(project, file.getContainingDirectory(), myTestingPackageName != null ? myTestingPackageName : myPackageName);
        return;
    }
    JBList list = new JBList(myPackages);
    list.installCellRenderer(o -> {
        JBLabel label = new JBLabel(o.toString());
        label.setBorder(IdeBorderFactory.createEmptyBorder(2, 4, 2, 4));
        return label;
    });
    JBPopupFactory.getInstance().createListPopupBuilder(list).setTitle("Choose package name").setItemChoosenCallback(() -> {
        String name = (String) list.getSelectedValue();
        if (name != null) {
            renamePackagesInDirectory(project, file.getContainingDirectory(), name);
        }
    }).createPopup().showInBestPositionFor(editor);
}
Also used : JBLabel(com.intellij.ui.components.JBLabel) JBList(com.intellij.ui.components.JBList)

Example 2 with JBList

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

the class CreateParameterForFieldIntention method performForConstructor.

private static void performForConstructor(PsiElement element, final Project project, Editor editor, List<GrField> candidates) {
    final GrMethod constructor = PsiTreeUtil.getParentOfType(element, GrMethod.class);
    if (candidates.isEmpty())
        return;
    if (ApplicationManager.getApplication().isUnitTestMode()) {
        for (GrField candidate : candidates) {
            addParameter(candidate, constructor, project);
        }
        return;
    }
    final JList list = new JBList(candidates.toArray(new GrField[candidates.size()]));
    list.setCellRenderer(new DefaultPsiElementCellRenderer());
    new PopupChooserBuilder(list).setTitle(GroovyIntentionsBundle.message("create.parameter.for.field.intention.name")).setMovable(true).setItemChoosenCallback(() -> {
        final Object[] selectedValues = list.getSelectedValues();
        CommandProcessor.getInstance().executeCommand(project, () -> {
            for (Object selectedValue : selectedValues) {
                LOG.assertTrue(((GrField) selectedValue).isValid());
                addParameter(((GrField) selectedValue), constructor, project);
            }
        }, GroovyIntentionsBundle.message("create.parameter.for.field.intention.name"), null);
    }).createPopup().showInBestPositionFor(editor);
}
Also used : GrField(org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField) DefaultPsiElementCellRenderer(com.intellij.ide.util.DefaultPsiElementCellRenderer) GrMethod(org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod) JBList(com.intellij.ui.components.JBList) PopupChooserBuilder(com.intellij.openapi.ui.popup.PopupChooserBuilder)

Example 3 with JBList

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

the class CreateParameterForFieldIntention method performForField.

private static void performForField(PsiElement element, final Project project, Editor editor, List<GrMethod> constructors) {
    final GrField field = PsiTreeUtil.getParentOfType(element, GrField.class);
    if (constructors.isEmpty())
        return;
    if (ApplicationManager.getApplication().isUnitTestMode()) {
        for (GrMethod constructor : constructors) {
            addParameter(field, constructor, project);
        }
        return;
    }
    final JList list = new JBList(constructors.toArray(new GrMethod[constructors.size()]));
    list.setCellRenderer(new MethodCellRenderer(true));
    new PopupChooserBuilder(list).setTitle(GroovyIntentionsBundle.message("create.parameter.for.field.intention.name")).setMovable(true).setItemChoosenCallback(() -> {
        final Object[] selectedValues = list.getSelectedValues();
        Arrays.sort(selectedValues, (o1, o2) -> ((GrMethod) o2).getParameterList().getParametersCount() - ((GrMethod) o1).getParameterList().getParametersCount());
        CommandProcessor.getInstance().executeCommand(project, () -> {
            for (Object selectedValue : selectedValues) {
                LOG.assertTrue(((GrMethod) selectedValue).isValid());
                addParameter(field, ((GrMethod) selectedValue), project);
            }
        }, GroovyIntentionsBundle.message("create.parameter.for.field.intention.name"), null);
    }).createPopup().showInBestPositionFor(editor);
}
Also used : GrField(org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField) GrMethod(org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod) JBList(com.intellij.ui.components.JBList) PopupChooserBuilder(com.intellij.openapi.ui.popup.PopupChooserBuilder) MethodCellRenderer(com.intellij.ide.util.MethodCellRenderer)

Example 4 with JBList

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

the class TestNGConfigurationEditor method createView.

private void createView() {
    commonParametersPanel.add(commonJavaParameters, BorderLayout.CENTER);
    classField.setComponent(new EditorTextFieldWithBrowseButton(project, true, new JavaCodeFragment.VisibilityChecker() {

        @Override
        public Visibility isDeclarationVisible(PsiElement declaration, PsiElement place) {
            if (declaration instanceof PsiClass && place.getParent() instanceof PsiJavaCodeReferenceElement) {
                return Visibility.VISIBLE;
            }
            try {
                if (declaration instanceof PsiClass && new TestClassBrowser(project, TestNGConfigurationEditor.this).getFilter().isAccepted((PsiClass) declaration)) {
                    return Visibility.VISIBLE;
                }
            } catch (MessageInfoException e) {
                return Visibility.NOT_VISIBLE;
            }
            return Visibility.NOT_VISIBLE;
        }
    }));
    final EditorTextFieldWithBrowseButton methodEditorTextField = new EditorTextFieldWithBrowseButton(project, true, JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE, PlainTextLanguage.INSTANCE.getAssociatedFileType());
    methodField.setComponent(methodEditorTextField);
    groupField.setComponent(new TextFieldWithBrowseButton.NoPathCompletion());
    suiteField.setComponent(new TextFieldWithBrowseButton());
    packageField.setVisible(true);
    packageField.setEnabled(true);
    packageField.setComponent(new EditorTextFieldWithBrowseButton(project, false));
    TextFieldWithBrowseButton outputDirectoryButton = new TextFieldWithBrowseButton();
    outputDirectory.setComponent(outputDirectoryButton);
    outputDirectoryButton.addBrowseFolderListener("TestNG", "Select test output directory", project, FileChooserDescriptorFactory.createSingleFolderDescriptor());
    moduleClasspath.setEnabled(true);
    moduleClasspath.setComponent(new ModulesComboBox());
    propertiesTableModel = new TestNGParametersTableModel();
    listenerModel = new TestNGListenersTableModel();
    TextFieldWithBrowseButton textFieldWithBrowseButton = new TextFieldWithBrowseButton();
    propertiesFile.setComponent(textFieldWithBrowseButton);
    FileChooserDescriptor propertiesFileDescriptor = new FileChooserDescriptor(true, false, false, false, false, false) {

        @Override
        public boolean isFileVisible(VirtualFile virtualFile, boolean showHidden) {
            if (!showHidden && virtualFile.getName().charAt(0) == '.')
                return false;
            return virtualFile.isDirectory() || "properties".equals(virtualFile.getExtension());
        }
    };
    textFieldWithBrowseButton.addBrowseFolderListener("TestNG", "Select .properties file for test properties", project, propertiesFileDescriptor);
    propertiesTableView = new TableView(propertiesTableModel);
    myPropertiesPanel.add(ToolbarDecorator.createDecorator(propertiesTableView).setAddAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            propertiesTableModel.addParameter();
            int index = propertiesTableModel.getRowCount() - 1;
            propertiesTableView.setRowSelectionInterval(index, index);
        }
    }).setRemoveAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            int idx = propertiesTableView.getSelectedRow() - 1;
            for (int row : propertiesTableView.getSelectedRows()) {
                propertiesTableModel.removeProperty(row);
            }
            if (idx > -1)
                propertiesTableView.setRowSelectionInterval(idx, idx);
        }
    }).disableUpDownActions().createPanel(), BorderLayout.CENTER);
    myListenersList = new JBList(listenerModel);
    myListenersPanel.add(ToolbarDecorator.createDecorator(myListenersList).setAddAction(new AddActionButtonRunnable()).setRemoveAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            int idx = myListenersList.getSelectedIndex() - 1;
            for (int row : myListenersList.getSelectedIndices()) {
                listenerModel.removeListener(row);
            }
            if (idx > -1)
                myListenersList.setSelectedIndex(idx);
        }
    }).setAddActionUpdater(new AnActionButtonUpdater() {

        @Override
        public boolean isEnabled(AnActionEvent e) {
            return !project.isDefault();
        }
    }).disableUpDownActions().createPanel(), BorderLayout.CENTER);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) FileChooserDescriptor(com.intellij.openapi.fileChooser.FileChooserDescriptor) AnActionEvent(com.intellij.openapi.actionSystem.AnActionEvent) MessageInfoException(com.theoryinpractice.testng.MessageInfoException) ModulesComboBox(com.intellij.application.options.ModulesComboBox) TestClassBrowser(com.theoryinpractice.testng.configuration.browser.TestClassBrowser) JBList(com.intellij.ui.components.JBList) TableView(com.intellij.ui.table.TableView)

Example 5 with JBList

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

the class GenerateXmlTagAction method invoke.

@Override
public void invoke(@NotNull final Project project, @NotNull final Editor editor, @NotNull final PsiFile file) {
    if (!EditorModificationUtil.checkModificationAllowed(editor))
        return;
    try {
        final XmlTag contextTag = getContextTag(editor, file);
        if (contextTag == null) {
            throw new CommonRefactoringUtil.RefactoringErrorHintException("Caret should be positioned inside a tag");
        }
        XmlElementDescriptor currentTagDescriptor = contextTag.getDescriptor();
        assert currentTagDescriptor != null;
        final XmlElementDescriptor[] descriptors = currentTagDescriptor.getElementsDescriptors(contextTag);
        Arrays.sort(descriptors, Comparator.comparing(PsiMetaData::getName));
        final JBList list = new JBList(descriptors);
        list.setCellRenderer(new MyListCellRenderer());
        Runnable runnable = () -> {
            final XmlElementDescriptor selected = (XmlElementDescriptor) list.getSelectedValue();
            new WriteCommandAction.Simple(project, "Generate XML Tag", file) {

                @Override
                protected void run() {
                    if (selected == null)
                        return;
                    XmlTag newTag = createTag(contextTag, selected);
                    PsiElement anchor = getAnchor(contextTag, editor, selected);
                    if (anchor == null) {
                        // insert it in the cursor position
                        int offset = editor.getCaretModel().getOffset();
                        Document document = editor.getDocument();
                        document.insertString(offset, newTag.getText());
                        PsiDocumentManager.getInstance(project).commitDocument(document);
                        newTag = PsiTreeUtil.getParentOfType(file.findElementAt(offset + 1), XmlTag.class, false);
                    } else {
                        newTag = (XmlTag) contextTag.addAfter(newTag, anchor);
                    }
                    if (newTag != null) {
                        generateTag(newTag, editor);
                    }
                }
            }.execute();
        };
        if (ApplicationManager.getApplication().isUnitTestMode()) {
            XmlElementDescriptor descriptor = ContainerUtil.find(descriptors, xmlElementDescriptor -> xmlElementDescriptor.getName().equals(TEST_THREAD_LOCAL.get()));
            list.setSelectedValue(descriptor, false);
            runnable.run();
        } else {
            JBPopupFactory.getInstance().createListPopupBuilder(list).setTitle("Choose Tag Name").setItemChoosenCallback(runnable).setFilteringEnabled(o -> ((XmlElementDescriptor) o).getName()).createPopup().showInBestPositionFor(editor);
        }
    } catch (CommonRefactoringUtil.RefactoringErrorHintException e) {
        HintManager.getInstance().showErrorHint(editor, e.getMessage());
    }
}
Also used : Document(com.intellij.openapi.editor.Document) CommonRefactoringUtil(com.intellij.refactoring.util.CommonRefactoringUtil) JBList(com.intellij.ui.components.JBList) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) PsiElement(com.intellij.psi.PsiElement)

Aggregations

JBList (com.intellij.ui.components.JBList)107 PopupChooserBuilder (com.intellij.openapi.ui.popup.PopupChooserBuilder)22 NotNull (org.jetbrains.annotations.NotNull)20 JBPopup (com.intellij.openapi.ui.popup.JBPopup)19 ArrayList (java.util.ArrayList)17 Project (com.intellij.openapi.project.Project)15 ListSelectionEvent (javax.swing.event.ListSelectionEvent)15 ListSelectionListener (javax.swing.event.ListSelectionListener)15 VirtualFile (com.intellij.openapi.vfs.VirtualFile)12 List (java.util.List)12 Nullable (org.jetbrains.annotations.Nullable)12 PsiElement (com.intellij.psi.PsiElement)11 RelativePoint (com.intellij.ui.awt.RelativePoint)11 javax.swing (javax.swing)9 Pair (com.intellij.openapi.util.Pair)7 java.awt (java.awt)7 JBPopupFactory (com.intellij.openapi.ui.popup.JBPopupFactory)6 JBLabel (com.intellij.ui.components.JBLabel)6 ActionEvent (java.awt.event.ActionEvent)6 PsiClassListCellRenderer (com.intellij.ide.util.PsiClassListCellRenderer)5