Example usage for com.intellij.openapi.actionSystem IdeActions ACTION_CODE_COMPLETION

List of usage examples for com.intellij.openapi.actionSystem IdeActions ACTION_CODE_COMPLETION

Introduction

In this page you can find the example usage for com.intellij.openapi.actionSystem IdeActions ACTION_CODE_COMPLETION.

Prototype

String ACTION_CODE_COMPLETION

To view the source code for com.intellij.openapi.actionSystem IdeActions ACTION_CODE_COMPLETION.

Click Source Link

Usage

From source file:com.intellij.application.options.CodeCompletionPanel.java

License:Apache License

public CodeCompletionPanel() {
    //noinspection unchecked
    myCaseSensitiveCombo.setModel(new DefaultComboBoxModel(CASE_VARIANTS));

    ActionManager actionManager = ActionManager.getInstance();
    String basicShortcut = KeymapUtil
            .getFirstKeyboardShortcutText(actionManager.getAction(IdeActions.ACTION_CODE_COMPLETION));
    String smartShortcut = KeymapUtil
            .getFirstKeyboardShortcutText(actionManager.getAction(IdeActions.ACTION_SMART_TYPE_COMPLETION));
    if (StringUtil.isNotEmpty(basicShortcut)) {
        myCbOnCodeCompletion.setText(myCbOnCodeCompletion.getText() + " ( " + basicShortcut + " )");
    }/*www.  j a va 2s . c  om*/
    if (StringUtil.isNotEmpty(smartShortcut)) {
        myCbOnSmartTypeCompletion.setText(myCbOnSmartTypeCompletion.getText() + " ( " + smartShortcut + " )");
    }

    myCbAutocompletion.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            boolean selected = myCbAutocompletion.isSelected();
            myCbSelectByChars.setEnabled(selected);
        }
    });

    myCbAutopopupJavaDoc.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            myAutopopupJavaDocField.setEnabled(myCbAutopopupJavaDoc.isSelected());
        }
    });

    myCbParameterInfoPopup.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            myParameterInfoDelayField.setEnabled(myCbParameterInfoPopup.isSelected());
        }
    });

    reset();
}

From source file:com.intellij.codeInsight.completion.FilePathCompletionContributor.java

License:Apache License

