diff options
Diffstat (limited to 'plugins/groovy/src/org')
9 files changed, 70 insertions, 172 deletions
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/GroovyMarkerTypes.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/GroovyMarkerTypes.java index 3dc41bf408f5..38fac33ae3a3 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/GroovyMarkerTypes.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/GroovyMarkerTypes.java @@ -23,6 +23,7 @@ import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator; import com.intellij.codeInsight.navigation.ListBackgroundUpdaterTask; import com.intellij.ide.util.MethodCellRenderer; import com.intellij.ide.util.PsiElementListCellRenderer; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadActionProcessor; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; @@ -159,9 +160,14 @@ public class GroovyMarkerTypes { if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() { @Override public void run() { - for (GrAccessorMethod method : GroovyPropertyUtils.getFieldAccessors(field)) { - OverridingMethodsSearch.search(method, true).forEach(collectProcessor); - } + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + for (GrAccessorMethod method : GroovyPropertyUtils.getFieldAccessors(field)) { + OverridingMethodsSearch.search(method, true).forEach(collectProcessor); + } + } + }); } }, "Searching for overriding methods", true, field.getProject(), (JComponent)e.getComponent())) { return; @@ -272,17 +278,22 @@ public class GroovyMarkerTypes { if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() { @Override public void run() { - for (GrMethod m : PsiImplUtil.getMethodOrReflectedMethods(method)) { - OverridingMethodsSearch.search(m, true).forEach(new ReadActionProcessor<PsiMethod>() { - @Override - public boolean processInReadAction(PsiMethod psiMethod) { - if (psiMethod instanceof GrReflectedMethod) { - psiMethod = ((GrReflectedMethod)psiMethod).getBaseMethod(); - } - return collectProcessor.execute(psiMethod); + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + for (GrMethod m : PsiImplUtil.getMethodOrReflectedMethods(method)) { + OverridingMethodsSearch.search(m, true).forEach(new ReadActionProcessor<PsiMethod>() { + @Override + public boolean processInReadAction(PsiMethod psiMethod) { + if (psiMethod instanceof GrReflectedMethod) { + psiMethod = ((GrReflectedMethod)psiMethod).getBaseMethod(); + } + return collectProcessor.execute(psiMethod); + } + }); } - }); - } + } + }); } }, MarkerType.SEARCHING_FOR_OVERRIDING_METHODS, true, method.getProject(), (JComponent)e.getComponent())) { return; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyQuickFixFactoryImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyQuickFixFactoryImpl.java index 1be4df43ba72..8bb41490a3b4 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyQuickFixFactoryImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyQuickFixFactoryImpl.java @@ -26,6 +26,7 @@ import org.jetbrains.plugins.groovy.codeInspection.bugs.AddClassToExtendsFix; import org.jetbrains.plugins.groovy.codeInspection.bugs.AddMethodFix; import org.jetbrains.plugins.groovy.codeInspection.confusing.ReplaceWithImportFix; import org.jetbrains.plugins.groovy.codeInspection.local.RemoveUnusedGrParameterFix; +import org.jetbrains.plugins.groovy.codeInspection.naming.RenameFix; import org.jetbrains.plugins.groovy.dsl.InvestigateFix; import org.jetbrains.plugins.groovy.lang.GrCreateClassKind; import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement; @@ -101,7 +102,7 @@ public class GroovyQuickFixFactoryImpl extends GroovyQuickFixFactory { @Override public GroovyFix createRenameFix() { - return GroovyQuickFixFactory.getInstance().createRenameFix(); + return new RenameFix(); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/confusing/ClashingTraitMethodsInspection.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/confusing/ClashingTraitMethodsInspection.java index b5579e186613..60be41f0309b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/confusing/ClashingTraitMethodsInspection.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/confusing/ClashingTraitMethodsInspection.java @@ -1,168 +1,47 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.jetbrains.plugins.groovy.codeInspection.confusing; import com.intellij.codeInsight.generation.OverrideImplementUtil; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemDescriptor; -import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Condition; -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.psi.*; -import com.intellij.psi.util.PsiFormatUtil; -import com.intellij.psi.util.PsiFormatUtilBase; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; import org.jetbrains.annotations.NotNull; -import org.jetbrains.plugins.groovy.codeInspection.BaseInspection; -import org.jetbrains.plugins.groovy.codeInspection.BaseInspectionVisitor; import org.jetbrains.plugins.groovy.codeInspection.GroovyInspectionBundle; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrTraitMethod; -import org.jetbrains.plugins.groovy.lang.psi.util.GrTraitUtil; -import java.util.Collection; import java.util.List; /** * Created by Max Medvedev on 03/06/14 */ -public class ClashingTraitMethodsInspection extends BaseInspection { - private static final Logger LOG = Logger.getInstance(ClashingTraitMethodsInspection.class); +public class ClashingTraitMethodsInspection extends ClashingTraitMethodsInspectionBase { @NotNull @Override - protected BaseInspectionVisitor buildVisitor() { - return new BaseInspectionVisitor() { - @Override - public void visitTypeDefinition(GrTypeDefinition typeDefinition) { - super.visitTypeDefinition(typeDefinition); - - List<PsiClass> superTraits = collectImplementedTraits(typeDefinition); - - if (superTraits.size() < 2) return; - - List<ClashingMethod> clashingMethods = collectClassingMethods(typeDefinition); - - for (ClashingMethod clashing : clashingMethods) { - registerError(typeDefinition.getNameIdentifierGroovy(), buildWarning(clashing), new LocalQuickFix[]{new MyQuickFix()}, ProblemHighlightType.GENERIC_ERROR_OR_WARNING); - } - } - - @NotNull - private String buildWarning(@NotNull ClashingMethod entry) { - return "Traits " + buildTraitString(entry) + " contain clashing methods with signature " + buildSignatureString(entry); - } - - @NotNull - private String buildSignatureString(@NotNull ClashingMethod entry) { - HierarchicalMethodSignature signature = entry.getSignature(); - return PsiFormatUtil.formatMethod(signature.getMethod(), signature.getSubstitutor(), - PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS, - PsiFormatUtilBase.SHOW_TYPE); - } - - @NotNull - private String buildTraitString(@NotNull ClashingMethod entry) { - return StringUtil.join(entry.getSuperTraits(), new Function<GrTypeDefinition, String>() { - public String fun(GrTypeDefinition tr) { - return tr.getName(); - } - }, ", "); - } - }; - } - - @NotNull - private static List<ClashingMethod> collectClassingMethods(@NotNull GrTypeDefinition typeDefinition) { - Collection<HierarchicalMethodSignature> visibleSignatures = typeDefinition.getVisibleSignatures(); - - List<ClashingMethod> clashingMethods = ContainerUtil.newArrayList(); - for (HierarchicalMethodSignature signature : visibleSignatures) { - PsiMethod method = signature.getMethod(); - if (method instanceof GrTraitMethod && method.getContainingClass() == typeDefinition) { - List<HierarchicalMethodSignature> superSignatures = signature.getSuperSignatures(); - if (superSignatures.size() > 1) { - List<GrTypeDefinition> traits = ContainerUtil.newArrayList(); - for (HierarchicalMethodSignature superSignature : superSignatures) { - PsiMethod superMethod = superSignature.getMethod(); - PsiClass superClass = superMethod.getContainingClass(); - if (GrTraitUtil.isTrait(superClass) && - !superMethod.getModifierList().hasExplicitModifier(PsiModifier.ABSTRACT)) { - traits.add((GrTypeDefinition)superClass); - } - } - - if (traits.size() > 1) { - clashingMethods.add(new ClashingMethod(signature, traits)); - } - } - } - } - - return clashingMethods; - } - - @NotNull - private static List<PsiClass> collectImplementedTraits(@NotNull GrTypeDefinition typeDefinition) { - return ContainerUtil.findAll(typeDefinition.getSupers(), new Condition<PsiClass>() { - @Override - public boolean value(PsiClass aClass) { - return GrTraitUtil.isTrait(aClass); - } - }); - } - - private static class ClashingMethod { - private final HierarchicalMethodSignature mySignature; - private final List<GrTypeDefinition> mySuperTraits; - - public ClashingMethod(@NotNull HierarchicalMethodSignature signature, @NotNull List<GrTypeDefinition> superTraits) { - mySignature = signature; - mySuperTraits = superTraits; - } - - @NotNull - public HierarchicalMethodSignature getSignature() { - return mySignature; - } - - @NotNull - public List<GrTypeDefinition> getSuperTraits() { - return mySuperTraits; - } + protected LocalQuickFix getFix(){ + return new MyQuickFix(); } private static class MyQuickFix implements LocalQuickFix { - private static final int MAX_SIGNATURE_LENGTH = 50; - - private static String buildSignature(HierarchicalMethodSignature signature, int maxLength) { - StringBuilder result = new StringBuilder(); - result.append(signature.getName()); - - PsiType[] params = signature.getParameterTypes(); - - if (params.length == 0) { - result.append("()"); - return result.toString(); - } - - result.append("("); - - for (PsiType param : params) { - if (result.length() >= maxLength - "...)".length()) { - result.append("...)"); - return result.toString(); - } - result.append(param.getPresentableText()); - result.append(", "); - } - result.replace(result.length() - ", ".length(), result.length(), ")"); - return result.toString(); - } - @NotNull @Override public String getName() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeStyle/GroovyLanguageCodeStyleSettingsProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeStyle/GroovyLanguageCodeStyleSettingsProvider.java index 1e28d0c8935e..4ce07a3d3fff 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeStyle/GroovyLanguageCodeStyleSettingsProvider.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeStyle/GroovyLanguageCodeStyleSettingsProvider.java @@ -49,6 +49,7 @@ public class GroovyLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSe @NotNull SettingsType settingsType) { if (settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS) { consumer.showStandardOptions( + "RIGHT_MARGIN", "KEEP_LINE_BREAKS", "KEEP_FIRST_COLUMN_COMMENT", "KEEP_CONTROL_STATEMENT_IN_ONE_LINE", diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonDebuggerRunner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonDebuggerRunner.java index 898f429659f3..2d424b2f58d9 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonDebuggerRunner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonDebuggerRunner.java @@ -22,7 +22,6 @@ import com.intellij.execution.configurations.*; import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.ui.RunContentDescriptor; -import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; /** @@ -42,10 +41,7 @@ public class GriffonDebuggerRunner extends GenericDebuggerRunner { @Override - protected RunContentDescriptor createContentDescriptor(Project project, - RunProfileState state, - RunContentDescriptor contentToReuse, - ExecutionEnvironment env) throws ExecutionException { + protected RunContentDescriptor createContentDescriptor(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException { final JavaCommandLine javaCommandLine = (JavaCommandLine)state; final JavaParameters params = javaCommandLine.getJavaParameters(); @@ -68,11 +64,8 @@ public class GriffonDebuggerRunner extends GenericDebuggerRunner { } if (address == null) { - return super.createContentDescriptor(project, state, contentToReuse, env); + return super.createContentDescriptor(state, environment); } - - RemoteConnection connection = new RemoteConnection(true, "127.0.0.1", address, false); - return attachVirtualMachine(project, state, contentToReuse, env, connection, true); + return attachVirtualMachine(state, environment, new RemoteConnection(true, "127.0.0.1", address, false), true); } - -} +}
\ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java index 4b5459ff432e..55ab68f7f822 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java @@ -415,9 +415,13 @@ public class GroovySmartCompletionContributor extends CompletionContributor { } } - final LookupItem item = PsiTypeLookupItem.createLookupItem(GenericsUtil.eliminateWildcards(type), place, isDiamond, ChooseTypeExpression.IMPORT_FIXER); - if (item.getObject() instanceof PsiClass) { + final PsiTypeLookupItem item = PsiTypeLookupItem.createLookupItem(GenericsUtil.eliminateWildcards(type), place, isDiamond, ChooseTypeExpression.IMPORT_FIXER); + Object object = item.getObject(); + if (object instanceof PsiClass) { JavaCompletionUtil.setShowFQN(item); + if (((PsiClass)object).hasModifierProperty(PsiModifier.ABSTRACT)) { + item.setIndicateAnonymous(true); + } } item.setInsertHandler(new AfterNewClassInsertHandler((PsiClassType)type, true)); return item; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcProjectViewPane.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcProjectViewPane.java index 32db531b212e..f32d77131d82 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcProjectViewPane.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcProjectViewPane.java @@ -352,6 +352,7 @@ public class MvcProjectViewPane extends AbstractProjectViewPSIPane implements Id } } + @NotNull @Override public PsiDirectory[] getDirectories() { return getSelectedDirectories(); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcToolWindowDescriptor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcToolWindowDescriptor.java index 945bb9c8f24b..35171ccda212 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcToolWindowDescriptor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/projectView/MvcToolWindowDescriptor.java @@ -51,7 +51,7 @@ public abstract class MvcToolWindowDescriptor implements ToolWindowFactory, Cond } @Override - public void createToolWindowContent(Project project, ToolWindow toolWindow) { + public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) { toolWindow.setAvailable(true, null); toolWindow.setToHideOnEmptyContent(true); toolWindow.setTitle(myFramework.getDisplayName()); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/memberPullUp/GrPullUpHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/memberPullUp/GrPullUpHandler.java index 83d2a4088645..19480e0d80e8 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/memberPullUp/GrPullUpHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/memberPullUp/GrPullUpHandler.java @@ -17,6 +17,7 @@ package org.jetbrains.plugins.groovy.refactoring.memberPullUp; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; @@ -170,9 +171,16 @@ public class GrPullUpHandler implements RefactoringActionHandler, GrPullUpDialog if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() { @Override public void run() { - final PsiDirectory targetDirectory = superClass.getContainingFile().getContainingDirectory(); - final PsiPackage targetPackage = targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; - conflicts.putAllValues(GrPullUpConflictsUtil.checkConflicts(infos, mySubclass, superClass, targetPackage, targetDirectory, dialog.getContainmentVerifier())); + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + final PsiDirectory targetDirectory = superClass.getContainingFile().getContainingDirectory(); + final PsiPackage targetPackage = + targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; + conflicts.putAllValues(GrPullUpConflictsUtil.checkConflicts(infos, mySubclass, superClass, targetPackage, targetDirectory, + dialog.getContainmentVerifier())); + } + }); } }, RefactoringBundle.message("detecting.possible.conflicts"), true, myProject)) { return false; |