From f38e6d96d7a586d118c12167769b43c8575bd615 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Wed, 29 Jul 2009 19:56:56 +0400 Subject: [PATCH] remove ending dots in package completion --- .../completion/JavaCompletionContributor.java | 14 +++++++++- .../codeInsight/completion/JavaCompletionUtil.java | 30 ++++++++++++++++++++-- .../MoveClassesOrPackagesDialog.java | 14 +++++++--- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 3811b98490..2af44c172c 100644 --- a/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -153,7 +153,7 @@ public class JavaCompletionContributor extends CompletionContributor { if (parameters.getCompletionType() != CompletionType.BASIC) return; if (parameters.getPosition().getContainingFile().getLanguage() == StdLanguages.JAVA) { - final PsiFile file = parameters.getOriginalFile(); + final PsiFile file = parameters.getOriginalFile(); final int startOffset = parameters.getOffset(); final PsiElement lastElement = file.findElementAt(startOffset - 1); final PsiElement insertedElement = parameters.getPosition(); @@ -192,6 +192,7 @@ public class JavaCompletionContributor extends CompletionContributor { if (isSwitchLabel) { result.addElement(TailTypeDecorator.createDecorator(element, TailType.createSimpleTailType(';'))); } else { + setTailTypeByFile(element, file); result.addElement(element); } } @@ -244,6 +245,17 @@ public class JavaCompletionContributor extends CompletionContributor { } } + private static void setTailTypeByFile(LookupElement element, PsiFile file) { + final TailType tailType = JavaCompletionUtil.getDefaultTailTypeForFile(file); + if (tailType != null) { + final LookupItem lookupItem = element.as(LookupItem.class); + if (lookupItem != null) { + lookupItem.setTailType(tailType); + } + } + } + + private static void completeAnnotationAttributeName(CompletionResultSet result, PsiFile file, PsiElement insertedElement, JavaAwareCompletionData completionData, boolean checkAccess) { PsiNameValuePair pair = PsiTreeUtil.getParentOfType(insertedElement, PsiNameValuePair.class); diff --git a/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 3f1f090e9a..d9e0f8b16a 100644 --- a/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/codeInsight/impl/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -3,9 +3,10 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.ExpectedTypeInfo; import com.intellij.codeInsight.ExpectedTypeInfoImpl; +import com.intellij.codeInsight.TailType; import com.intellij.codeInsight.completion.impl.CamelHumpMatcher; -import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor; import com.intellij.codeInsight.completion.scope.CompletionElement; +import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor; import com.intellij.codeInsight.generation.OverrideImplementUtil; import com.intellij.codeInsight.lookup.*; import com.intellij.featureStatistics.FeatureUsageTracker; @@ -16,8 +17,8 @@ import com.intellij.openapi.util.text.StringUtil; import static com.intellij.patterns.PlatformPatterns.psiElement; import com.intellij.patterns.PsiElementPattern; import com.intellij.psi.*; -import com.intellij.psi.filters.ElementFilter; import com.intellij.psi.codeStyle.*; +import com.intellij.psi.filters.ElementFilter; import com.intellij.psi.html.HtmlTag; import com.intellij.psi.impl.source.PsiImmediateClassType; import com.intellij.psi.infos.CandidateInfo; @@ -895,4 +896,29 @@ public class JavaCompletionUtil { set.add(ret); } + + public static final Key COMPLETION_TAIL_TYPE = Key.create("COMPLETION_TAIL_TYPE"); + + /** + * Use this method to set avoid unwanted tail symbols while using completion inside + * light-editors like EditorComboBox or EditorTextField. + * + * @author Konstantin Bulenkov + * + * @param file document holder + * @param type new TailType + * + * @see com.intellij.codeInsight.TailType + * @see com.intellij.codeInsight.completion.JavaCompletionContributor#setTailTypeByFile(com.intellij.codeInsight.lookup.LookupElement, com.intellij.psi.PsiFile) + */ + public static void setDefaultTailTypeForFile(PsiFile file, TailType type) { + if (file != null && type != null) { + file.putUserData(COMPLETION_TAIL_TYPE, type); + } + } + + @Nullable + public static TailType getDefaultTailTypeForFile(PsiFile file) { + return file == null ? null : file.getUserData(COMPLETION_TAIL_TYPE); + } } diff --git a/refactoring/impl/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java b/refactoring/impl/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java index f26ee559cb..940523dc62 100644 --- a/refactoring/impl/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java +++ b/refactoring/impl/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java @@ -1,8 +1,12 @@ package com.intellij.refactoring.move.moveClassesOrPackages; +import com.intellij.codeInsight.TailType; +import com.intellij.codeInsight.completion.JavaCompletionUtil; +import com.intellij.lang.Language; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.help.HelpManager; @@ -28,10 +32,9 @@ import com.intellij.ui.ReferenceEditorComboWithBrowseButton; import com.intellij.ui.ReferenceEditorWithBrowseButton; import com.intellij.usageView.UsageViewUtil; import com.intellij.util.IncorrectOperationException; -import com.intellij.lang.Language; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; @@ -165,12 +168,15 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { private ReferenceEditorComboWithBrowseButton createPackageChooser() { final ReferenceEditorComboWithBrowseButton packageChooser = new PackageNameReferenceEditorCombo("", myProject, RECENTS_KEY, RefactoringBundle.message("choose.destination.package")); - packageChooser.getChildComponent().getDocument().addDocumentListener(new DocumentAdapter() { + final Document document = packageChooser.getChildComponent().getDocument(); + final PsiFile file = PsiDocumentManager.getInstance(getProject()).getPsiFile(document); + JavaCompletionUtil.setDefaultTailTypeForFile(file, TailType.NONE); + document.addDocumentListener(new DocumentAdapter() { public void documentChanged(DocumentEvent e) { validateButtons(); } }); - + return packageChooser; } -- 2.11.4.GIT