public FilePathCompletionContributor() {
    extend(CompletionType.BASIC, psiElement(), new CompletionProvider<CompletionParameters>() {
        @Override/*from  w  w  w  . ja v a2  s  . co m*/
        protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context,
                @NotNull CompletionResultSet result) {
            final PsiReference psiReference = parameters.getPosition().getContainingFile()
                    .findReferenceAt(parameters.getOffset());
            if (getReference(psiReference) != null && parameters.getInvocationCount() == 1) {
                final String shortcut = getActionShortcut(IdeActions.ACTION_CODE_COMPLETION);
                if (shortcut != null) {
                    result.addLookupAdvertisement(
                            CodeInsightBundle.message("class.completion.file.path", shortcut));
                }
            }
        }
    });

    CompletionProvider<CompletionParameters> provider = new CompletionProvider<CompletionParameters>() {
        @Override
        protected void addCompletions(@NotNull final CompletionParameters parameters, ProcessingContext context,
                @NotNull final CompletionResultSet _result) {
            if (!parameters.isExtendedCompletion()) {
                return;
            }

            @NotNull
            final CompletionResultSet result = _result.caseInsensitive();
            final PsiElement e = parameters.getPosition();
            final Project project = e.getProject();

            final PsiReference psiReference = parameters.getPosition().getContainingFile()
                    .findReferenceAt(parameters.getOffset());

            final Pair<FileReference, Boolean> fileReferencePair = getReference(psiReference);
            if (fileReferencePair != null) {
                final FileReference first = fileReferencePair.getFirst();
                if (first == null)
                    return;

                final FileReferenceSet set = first.getFileReferenceSet();
                String prefix = set.getPathString().substring(0, parameters.getOffset()
                        - set.getElement().getTextRange().getStartOffset() - set.getStartInElement());

                List<String> pathPrefixParts = null;
                int lastSlashIndex;
                if ((lastSlashIndex = prefix.lastIndexOf('/')) != -1) {
                    pathPrefixParts = StringUtil.split(prefix.substring(0, lastSlashIndex), "/");
                    prefix = prefix.substring(lastSlashIndex + 1);
                }

                final CompletionResultSet __result = result.withPrefixMatcher(prefix).caseInsensitive();

                final PsiFile originalFile = parameters.getOriginalFile();
                final VirtualFile contextFile = originalFile.getVirtualFile();
                if (contextFile != null) {
                    final String[] fileNames = getAllNames(project);
                    final Set<String> resultNames = new TreeSet<String>();
                    for (String fileName : fileNames) {
                        if (filenameMatchesPrefixOrType(fileName, prefix, set.getSuitableFileTypes(),
                                parameters.getInvocationCount())) {
                            resultNames.add(fileName);
                        }
                    }

                    final ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex();

                    final Module contextModule = index.getModuleForFile(contextFile);
                    if (contextModule != null) {
                        final List<FileReferenceHelper> helpers = FileReferenceHelperRegistrar
                                .getHelpers(originalFile);

                        final GlobalSearchScope scope = ProjectScope.getProjectScope(project);
                        for (final String name : resultNames) {
                            ProgressManager.checkCanceled();

                            final PsiFile[] files = FilenameIndex.getFilesByName(project, name, scope);

                            if (files.length > 0) {
                                for (final PsiFile file : files) {
                                    ProgressManager.checkCanceled();

                                    final VirtualFile virtualFile = file.getVirtualFile();
                                    if (virtualFile != null && virtualFile.isValid()
                                            && !Comparing.equal(virtualFile, contextFile)) {
                                        for (FileReferenceHelper contextHelper : helpers) {
                                            ProgressManager.checkCanceled();

                                            if (contextHelper.isMine(project, virtualFile)) {
                                                if (pathPrefixParts == null || fileMatchesPathPrefix(
                                                        contextHelper.getPsiFileSystemItem(project,
                                                                virtualFile),
                                                        pathPrefixParts)) {
                                                    __result.addElement(
                                                            new FilePathLookupItem(file, contextHelper));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (set.getSuitableFileTypes().length > 0 && parameters.getInvocationCount() == 1) {
                    final String shortcut = getActionShortcut(IdeActions.ACTION_CODE_COMPLETION);
                    if (shortcut != null) {
                        result.addLookupAdvertisement(
                                CodeInsightBundle.message("class.completion.file.path.all.variants", shortcut));
                    }
                }

                if (fileReferencePair.getSecond())
                    result.stopHere();
            }
        }
    };
    extend(CompletionType.BASIC, psiElement(), provider);
}

From source file:com.intellij.codeInsight.completion.JavaClassNameCompletionContributor.java

License:Apache License

@Override
public String handleEmptyLookup(@NotNull final CompletionParameters parameters, final Editor editor) {
    if (!(parameters.getOriginalFile() instanceof PsiJavaFile))
        return null;

    if (shouldShowSecondSmartCompletionHint(parameters)) {
        return LangBundle.message("completion.no.suggestions") + "; " + StringUtil.decapitalize(CompletionBundle
                .message("completion.class.name.hint.2", getActionShortcut(IdeActions.ACTION_CODE_COMPLETION)));
    }//from w  w  w.  j  a  v  a2 s.  c o m

    return null;
}

From source file:com.intellij.codeInsight.completion.JavaCompletionContributor.java

License:Apache License

public static void advertiseSecondCompletion(Project project, CompletionResultSet result) {
    if (FeatureUsageTracker.getInstance()
            .isToBeAdvertisedInLookup(CodeCompletionFeatures.SECOND_BASIC_COMPLETION, project)) {
        result.addLookupAdvertisement("Press " + getActionShortcut(IdeActions.ACTION_CODE_COMPLETION)
                + " to see non-imported classes");
    }/*from   w w w  .j a v a  2s  .c o m*/
}

From source file:com.intellij.codeInsight.completion.JavaCompletionContributor.java

License:Apache License

@Override
public String advertise(@NotNull final CompletionParameters parameters) {
    if (!(parameters.getOriginalFile() instanceof PsiJavaFile)) {
        return null;
    }/*from   w ww.  j  av a 2  s.  c o  m*/

    if (parameters.getCompletionType() == CompletionType.BASIC && parameters.getInvocationCount() > 0) {
        PsiElement position = parameters.getPosition();
        if (psiElement().withParent(
                psiReferenceExpression().withFirstChild(psiReferenceExpression().referencing(psiClass())))
                .accepts(position)) {
            if (CompletionUtil.shouldShowFeature(parameters, JavaCompletionFeatures.GLOBAL_MEMBER_NAME)) {
                final String shortcut = getActionShortcut(IdeActions.ACTION_CODE_COMPLETION);
                if (shortcut != null) {
                    return "Pressing " + shortcut
                            + " twice without a class qualifier would show all accessible static methods";
                }
            }
        }
    }

    if (parameters.getCompletionType() != CompletionType.SMART
            && shouldSuggestSmartCompletion(parameters.getPosition())) {
        if (CompletionUtil.shouldShowFeature(parameters,
                CodeCompletionFeatures.EDITING_COMPLETION_SMARTTYPE_GENERAL)) {
            final String shortcut = getActionShortcut(IdeActions.ACTION_SMART_TYPE_COMPLETION);
            if (shortcut != null) {
                return CompletionBundle.message("completion.smart.hint", shortcut);
            }
        }
    }

    if (parameters.getCompletionType() == CompletionType.SMART && parameters.getInvocationCount() == 1) {
        final PsiType[] psiTypes = ExpectedTypesGetter.getExpectedTypes(parameters.getPosition(), true);
        if (psiTypes.length > 0) {
            if (CompletionUtil.shouldShowFeature(parameters,
                    JavaCompletionFeatures.SECOND_SMART_COMPLETION_TOAR)) {
                final String shortcut = getActionShortcut(IdeActions.ACTION_SMART_TYPE_COMPLETION);
                if (shortcut != null) {
                    for (final PsiType psiType : psiTypes) {
                        final PsiType type = PsiUtil.extractIterableTypeParameter(psiType, false);
                        if (type != null) {
                            return CompletionBundle.message("completion.smart.aslist.hint", shortcut,
                                    type.getPresentableText());
                        }
                    }
                }
            }
            if (CompletionUtil.shouldShowFeature(parameters,
                    JavaCompletionFeatures.SECOND_SMART_COMPLETION_ASLIST)) {
                final String shortcut = getActionShortcut(IdeActions.ACTION_SMART_TYPE_COMPLETION);
                if (shortcut != null) {
                    for (final PsiType psiType : psiTypes) {
                        if (psiType instanceof PsiArrayType) {
                            final PsiType componentType = ((PsiArrayType) psiType).getComponentType();
                            if (!(componentType instanceof PsiPrimitiveType)) {
                                return CompletionBundle.message("completion.smart.toar.hint", shortcut,
                                        componentType.getPresentableText());
                            }
                        }
                    }
                }
            }

            if (CompletionUtil.shouldShowFeature(parameters,
                    JavaCompletionFeatures.SECOND_SMART_COMPLETION_CHAIN)) {
                final String shortcut = getActionShortcut(IdeActions.ACTION_SMART_TYPE_COMPLETION);
                if (shortcut != null) {
                    return CompletionBundle.message("completion.smart.chain.hint", shortcut);
                }
            }
        }
    }
    return null;
}

From source file:com.intellij.codeInsight.completion.XmlCompletionContributor.java

License:Apache License

@Override
public String advertise(@Nonnull final CompletionParameters parameters) {
    if (isXmlNameCompletion(parameters) && parameters.getCompletionType() == CompletionType.BASIC) {
        if (FeatureUsageTracker.getInstance().isToBeAdvertisedInLookup(TAG_NAME_COMPLETION_FEATURE,
                parameters.getPosition().getProject())) {
            final String shortcut = getActionShortcut(IdeActions.ACTION_CODE_COMPLETION);
            return XmlBundle.message("tag.name.completion.hint", shortcut);
        }//  w  w w . j  a  v  a  2 s . co  m
    }
    return super.advertise(parameters);
}

From source file:com.intellij.find.editorHeaderActions.VariantsCompletionAction.java

License:Apache License

public VariantsCompletionAction(EditorSearchComponent editorSearchComponent, Getter<JTextComponent> textField) {
    myEditorSearchComponent = editorSearchComponent;
    final AnAction action = ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION);
    setTextField(textField);//from www .j  av  a 2 s. co  m
    if (action != null) {
        registerCustomShortcutSet(action.getShortcutSet(), getTextField());
    }
}

From source file:com.intellij.refactoring.copy.CopyFilesOrDirectoriesDialog.java

License:Apache License

@Override
protected JComponent createNorthPanel() {
    myInformationLabel = JBLabelDecorator.createJBLabelDecorator().setBold(true);
    final FormBuilder formBuilder = FormBuilder.createFormBuilder().addComponent(myInformationLabel)
            .addVerticalGap(UIUtil.LARGE_VGAP - UIUtil.DEFAULT_VGAP);
    DocumentListener documentListener = new DocumentAdapter() {
        @Override/*from  w w w.  j a v  a 2 s.co  m*/
        public void textChanged(DocumentEvent event) {
            validateOKButton();
        }
    };

    if (myShowNewNameField) {
        myNewNameField = new JTextField();
        myNewNameField.getDocument().addDocumentListener(documentListener);
        formBuilder.addLabeledComponent(RefactoringBundle.message("copy.files.new.name.label"), myNewNameField);
    }

    if (myShowDirectoryField) {
        myTargetDirectoryField = new TextFieldWithHistoryWithBrowseButton();
        myTargetDirectoryField.setTextFieldPreferredWidth(MAX_PATH_LENGTH);
        final List<String> recentEntries = RecentsManager.getInstance(myProject).getRecentEntries(RECENT_KEYS);
        if (recentEntries != null) {
            myTargetDirectoryField.getChildComponent().setHistory(recentEntries);
        }
        final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
        myTargetDirectoryField.addBrowseFolderListener(RefactoringBundle.message("select.target.directory"),
                RefactoringBundle.message("the.file.will.be.copied.to.this.directory"), myProject, descriptor,
                TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT);
        myTargetDirectoryField.getChildComponent().addDocumentListener(new DocumentAdapter() {
            @Override
            protected void textChanged(DocumentEvent e) {
                validateOKButton();
            }
        });
        formBuilder.addLabeledComponent(RefactoringBundle.message("copy.files.to.directory.label"),
                myTargetDirectoryField);

        String shortcutText = KeymapUtil.getFirstKeyboardShortcutText(
                ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION));
        formBuilder.addTooltip(RefactoringBundle.message("path.completion.shortcut", shortcutText));
    }

    final JPanel wrapper = new JPanel(new BorderLayout());
    wrapper.add(myOpenFilesInEditor, BorderLayout.EAST);
    formBuilder.addComponent(wrapper);
    return formBuilder.getPanel();
}

From source file:com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesDialog.java

License:Apache License

@Override
protected JComponent createNorthPanel() {
    myNameLabel = JBLabelDecorator.createJBLabelDecorator().setBold(true);

    myTargetDirectoryField = new TextFieldWithHistoryWithBrowseButton();
    final List<String> recentEntries = RecentsManager.getInstance(myProject).getRecentEntries(RECENT_KEYS);
    if (recentEntries != null) {
        myTargetDirectoryField.getChildComponent().setHistory(recentEntries);
    }/*w ww .  j av  a 2  s. c  om*/
    final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
    myTargetDirectoryField.addBrowseFolderListener(RefactoringBundle.message("select.target.directory"),
            RefactoringBundle.message("the.file.will.be.moved.to.this.directory"), myProject, descriptor,
            TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT);
    final JTextField textField = myTargetDirectoryField.getChildComponent().getTextEditor();
    FileChooserFactory.getInstance().installFileCompletion(textField, descriptor, true, getDisposable());
    textField.getDocument().addDocumentListener(new DocumentAdapter() {
        @Override
        protected void textChanged(DocumentEvent e) {
            validateOKButton();
        }
    });
    myTargetDirectoryField.setTextFieldPreferredWidth(CopyFilesOrDirectoriesDialog.MAX_PATH_LENGTH);
    Disposer.register(getDisposable(), myTargetDirectoryField);

    String shortcutText = KeymapUtil.getFirstKeyboardShortcutText(
            ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION));

    myCbSearchForReferences = new NonFocusableCheckBox(RefactoringBundle.message("search.for.references"));
    myCbSearchForReferences.setSelected(RefactoringSettings.getInstance().MOVE_SEARCH_FOR_REFERENCES_FOR_FILE);

    return FormBuilder.createFormBuilder().addComponent(myNameLabel)
            .addLabeledComponent(RefactoringBundle.message("move.files.to.directory.label"),
                    myTargetDirectoryField, UIUtil.LARGE_VGAP)
            .addTooltip(RefactoringBundle.message("path.completion.shortcut", shortcutText))
            .addComponentToRightColumn(myCbSearchForReferences, UIUtil.LARGE_VGAP).getPanel();
}

From source file:com.intellij.ui.TextFieldWithAutoCompletion.java

License:Apache License

@Override
protected EditorEx createEditor() {
    final EditorEx editor = super.createEditor();

    if (!myShowAutocompletionIsAvailableHint) {
        return editor;
    }/*from w w  w  .j a  v a  2 s  .  c om*/

    final String completionShortcutText = KeymapUtil.getFirstKeyboardShortcutText(
            ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION));
    if (StringUtil.isEmpty(completionShortcutText)) {
        return editor;
    }

    final Ref<Boolean> toShowHintRef = new Ref<Boolean>(true);
    editor.getDocument().addDocumentListener(new DocumentAdapter() {
        @Override
        public void documentChanged(DocumentEvent e) {
            toShowHintRef.set(false);
        }
    });

    editor.addFocusListener(new FocusChangeListener() {
        @Override
        public void focusGained(final Editor editor) {
            if (toShowHintRef.get() && getText().length() == 0) {
                ApplicationManager.getApplication().invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        HintManager.getInstance().showInformationHint(editor,
                                "Code completion available ( " + completionShortcutText + " )");
                    }
                });
            }
        }

        @Override
        public void focusLost(Editor editor) {
            // Do nothing
        }
    });
    return editor;
}