From 46d65be8489868372981606d4d9f78b510ae42e8 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 7 Oct 2010 18:03:31 +0400 Subject: [PATCH 01/29] synchronization --- .../openapi/util/ShutDownTracker.java | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/platform/util/src/com/intellij/openapi/util/ShutDownTracker.java b/platform/util/src/com/intellij/openapi/util/ShutDownTracker.java index 35cacacd5065..30d4c0f9d2cd 100644 --- a/platform/util/src/com/intellij/openapi/util/ShutDownTracker.java +++ b/platform/util/src/com/intellij/openapi/util/ShutDownTracker.java @@ -16,6 +16,7 @@ package com.intellij.openapi.util; import com.intellij.openapi.diagnostic.Logger; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedList; @@ -67,9 +68,9 @@ public class ShutDownTracker implements Runnable { threads = getStopperThreads(); } - while (!myShutdownTasks.isEmpty()) { + + for (Runnable task = removeLast(myShutdownTasks); task != null; task = removeLast(myShutdownTasks)) { // task can change myShutdownTasks - final Runnable task = myShutdownTasks.removeLast(); try { task.run(); } @@ -78,14 +79,12 @@ public class ShutDownTracker implements Runnable { } } - if (!myShutdownThreads.isEmpty()) { - for (Thread thread = myShutdownThreads.removeLast(); thread != null; thread = myShutdownThreads.removeLast()) { - thread.start(); - try { - thread.join(); - } - catch (InterruptedException ignored) { - } + for (Thread thread = removeLast(myShutdownThreads); thread != null; thread = removeLast(myShutdownThreads)) { + thread.start(); + try { + thread.join(); + } + catch (InterruptedException ignored) { } } } @@ -106,19 +105,28 @@ public class ShutDownTracker implements Runnable { myThreads.remove(thread); } - public void registerShutdownThread(final Thread thread) { + public synchronized void registerShutdownThread(final Thread thread) { myShutdownThreads.addLast(thread); } - public void registerShutdownThread(int index, final Thread thread) { + public synchronized void registerShutdownThread(int index, final Thread thread) { myShutdownThreads.add(index, thread); } - public void registerShutdownTask(Runnable task) { + public synchronized void registerShutdownTask(Runnable task) { myShutdownTasks.addLast(task); } - public void unregisterShutdownTask(Runnable task) { + public synchronized void unregisterShutdownTask(Runnable task) { myShutdownTasks.remove(task); } + + @Nullable + private synchronized T removeLast(LinkedList list) { + return list.isEmpty()? null : list.removeLast(); + } + + private synchronized boolean isEmpty(LinkedList list) { + return list.isEmpty(); + } } From 421dcc6aa4c28c0160468ea570afac4fe1df9cbc Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 7 Oct 2010 19:14:12 +0400 Subject: [PATCH 02/29] fir "roots changed" on src root addition/removal --- .../openapi/roots/impl/ProjectRootManagerImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index 4c07c0d5efea..091e451f5dd1 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -628,7 +628,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj } private void addRootsToWatch() { - final Set rootPaths = getAllRoots(); + final Set rootPaths = getAllRoots(false); if (rootPaths == null) return; final Set newRootsToWatch = LocalFileSystem.getInstance().addRootsToWatch(rootPaths, true); @@ -639,7 +639,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj } @Nullable - private Set getAllRoots() { + private Set getAllRoots(boolean includeSourceRoots) { if (myProject.isDefault()) return null; final Set rootPaths = new HashSet(); @@ -648,6 +648,10 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj final ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); final String[] contentRootUrls = moduleRootManager.getContentRootUrls(); rootPaths.addAll(getRootsToTrack(contentRootUrls)); + if (includeSourceRoots) { + final String[] sourceRootUrls = moduleRootManager.getSourceRootUrls(); + rootPaths.addAll(getRootsToTrack(sourceRootUrls)); + } rootPaths.add(module.getModuleFilePath()); } @@ -775,7 +779,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj } private boolean affectsRoots(VirtualFilePointer[] pointers) { - Set roots = getAllRoots(); + Set roots = getAllRoots(true); if (roots == null) return false; for (VirtualFilePointer pointer : pointers) { From 6dcca0ace312eaf8db1e9559e69274ec21b8b483 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 7 Oct 2010 17:43:06 +0200 Subject: [PATCH 03/29] IDEA-21228 (Validate "expected" parameter of @Test: checked exception should be thrown somewhere in test method body) --- .../siyeh/InspectionGadgetsBundle.properties | 2 + .../com/siyeh/ig/InspectionGadgetsPlugin.java | 2 + ...xpectedExceptionNeverThrownInspection.java | 104 ++++++++++++++++++ .../com/siyeh/ig/psiutils/ExceptionUtils.java | 20 ++-- .../ExpectedExceptionNeverThrown.html | 7 ++ 5 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java create mode 100644 plugins/InspectionGadgets/src/inspectionDescriptions/ExpectedExceptionNeverThrown.html diff --git a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties index 89f563978a6a..0e300c27036f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties @@ -1780,3 +1780,5 @@ method.name.pattern=Method name pattern query.column.name=Query name starts with update.column.name=Update name starts with assert.keyword.is.considered.an.assertion=assert keyword is considered an assertion +expected.exception.never.thrown.display.name=Expected exception never thrown in test method body +expected.exception.never.thrown.problem.descriptor=Expected #ref never thrown in body of ''{0}()'' diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java b/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java index 3c56e8439c0f..788fe77b176c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java @@ -1046,6 +1046,7 @@ public class InspectionGadgetsPlugin implements ApplicationComponent, m_inspectionClasses.add(AssertsWithoutMessagesInspection.class); m_inspectionClasses.add(BeforeClassOrAfterClassIsPublicStaticVoidNoArgInspection.class); m_inspectionClasses.add(BeforeOrAfterIsPublicVoidNoArgInspection.class); + m_inspectionClasses.add(ExpectedExceptionNeverThrownInspection.class); m_inspectionClasses.add(ParameterizedParametersStaticCollectionInspection.class); m_inspectionClasses.add(ConstantJUnitAssertArgumentInspection.class); m_inspectionClasses.add(JUnit4AnnotatedMethodInJUnit3TestCaseInspection.class); @@ -1070,6 +1071,7 @@ public class InspectionGadgetsPlugin implements ApplicationComponent, m_inspectionClasses.add(UnconstructableTestCaseInspection.class); } + @Override public void disposeComponent() { } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java new file mode 100644 index 000000000000..1113db1bbb4e --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java @@ -0,0 +1,104 @@ +/* + * Copyright 2010 Bas Leijdekkers + * + * 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 com.siyeh.ig.junit; + +import com.intellij.codeInsight.AnnotationUtil; +import com.intellij.psi.*; +import com.siyeh.InspectionGadgetsBundle; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.ClassUtils; +import com.siyeh.ig.psiutils.ExceptionUtils; +import com.siyeh.ig.psiutils.TypeUtils; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public class ExpectedExceptionNeverThrownInspection + extends BaseInspection { + @Nls + @NotNull + @Override + public String getDisplayName() { + return InspectionGadgetsBundle.message( + "expected.exception.never.thrown.display.name"); + } + + @NotNull + @Override + protected String buildErrorString(Object... infos) { + final PsiMethod method = (PsiMethod) infos[0]; + return InspectionGadgetsBundle.message( + "expected.exception.never.thrown.problem.descriptor", + method.getName()); + } + + @Override + public BaseInspectionVisitor buildVisitor() { + return new ExpectedExceptionNeverThrownVisitor(); + } + + private static class ExpectedExceptionNeverThrownVisitor + extends BaseInspectionVisitor { + + @Override + public void visitMethod(PsiMethod method) { + super.visitMethod(method); + final PsiAnnotation annotation = + AnnotationUtil.findAnnotation(method, "org.junit.Test"); + if (annotation == null) { + return; + } + final PsiAnnotationParameterList parameterList = + annotation.getParameterList(); + final PsiNameValuePair[] attributes = parameterList.getAttributes(); + PsiAnnotationMemberValue value = null; + for (PsiNameValuePair attribute : attributes) { + if ("expected".equals(attribute.getName())) { + value = attribute.getValue(); + break; + } + } + if (!(value instanceof PsiClassObjectAccessExpression)) { + return; + } + final PsiCodeBlock body = method.getBody(); + if (body == null) { + return; + } + final PsiClassObjectAccessExpression classObjectAccessExpression = + (PsiClassObjectAccessExpression) value; + final PsiTypeElement operand = + classObjectAccessExpression.getOperand(); + final PsiType type = operand.getType(); + if (!(type instanceof PsiClassType)) { + return; + } + final PsiClassType classType = (PsiClassType) type; + final PsiClass aClass = classType.resolve(); + if (ClassUtils.isSubclass(aClass, "java.lang.RuntimeException")) { + return; + } + final Set exceptionsThrown = + ExceptionUtils.calculateExceptionsThrown(body); + if (exceptionsThrown.contains(type)) { + return; + } + registerError(operand, method); + } + } +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ExceptionUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ExceptionUtils.java index abcc3c7c2419..b74a3e94c4c0 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ExceptionUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ExceptionUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package com.siyeh.ig.psiutils; +import com.intellij.openapi.project.Project; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -38,9 +39,9 @@ public class ExceptionUtils{ } @NotNull public static Set calculateExceptionsThrown( - @NotNull PsiElement statement){ + @NotNull PsiElement element){ final ExceptionsThrownVisitor visitor = new ExceptionsThrownVisitor(); - statement.accept(visitor); + element.accept(visitor); return visitor.getExceptionsThrown(); } @@ -195,8 +196,9 @@ public class ExceptionUtils{ return; } final PsiReferenceList throwsList = method.getThrowsList(); - final PsiManager psiManager = expression.getManager(); - final PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final Project project = expression.getProject(); + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); + final PsiElementFactory factory = psiFacade.getElementFactory(); final PsiJavaCodeReferenceElement[] list = throwsList.getReferenceElements(); for(final PsiJavaCodeReferenceElement referenceElement : list){ @@ -210,15 +212,17 @@ public class ExceptionUtils{ } } - @Override public void visitNewExpression(@NotNull PsiNewExpression expression){ + @Override public void visitNewExpression( + @NotNull PsiNewExpression expression){ super.visitNewExpression(expression); final PsiMethod method = expression.resolveMethod(); if(method == null){ return; } final PsiReferenceList throwsList = method.getThrowsList(); - final PsiManager psiManager = expression.getManager(); - final PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final Project project = expression.getProject(); + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); + final PsiElementFactory factory = psiFacade.getElementFactory(); final PsiJavaCodeReferenceElement[] list = throwsList.getReferenceElements(); for(final PsiJavaCodeReferenceElement referenceElement : list){ diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/ExpectedExceptionNeverThrown.html b/plugins/InspectionGadgets/src/inspectionDescriptions/ExpectedExceptionNeverThrown.html new file mode 100644 index 000000000000..a4f3ff5f2d76 --- /dev/null +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/ExpectedExceptionNeverThrown.html @@ -0,0 +1,7 @@ + +
+ +This inspection reports checked exceptions expected by a JUnit 4 test method, +which are never thrown inside the method body. +
Powered by InspectionGadgets
+ \ No newline at end of file From a22fbe69d18a8edd8b9d2bf20cf2a4fe5916496c Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Thu, 7 Oct 2010 18:49:03 +0400 Subject: [PATCH 04/29] hack away one more PIEAE in completion --- .../completion/JavaCompletionContributor.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 7c31781da094..60a1d906305c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -31,6 +31,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.editor.highlighter.HighlighterIterator; +import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Computable; @@ -177,7 +178,16 @@ public class JavaCompletionContributor extends CompletionContributor { final PsiElement lastElement = file.findElementAt(offset - 1); final JavaAwareCompletionData completionData = ApplicationManager.getApplication().runReadAction(new Computable() { public JavaAwareCompletionData compute() { - return getCompletionDataByElementInner(lastElement); + if (lastElement != null) { + if (!lastElement.isValid()) { + throw new ProcessCanceledException(); + } + if (PsiUtil.isLanguageLevel5OrHigher(lastElement)) { + return ourJava15CompletionData; + } + } + + return ourJavaCompletionData; } }); @@ -351,10 +361,6 @@ public class JavaCompletionContributor extends CompletionContributor { } } - private static JavaAwareCompletionData getCompletionDataByElementInner(PsiElement element) { - return element != null && PsiUtil.isLanguageLevel5OrHigher(element) ? ourJava15CompletionData : ourJavaCompletionData; - } - public String advertise(@NotNull final CompletionParameters parameters) { if (!(parameters.getOriginalFile() instanceof PsiJavaFile)) return null; From e5da28236e8feddc7e67fc7b5e0213efb300c80f Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Thu, 7 Oct 2010 20:11:28 +0400 Subject: [PATCH 05/29] bring back the original file & offset calculation in case an injected file exists only afte dummy identifier usage; extracting some methods --- .../completion/CodeCompletionHandlerBase.java | 73 ++++++++++--------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index 823a501692dd..c3d13ac3a5ab 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -188,31 +188,32 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { final int offset2, final CompletionContext context, final FileCopyPatcher patcher, final Editor editor, final int invocationCount) { - final Ref> ref = Ref.create(null); - CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { - @Override - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - ref.set(insertDummyIdentifier(context, patcher, context.file, context.editor)); - } - }); - } - }); - - final PsiElement insertedElement = ref.get().getSecond(); - final CompletionContext newContext = ref.get().getFirst(); - insertedElement.putUserData(CompletionContext.COMPLETION_CONTEXT_KEY, newContext); - - PsiFile originalFile = context.file; - - final CompletionParameters parameters = new CompletionParameters(insertedElement, originalFile, myCompletionType, newContext.getStartOffset(), invocationCount); + final CompletionParameters parameters = createCompletionParameters(context, patcher, invocationCount); final Semaphore freezeSemaphore = new Semaphore(); freezeSemaphore.down(); final CompletionProgressIndicator indicator = new CompletionProgressIndicator(editor, parameters, this, freezeSemaphore, context.getOffsetMap()); + final AtomicReference data = startCompletionThread(parameters, indicator); + + if (!invokedExplicitly) { + indicator.notifyBackgrounded(); + return; + } + + if (freezeSemaphore.waitFor(2000)) { + final LookupElement[] allItems = data.get(); + if (allItems != null) { // the completion is really finished, now we may auto-insert or show lookup + completionFinished(offset1, offset2, indicator, allItems); + return; + } + } + + indicator.notifyBackgrounded(); + indicator.showLookup(); + } + + private AtomicReference startCompletionThread(final CompletionParameters parameters, final CompletionProgressIndicator indicator) { final AtomicReference data = new AtomicReference(null); final Semaphore startSemaphore = new Semaphore(); startSemaphore.down(); @@ -245,22 +246,28 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { } startSemaphore.waitFor(); + return data; + } - if (!invokedExplicitly) { - indicator.notifyBackgrounded(); - return; - } - - if (freezeSemaphore.waitFor(2000)) { - final LookupElement[] allItems = data.get(); - if (allItems != null) { // the completion is really finished, now we may auto-insert or show lookup - completionFinished(offset1, offset2, indicator, allItems); - return; + private CompletionParameters createCompletionParameters(final CompletionContext context, final FileCopyPatcher patcher, int invocationCount) { + final Ref> ref = Ref.create(null); + CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + ref.set(insertDummyIdentifier(context, patcher, context.file, context.editor)); + } + }); } - } + }); - indicator.notifyBackgrounded(); - indicator.showLookup(); + final PsiElement insertedElement = ref.get().getSecond(); + final CompletionContext newContext = ref.get().getFirst(); + insertedElement.putUserData(CompletionContext.COMPLETION_CONTEXT_KEY, newContext); + + return new CompletionParameters(insertedElement, newContext.file, myCompletionType, newContext.getStartOffset(), invocationCount); } private AutoCompletionDecision shouldAutoComplete( From 62b3f7dcd13d3b281bd3290597887905dc1ac2b3 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 7 Oct 2010 20:19:17 +0400 Subject: [PATCH 06/29] django settings chooser scope fixed (PY-2060) --- lib/microba.jar | Bin 134366 -> 119594 bytes .../FileChooserDescriptorFactory.java | 19 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/microba.jar b/lib/microba.jar index b66fbf15c15a46356aecc153b8638ae1dcc54268..afcba284da77bdc8dd8d921b4d5a884cfa497da0 100644 GIT binary patch delta 73730 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 z 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 delta 87763 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 NA+V2h3s^}p007SHFMR+2 diff --git a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptorFactory.java b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptorFactory.java index 048bc1aeab55..91500c2713b2 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptorFactory.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptorFactory.java @@ -15,10 +15,13 @@ */ package com.intellij.openapi.fileChooser; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.UIBundle; public class FileChooserDescriptorFactory { - private FileChooserDescriptorFactory() {} + private FileChooserDescriptorFactory() { + } public static FileChooserDescriptor createAllButJarContentsDescriptor() { return new FileChooserDescriptor(true, true, true, true, false, true); @@ -59,4 +62,18 @@ public class FileChooserDescriptorFactory { fileChooserDescriptor.setTitle(UIBundle.message("file.chooser.select.object.title", aSearchedObjectName)); return fileChooserDescriptor; } + + public static FileChooserDescriptor createSingleFileDescriptor(final FileType fileType) { + return new FileChooserDescriptor(true, false, false, false, false, false) { + @Override + public boolean isFileVisible(final VirtualFile file, final boolean showHiddenFiles) { + return file.isDirectory() || file.getFileType() == fileType; + } + + @Override + public boolean isFileSelectable(final VirtualFile file) { + return super.isFileSelectable(file) && file.getFileType() == fileType; + } + }; + } } From 54323468868226e924dd0fba9fdb9c7dfd738255 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 7 Oct 2010 20:19:14 +0400 Subject: [PATCH 07/29] fix exceptions from loader --- .../src/org/jetbrains/plugins/groovy/gant/AntTasksProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/AntTasksProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/AntTasksProvider.java index 5efefbf27e51..1cbfccdb47a7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/AntTasksProvider.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/AntTasksProvider.java @@ -111,7 +111,7 @@ public class AntTasksProvider { for (VirtualFile jar : jars) { urls.add(VfsUtil.convertToURL(PathUtil.getLocalFile(jar).getUrl())); } - final ClassLoader loader = new UrlClassLoader(urls, null); + final ClassLoader loader = new UrlClassLoader(urls, null, false, false, true); final ReflectedProject antProject = ReflectedProject.getProject(loader); final Map result = new HashMap(); From dda024fdeed9745782d45c290491cde0d1d18b61 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Thu, 7 Oct 2010 19:59:34 +0400 Subject: [PATCH 08/29] undo: restore document timestamp after redo (IDEA-38358) --- .../openapi/command/impl/EditorChangeAction.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorChangeAction.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorChangeAction.java index ccd4acd00315..af77f67c54cd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorChangeAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorChangeAction.java @@ -32,7 +32,8 @@ class EditorChangeAction implements UndoableAction { private final int myOffset; private final CharSequence myOldString; private final CharSequence myNewString; - private final long myTimeStamp; + private final long myOldTimeStamp; + private final long myNewTimeStamp; private final boolean myBulkUpdate; public EditorChangeAction(DocumentEx document, @@ -45,18 +46,21 @@ class EditorChangeAction implements UndoableAction { myOffset = offset; myOldString = oldString == null ? "" : oldString; myNewString = newString == null ? "" : newString; - myTimeStamp = oldTimeStamp; + myOldTimeStamp = oldTimeStamp; + myNewTimeStamp = document.getModificationStamp(); + myBulkUpdate = document.isInBulkUpdate(); } public void undo() { exchangeStrings(myNewString, myOldString); - getDocument().setModificationStamp(myTimeStamp); + getDocument().setModificationStamp(myOldTimeStamp); refreshFileStatus(); } public void redo() { exchangeStrings(myOldString, myNewString); + getDocument().setModificationStamp(myNewTimeStamp); refreshFileStatus(); } From 74a76d30650acffd9e35cc5a2d0c25f1a3c8dec2 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Thu, 7 Oct 2010 20:38:03 +0400 Subject: [PATCH 09/29] undo tests fixed --- .../src/com/intellij/openapi/command/impl/UndoManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java index 5e7968265635..06771a8631d5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java @@ -286,7 +286,7 @@ public class UndoManagerImpl extends UndoManager implements ProjectComponent, Ap public void invalidateActionsFor(DocumentReference ref) { ApplicationManager.getApplication().assertIsDispatchThread(); - LOG.assertTrue(!isInsideCommand()); + //LOG.assertTrue(!isInsideCommand()); myUndoStacksHolder.invalidateActionsFor(ref); myRedoStacksHolder.invalidateActionsFor(ref); } From 1e2e01c0b1979ef07e00180986e313d74404509c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 7 Oct 2010 18:46:03 +0400 Subject: [PATCH 10/29] hide "New XML Descriptor" group from the menu if there's nothing to show in it --- .../ide/actions/{OtherGroup.java => NonEmptyActionGroup.java} | 4 ++-- platform/platform-resources/src/META-INF/XmlActions.xml | 2 +- platform/platform-resources/src/idea/PlatformActions.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename platform/platform-impl/src/com/intellij/ide/actions/{OtherGroup.java => NonEmptyActionGroup.java} (89%) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/OtherGroup.java b/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java similarity index 89% rename from platform/platform-impl/src/com/intellij/ide/actions/OtherGroup.java rename to platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java index 79307c73fadd..57871d556d71 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/OtherGroup.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java @@ -20,8 +20,8 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.project.DumbAware; -public class OtherGroup extends DefaultActionGroup implements DumbAware { - public OtherGroup() { +public class NonEmptyActionGroup extends DefaultActionGroup implements DumbAware { + public NonEmptyActionGroup() { super(); } diff --git a/platform/platform-resources/src/META-INF/XmlActions.xml b/platform/platform-resources/src/META-INF/XmlActions.xml index b5250f3aef98..bec7f4d3634e 100644 --- a/platform/platform-resources/src/META-INF/XmlActions.xml +++ b/platform/platform-resources/src/META-INF/XmlActions.xml @@ -62,7 +62,7 @@ - + diff --git a/platform/platform-resources/src/idea/PlatformActions.xml b/platform/platform-resources/src/idea/PlatformActions.xml index 3c3ccb37a04d..8d42a53ac2d3 100644 --- a/platform/platform-resources/src/idea/PlatformActions.xml +++ b/platform/platform-resources/src/idea/PlatformActions.xml @@ -295,7 +295,7 @@ - + From 223e9475245b86b39162a5738bb470c619b24d00 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 7 Oct 2010 22:05:39 +0400 Subject: [PATCH 11/29] revert microba --- lib/microba.jar | Bin 119594 -> 134366 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/microba.jar b/lib/microba.jar index afcba284da77bdc8dd8d921b4d5a884cfa497da0..b66fbf15c15a46356aecc153b8638ae1dcc54268 100644 GIT binary patch delta 87763 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 NA+V2h3s^}p007SHFMR+2 delta 73730 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 z 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 From 80edbb8f1e0944ed94c6246853a8ea22e3dec6bb Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 7 Oct 2010 15:26:06 +0400 Subject: [PATCH 12/29] Insert @Override --- .../com/intellij/psi/impl/source/JavaFileElementType.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java b/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java index 726c59ad1fa4..478cabdfdaa4 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java @@ -51,10 +51,12 @@ public class JavaFileElementType extends IStubFileElementType { super("java.FILE", StdLanguages.JAVA); } + @Override public StubBuilder getBuilder() { return new JavaFileStubBuilder(); } + @Override public int getStubVersion() { return STUB_VERSION; } @@ -65,6 +67,7 @@ public class JavaFileElementType extends IStubFileElementType { return dir == null || dir.getUserData(LanguageLevel.KEY) != null; } + @Override public ASTNode parseContents(final ASTNode chameleon) { if (JavaParserDefinition.USE_NEW_PARSER) { final PsiBuilder builder = JavaParserUtil.createBuilder(chameleon); @@ -84,22 +87,26 @@ public class JavaFileElementType extends IStubFileElementType { return FileTextParsing.parseFileText(manager, lexer, seq, 0, seq.length(), node.getCharTable()); } + @Override public String getExternalId() { return "java.FILE"; } + @Override public void serialize(final PsiJavaFileStub stub, final StubOutputStream dataStream) throws IOException { dataStream.writeBoolean(stub.isCompiled()); dataStream.writeName(stub.getPackageName()); } + @Override public PsiJavaFileStub deserialize(final StubInputStream dataStream, final StubElement parentStub) throws IOException { boolean compiled = dataStream.readBoolean(); StringRef packName = dataStream.readName(); return new PsiJavaFileStubImpl(packName, compiled); } + @Override public void indexStub(final PsiJavaFileStub stub, final IndexSink sink) { } } From e825d7573b235b5eccc041f26c8a07f0f9a5a771 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 7 Oct 2010 19:32:50 +0400 Subject: [PATCH 13/29] Lighter AST tokens --- .../intellij/lang/LighterASTTokenNode.java | 26 +++++++++++++++++++ .../lang/LighterLazyParseableNode.java | 3 +-- .../intellij/lang/impl/PsiBuilderImpl.java | 9 ++++--- .../src/com/intellij/psi/impl/DebugUtil.java | 26 +++++++------------ .../intellij/lang/PsiBuilderQuickTest.java | 4 +-- 5 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 platform/lang-api/src/com/intellij/lang/LighterASTTokenNode.java diff --git a/platform/lang-api/src/com/intellij/lang/LighterASTTokenNode.java b/platform/lang-api/src/com/intellij/lang/LighterASTTokenNode.java new file mode 100644 index 000000000000..9db0c5176016 --- /dev/null +++ b/platform/lang-api/src/com/intellij/lang/LighterASTTokenNode.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2010 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 com.intellij.lang; + + +public interface LighterASTTokenNode extends LighterASTNode { + /** + * Note: a text returned may be linked back to file content text and therefore should be internalized + * through {@linkplain com.intellij.util.CharTable} if referenced as is. + * @return text of a token + */ + CharSequence getText(); +} diff --git a/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java b/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java index 363700f19e8f..115ce08b8c82 100644 --- a/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java +++ b/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java @@ -18,8 +18,7 @@ package com.intellij.lang; import com.intellij.openapi.project.Project; import com.intellij.util.CharTable; -public interface LighterLazyParseableNode extends LighterASTNode { +public interface LighterLazyParseableNode extends LighterASTTokenNode { Project getProject(); CharTable getCharTable(); - CharSequence getText(); } diff --git a/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java b/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java index cc59482522af..34d0d699b112 100644 --- a/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java +++ b/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java @@ -402,7 +402,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { return pre; } - private static class Token extends Node { + private static class Token extends Node implements LighterASTTokenNode { public PsiBuilderImpl myBuilder; public IElementType myTokenType; public int myTokenStart; @@ -1229,7 +1229,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { ProductionMarker prevChild = null; int lexIndex = marker.myLexemeIndex; while (child != null) { - lexIndex = insertLeafs(lexIndex, child.myLexemeIndex, into, marker.myBuilder); + lexIndex = insertLeaves(lexIndex, child.myLexemeIndex, into, marker.myBuilder); if (child instanceof StartMarker && ((StartMarker)child).myDoneMarker.myCollapse) { final int start = marker.myBuilder.myLexStarts[child.myLexemeIndex]; @@ -1251,7 +1251,8 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { } child = child.next; } - insertLeafs(lexIndex, marker.myDoneMarker.myLexemeIndex, into, marker.myBuilder); + + insertLeaves(lexIndex, marker.myDoneMarker.myLexemeIndex, into, marker.myBuilder); return count; } @@ -1269,7 +1270,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { } } - private int insertLeafs(int curToken, int lastIdx, Ref into, PsiBuilderImpl builder) { + private int insertLeaves(int curToken, int lastIdx, Ref into, PsiBuilderImpl builder) { lastIdx = Math.min(lastIdx, builder.myLexemeCount); while (curToken < lastIdx) { final int start = builder.myLexStarts[curToken]; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java b/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java index 321a592dff98..14d10a8c07fa 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java @@ -18,6 +18,7 @@ package com.intellij.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.lang.LighterASTNode; +import com.intellij.lang.LighterASTTokenNode; import com.intellij.lang.LighterLazyParseableNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; @@ -136,26 +137,18 @@ public class DebugUtil { } public static String lightTreeToString(@NotNull final FlyweightCapableTreeStructure tree, - @NotNull final String source, final boolean skipWhitespaces) { final StringBuilder buffer = new StringBuilder(); - lightTreeToBuffer(tree, source, buffer, tree.getRoot(), 0, skipWhitespaces, 0); + lightTreeToBuffer(tree, tree.getRoot(), buffer, 0, skipWhitespaces); return buffer.toString(); } - public static void lightTreeToBuffer(@NotNull final FlyweightCapableTreeStructure tree, - @NotNull final String source, - @NotNull final StringBuilder buffer, - @NotNull final LighterASTNode root, - final int indent, - final boolean skipWhiteSpaces, - final int chameleonShift) { - final IElementType tokenType = root.getTokenType(); + public static void lightTreeToBuffer(@NotNull final FlyweightCapableTreeStructure tree, @NotNull final LighterASTNode node, + @NotNull final StringBuilder buffer, final int indent, final boolean skipWhiteSpaces) { + final IElementType tokenType = node.getTokenType(); if (skipWhiteSpaces && tokenType == TokenType.WHITE_SPACE) return; - final Ref kids = new Ref(); - final int numKids = tree.getChildren(tree.prepareForGetChildren(root), kids); - final boolean composite = numKids > 0 || root.getStartOffset() == root.getEndOffset(); + final boolean composite = !(node instanceof LighterASTTokenNode && !(node instanceof LighterLazyParseableNode)); StringUtil.repeatSymbol(buffer, ' ', indent); if (tokenType == TokenType.ERROR_ELEMENT) { @@ -169,20 +162,21 @@ public class DebugUtil { } if (!composite) { - final String text = source.substring(chameleonShift + root.getStartOffset(), chameleonShift + root.getEndOffset()); + final String text = ((LighterASTTokenNode)node).getText().toString(); buffer.append("('").append(fixWhiteSpaces(text)).append("')"); } buffer.append('\n'); if (composite) { + final Ref kids = new Ref(); + final int numKids = tree.getChildren(tree.prepareForGetChildren(node), kids); if (numKids == 0) { StringUtil.repeatSymbol(buffer, ' ', indent + 2); buffer.append("\n"); } else { - final int shift = root instanceof LighterLazyParseableNode ? root.getStartOffset() : 0; for (int i = 0; i < numKids; i++) { - lightTreeToBuffer(tree, source, buffer, kids.get()[i], indent + 2, skipWhiteSpaces, chameleonShift + shift); + lightTreeToBuffer(tree, kids.get()[i], buffer, indent + 2, skipWhiteSpaces); } } } diff --git a/platform/lang-impl/testSrc/com/intellij/lang/PsiBuilderQuickTest.java b/platform/lang-impl/testSrc/com/intellij/lang/PsiBuilderQuickTest.java index 21bf084484a2..96a5fb4e6d35 100644 --- a/platform/lang-impl/testSrc/com/intellij/lang/PsiBuilderQuickTest.java +++ b/platform/lang-impl/testSrc/com/intellij/lang/PsiBuilderQuickTest.java @@ -523,10 +523,10 @@ public class PsiBuilderQuickTest { // check light tree composition final FlyweightCapableTreeStructure lightTree = builder.getLightTree(); final String lightExpected = expected.replaceAll("PsiErrorElement:.*\n", "PsiErrorElement\n"); - assertEquals(lightExpected, DebugUtil.lightTreeToString(lightTree, text, false)); + assertEquals(lightExpected, DebugUtil.lightTreeToString(lightTree, false)); // verify that light tree can be taken multiple times final FlyweightCapableTreeStructure lightTree2 = builder.getLightTree(); - assertEquals(lightExpected, DebugUtil.lightTreeToString(lightTree2, text, false)); + assertEquals(lightExpected, DebugUtil.lightTreeToString(lightTree2, false)); // check heavy tree composition final ASTNode root = builder.getTreeBuilt(); From 4c80b5254e5c8c49f44ae25a99978c76da9689fe Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 7 Oct 2010 20:49:30 +0400 Subject: [PATCH 14/29] Lighter AST tokens --- .../src/com/intellij/lang/LighterLazyParseableNode.java | 3 ++- .../src/com/intellij/lang/impl/PsiBuilderImpl.java | 9 ++++++--- .../lang-impl/src/com/intellij/psi/impl/DebugUtil.java | 9 ++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java b/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java index 115ce08b8c82..363700f19e8f 100644 --- a/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java +++ b/platform/lang-api/src/com/intellij/lang/LighterLazyParseableNode.java @@ -18,7 +18,8 @@ package com.intellij.lang; import com.intellij.openapi.project.Project; import com.intellij.util.CharTable; -public interface LighterLazyParseableNode extends LighterASTTokenNode { +public interface LighterLazyParseableNode extends LighterASTNode { Project getProject(); CharTable getCharTable(); + CharSequence getText(); } diff --git a/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java b/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java index 34d0d699b112..a5007d61353f 100644 --- a/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java +++ b/platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java @@ -402,7 +402,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { return pre; } - private static class Token extends Node implements LighterASTTokenNode { + private static abstract class Token extends Node { public PsiBuilderImpl myBuilder; public IElementType myTokenType; public int myTokenStart; @@ -461,6 +461,9 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { } } + private static class TokenNode extends Token implements LighterASTTokenNode { + } + private static class LazyParseableToken extends Token implements LighterLazyParseableNode { private MyTreeStructure myParent; private FlyweightCapableTreeStructure myParsed; @@ -1169,7 +1172,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { } public Token create() { - return new Token(); + return new TokenNode(); } }); myLazyPool = new LimitedPool(200, new LimitedPool.ObjectFactory() { @@ -1285,7 +1288,7 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder { } private void insertLeaf(Ref into, int start, int end, IElementType type, PsiBuilderImpl builder) { - Token lexeme; + final Token lexeme; if (type instanceof ILightLazyParseableElementType) { lexeme = myLazyPool.alloc(); ((LazyParseableToken)lexeme).myParent = this; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java b/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java index 14d10a8c07fa..093f36a80258 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java @@ -19,7 +19,6 @@ package com.intellij.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.lang.LighterASTNode; import com.intellij.lang.LighterASTTokenNode; -import com.intellij.lang.LighterLazyParseableNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Ref; @@ -148,7 +147,7 @@ public class DebugUtil { final IElementType tokenType = node.getTokenType(); if (skipWhiteSpaces && tokenType == TokenType.WHITE_SPACE) return; - final boolean composite = !(node instanceof LighterASTTokenNode && !(node instanceof LighterLazyParseableNode)); + final boolean isLeaf = (node instanceof LighterASTTokenNode); StringUtil.repeatSymbol(buffer, ' ', indent); if (tokenType == TokenType.ERROR_ELEMENT) { @@ -158,16 +157,16 @@ public class DebugUtil { buffer.append("PsiWhiteSpace"); } else { - buffer.append(composite ? "Element" : "PsiElement").append('(').append(tokenType).append(')'); + buffer.append(isLeaf ? "PsiElement" : "Element").append('(').append(tokenType).append(')'); } - if (!composite) { + if (isLeaf) { final String text = ((LighterASTTokenNode)node).getText().toString(); buffer.append("('").append(fixWhiteSpaces(text)).append("')"); } buffer.append('\n'); - if (composite) { + if (!isLeaf) { final Ref kids = new Ref(); final int numKids = tree.getChildren(tree.prepareForGetChildren(node), kids); if (numKids == 0) { From a808256644d9f5d1a9ced9b469135ba187720fa9 Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Fri, 8 Oct 2010 10:04:17 +0400 Subject: [PATCH 15/29] IDEA-59367 When completing top-level method calls, insert nothing instead of space and '(' --- .../lang/completion/GroovyInsertHandler.java | 4 ++-- .../groovy/GroovyClassNameCompletionTest.groovy | 16 ++++++++++++---- .../completion/ArrayLikeAccessForList.groovy | 6 ++++-- .../ArrayLikeAccessForList_after.groovy | 6 ++++-- .../completion/ArrayLikeAccessForMap.groovy | 6 ++++-- .../ArrayLikeAccessForMap_after.groovy | 6 ++++-- .../groovy/dsl/DelegateToThrowable.groovy | 4 +++- .../groovy/dsl/DelegateToThrowable_after.groovy | 4 +++- .../dsl/transform/BindableTransform_after.groovy | 2 +- .../transform/DelegateAnnotation_after.groovy | 2 +- .../dsl/transform/VetoableTransform_after.groovy | 2 +- 11 files changed, 39 insertions(+), 19 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyInsertHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyInsertHandler.java index 94244b4af9a1..0d0f898e5c10 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyInsertHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyInsertHandler.java @@ -88,9 +88,9 @@ public class GroovyInsertHandler implements InsertHandler { PsiDocumentManager docManager = PsiDocumentManager.getInstance(method.getProject()); docManager.commitDocument(document); PsiFile psiFile = docManager.getPsiFile(document); - /*if (method.getParameterList().getParametersCount() > 0 && isTopLevelStatement(psiFile, context.getStartOffset())) { + if (method.getParameterList().getParametersCount() > 0 && isTopLevelStatement(psiFile, context.getStartOffset())) { return; - }*/ + } if (isExpressionStatement(psiFile, context.getStartOffset()) && (PsiType.VOID.equals(PsiUtil.getSmartReturnType(method)) || method instanceof GrMethod && ((GrMethod)method).getReturnTypeElementGroovy() == null) && diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyClassNameCompletionTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyClassNameCompletionTest.groovy index dc1a39a94328..ba97a15eb995 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyClassNameCompletionTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyClassNameCompletionTest.groovy @@ -115,13 +115,17 @@ class Foo { static def abcmethod1(int a) {} static def abcmethod2(int a) {} }""") - myFixture.configureByText("a.groovy", "abcme") + myFixture.configureByText("a.groovy", """def foo() { + abcme +}""") def item = myFixture.complete(CompletionType.CLASS_NAME)[0] ((StaticallyImportable) item).shouldBeImported = true myFixture.type('\n') myFixture.checkResult """import static Foo.abcmethod1 -abcmethod1 """ +def foo() { + abcmethod1 +}""" } @@ -130,11 +134,15 @@ abcmethod1 """ class Foo { static def abcmethod(int a) {} }""") - myFixture.configureByText("a.groovy", "abcme") + myFixture.configureByText("a.groovy", """def foo() { + abcme +}""") myFixture.complete(CompletionType.CLASS_NAME) myFixture.checkResult """import foo.Foo -Foo.abcmethod """ +def foo() { + Foo.abcmethod +}""" } diff --git a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList.groovy b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList.groovy index 148a40093f1e..be0e98311a1c 100644 --- a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList.groovy +++ b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList.groovy @@ -1,2 +1,4 @@ -List list=['a', 'b'] -list[0].substr \ No newline at end of file +def foo() { + List list=['a', 'b'] + list[0].substr +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList_after.groovy b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList_after.groovy index 1183d1a937d2..e5f06e0fea48 100644 --- a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList_after.groovy +++ b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForList_after.groovy @@ -1,2 +1,4 @@ -List list=['a', 'b'] -list[0].substring() \ No newline at end of file +def foo() { + List list=['a', 'b'] + list[0].substring() +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap.groovy b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap.groovy index 48b304a610ba..53fb3df1ebbd 100644 --- a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap.groovy +++ b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap.groovy @@ -1,2 +1,4 @@ -map=[1:'a', 3:'b', 2:'c'] -map[2].substr \ No newline at end of file +def foo() { + map=[1:'a', 3:'b', 2:'c'] + map[2].substr +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap_after.groovy b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap_after.groovy index af7ca058ab20..90f20ad5f46e 100644 --- a/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap_after.groovy +++ b/plugins/groovy/testdata/groovy/completion/ArrayLikeAccessForMap_after.groovy @@ -1,2 +1,4 @@ -map=[1:'a', 3:'b', 2:'c'] -map[2].substring() \ No newline at end of file +def foo() { + map=[1:'a', 3:'b', 2:'c'] + map[2].substring() +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable.groovy b/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable.groovy index 94c1b563cd4f..5ec73c86aa83 100644 --- a/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable.groovy +++ b/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable.groovy @@ -1 +1,3 @@ -"".init \ No newline at end of file +def foo() { + "".init +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable_after.groovy b/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable_after.groovy index 36e101248223..2cc741907560 100644 --- a/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable_after.groovy +++ b/plugins/groovy/testdata/groovy/dsl/DelegateToThrowable_after.groovy @@ -1 +1,3 @@ -"".initCause() \ No newline at end of file +def foo() { + "".initCause() +} \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/dsl/transform/BindableTransform_after.groovy b/plugins/groovy/testdata/groovy/dsl/transform/BindableTransform_after.groovy index d10217d6ff9f..988d22ca9120 100644 --- a/plugins/groovy/testdata/groovy/dsl/transform/BindableTransform_after.groovy +++ b/plugins/groovy/testdata/groovy/dsl/transform/BindableTransform_after.groovy @@ -6,4 +6,4 @@ class MyBean { def bean = new MyBean() -bean.firePropertyChange \ No newline at end of file +bean.firePropertyChange \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/dsl/transform/DelegateAnnotation_after.groovy b/plugins/groovy/testdata/groovy/dsl/transform/DelegateAnnotation_after.groovy index 685101bd59fa..f4df12c746b2 100644 --- a/plugins/groovy/testdata/groovy/dsl/transform/DelegateAnnotation_after.groovy +++ b/plugins/groovy/testdata/groovy/dsl/transform/DelegateAnnotation_after.groovy @@ -12,4 +12,4 @@ def gr8conf = new Event(title: "GR8 Conference", when: df.parse("2009/05/18")) -gr8conf.before() \ No newline at end of file +gr8conf.before \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/dsl/transform/VetoableTransform_after.groovy b/plugins/groovy/testdata/groovy/dsl/transform/VetoableTransform_after.groovy index e72c8e0502cc..8610d6331944 100644 --- a/plugins/groovy/testdata/groovy/dsl/transform/VetoableTransform_after.groovy +++ b/plugins/groovy/testdata/groovy/dsl/transform/VetoableTransform_after.groovy @@ -6,4 +6,4 @@ class MyBean { def bean = new MyBean() -bean.fireVetoableChange \ No newline at end of file +bean.fireVetoableChange \ No newline at end of file From 9cb27879edb87d02e430ccf629c35c13075f7bf0 Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 8 Oct 2010 10:08:46 +0400 Subject: [PATCH 16/29] IDEA-59285: In the Technologies page of the wizard, end the sentences with periods. --- .../src/messages/ProjectBundle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/platform-resources-en/src/messages/ProjectBundle.properties b/platform/platform-resources-en/src/messages/ProjectBundle.properties index 7cd51825a81b..a44470559692 100644 --- a/platform/platform-resources-en/src/messages/ProjectBundle.properties +++ b/platform/platform-resources-en/src/messages/ProjectBundle.properties @@ -454,8 +454,8 @@ project.new.wizard.module.name.title=Na&me: project.new.wizard.module.root.title=Content &root: project.new.wizard.module.file.title=Module &file location: -label.text.please.select.desired.technologies=Please select the desired technologies -label.text.framework.support.description=This will download all needed libraries and create Facets in project configuration +label.text.please.select.desired.technologies=Please select the desired technologies. +label.text.framework.support.description=This will download all needed libraries and create Facets in project configuration. file.chooser.directory.for.downloaded.libraries.title=Directory for Downloaded Libraries file.chooser.directory.for.downloaded.libraries.description=Downloaded libraries will be copied to selected directory dialog.title.library.downloading.settings=Library Downloading Settings From b613c185ed1730e098b1945e2391019ee1422538 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 14:03:33 +0400 Subject: [PATCH 17/29] notnull --- .../tree/injected/JavaConcatenationInjectorManager.java | 4 ++-- .../openapi/extensions/ExtensionPointListener.java | 5 +++-- .../intellij/openapi/extensions/SmartExtensionPoint.java | 4 ++-- .../openapi/extensions/impl/ExtensionsAreaImpl.java | 4 ++-- .../openapi/extensions/impl/ExtensionPointImplTest.java | 9 +++++---- .../openapi/extensions/impl/ExtensionsImplTest.java | 5 +++-- .../intellij/codeInspection/reference/EntryPoint.java | 2 +- .../daemon/impl/analysis/DefaultHighlightVisitor.java | 4 ++-- .../intention/impl/config/IntentionManagerImpl.java | 4 ++-- .../com/intellij/facet/impl/FacetTypeRegistryImpl.java | 5 +++-- .../tree/injected/InjectedLanguageManagerImpl.java | 8 ++++---- .../actions/BasePlatformRefactoringAction.java | 4 ++-- .../intellij/openapi/util/KeyedExtensionCollector.java | 4 ++-- .../openapi/components/impl/ServiceManagerImpl.java | 4 ++-- .../fileEditor/impl/FileEditorProviderManagerImpl.java | 7 +++---- 15 files changed, 38 insertions(+), 35 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java index 2d2128e9a14e..6ad5422fc2cf 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java @@ -47,11 +47,11 @@ public class JavaConcatenationInjectorManager implements ModificationTracker { public JavaConcatenationInjectorManager(Project project, PsiManagerEx psiManagerEx) { final ExtensionPoint concatPoint = Extensions.getArea(project).getExtensionPoint(CONCATENATION_INJECTOR_EP_NAME); concatPoint.addExtensionPointListener(new ExtensionPointListener() { - public void extensionAdded(ConcatenationAwareInjector injector, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull ConcatenationAwareInjector injector, @Nullable PluginDescriptor pluginDescriptor) { registerConcatenationInjector(injector); } - public void extensionRemoved(ConcatenationAwareInjector injector, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull ConcatenationAwareInjector injector, @Nullable PluginDescriptor pluginDescriptor) { unregisterConcatenationInjector(injector); } }); diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointListener.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointListener.java index 995b467e2e69..3dbebcf7bee6 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointListener.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointListener.java @@ -15,9 +15,10 @@ */ package com.intellij.openapi.extensions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface ExtensionPointListener { - void extensionAdded(T extension, @Nullable final PluginDescriptor pluginDescriptor); - void extensionRemoved(T extension, @Nullable final PluginDescriptor pluginDescriptor); + void extensionAdded(@NotNull T extension, @Nullable final PluginDescriptor pluginDescriptor); + void extensionRemoved(@NotNull T extension, @Nullable final PluginDescriptor pluginDescriptor); } diff --git a/platform/extensions/src/com/intellij/openapi/extensions/SmartExtensionPoint.java b/platform/extensions/src/com/intellij/openapi/extensions/SmartExtensionPoint.java index 8270be57bd34..a147038a214d 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/SmartExtensionPoint.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/SmartExtensionPoint.java @@ -74,7 +74,7 @@ public abstract class SmartExtensionPoint implements ExtensionPoint } } - public final void extensionAdded(final Extension extension, @Nullable final PluginDescriptor pluginDescriptor) { + public final void extensionAdded(@NotNull final Extension extension, @Nullable final PluginDescriptor pluginDescriptor) { dropCache(); } @@ -88,7 +88,7 @@ public abstract class SmartExtensionPoint implements ExtensionPoint } } - public final void extensionRemoved(final Extension extension, @Nullable final PluginDescriptor pluginDescriptor) { + public final void extensionRemoved(@NotNull final Extension extension, @Nullable final PluginDescriptor pluginDescriptor) { dropCache(); } diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index 7cde8f3213f5..5ac0528cc7e5 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -250,7 +250,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea { getExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME).addExtensionPointListener(new ExtensionPointListener() { @SuppressWarnings({"unchecked"}) - public void extensionRemoved(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { EPAvailabilityListenerExtension epListenerExtension = (EPAvailabilityListenerExtension) extension; Collection listeners = myAvailabilityListeners.get(epListenerExtension.getExtensionPointName()); for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { @@ -263,7 +263,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea { myLogger.warn("Failed to find EP availability listener: " + epListenerExtension.getListenerClass()); } - public void extensionAdded(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { EPAvailabilityListenerExtension epListenerExtension = (EPAvailabilityListenerExtension) extension; try { String epName = epListenerExtension.getExtensionPointName(); diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java index d33369ff23f0..a225479abc90 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java @@ -17,6 +17,7 @@ package com.intellij.openapi.extensions.impl; import com.intellij.openapi.extensions.*; import junit.framework.TestCase; +import org.jetbrains.annotations.NotNull; import org.picocontainer.defaults.DefaultPicoContainer; /** @@ -101,12 +102,12 @@ public class ExtensionPointImplTest extends TestCase { final boolean removed[] = new boolean[1]; extensionPoint.addExtensionPointListener(new ExtensionPointListener() { @Override - public void extensionAdded(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { added[0] = true; } @Override - public void extensionRemoved(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { removed[0] = true; } }); @@ -128,12 +129,12 @@ public class ExtensionPointImplTest extends TestCase { assertFalse(added[0]); extensionPoint.addExtensionPointListener(new ExtensionPointListener() { @Override - public void extensionAdded(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { added[0] = true; } @Override - public void extensionRemoved(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { } }); assertTrue(added[0]); diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java index 2aa4bb7ae225..12653098c084 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java @@ -17,6 +17,7 @@ package com.intellij.openapi.extensions.impl; import com.intellij.openapi.extensions.*; import junit.framework.TestCase; +import org.jetbrains.annotations.NotNull; import org.picocontainer.MutablePicoContainer; import org.picocontainer.defaults.DefaultPicoContainer; @@ -56,11 +57,11 @@ public class ExtensionsImplTest extends TestCase { removed[0] = false; extensionsArea.getExtensionPoint(EXTENSION_POINT_NAME_1).addExtensionPointListener(new ExtensionPointListener() { @Override - public void extensionAdded(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { } @Override - public void extensionRemoved(Object extension, final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { removed[0] = true; } }); diff --git a/platform/lang-api/src/com/intellij/codeInspection/reference/EntryPoint.java b/platform/lang-api/src/com/intellij/codeInspection/reference/EntryPoint.java index 5ce8267f9a80..6ee0c0ddd26b 100644 --- a/platform/lang-api/src/com/intellij/codeInspection/reference/EntryPoint.java +++ b/platform/lang-api/src/com/intellij/codeInspection/reference/EntryPoint.java @@ -38,7 +38,7 @@ public abstract class EntryPoint implements JDOMExternalizable , Cloneable { } @Nullable - public String [] getIgnoreAnnotations() { + public String[] getIgnoreAnnotations() { return null; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/DefaultHighlightVisitor.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/DefaultHighlightVisitor.java index 483ab63d0477..5d29686f7e04 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/DefaultHighlightVisitor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/DefaultHighlightVisitor.java @@ -111,11 +111,11 @@ public class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { static { LanguageAnnotators.INSTANCE.addListener(new ExtensionPointListener() { - public void extensionAdded(Annotator extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull Annotator extension, @Nullable PluginDescriptor pluginDescriptor) { cachedAnnotators.clear(); } - public void extensionRemoved(Annotator extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull Annotator extension, @Nullable PluginDescriptor pluginDescriptor) { cachedAnnotators.clear(); } }); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionManagerImpl.java index bfdeeb249598..89400d7a5776 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionManagerImpl.java @@ -64,11 +64,11 @@ public class IntentionManagerImpl extends IntentionManager { final ExtensionPoint point = Extensions.getArea(null).getExtensionPoint(EP_INTENTION_ACTIONS); point.addExtensionPointListener(new ExtensionPointListener() { - public void extensionAdded(final IntentionActionBean extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull final IntentionActionBean extension, @Nullable final PluginDescriptor pluginDescriptor) { registerIntentionFromBean(extension); } - public void extensionRemoved(final IntentionActionBean extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull final IntentionActionBean extension, @Nullable final PluginDescriptor pluginDescriptor) { } }); } diff --git a/platform/lang-impl/src/com/intellij/facet/impl/FacetTypeRegistryImpl.java b/platform/lang-impl/src/com/intellij/facet/impl/FacetTypeRegistryImpl.java index 38302a48fc3c..b4a1c7ad25ba 100644 --- a/platform/lang-impl/src/com/intellij/facet/impl/FacetTypeRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/facet/impl/FacetTypeRegistryImpl.java @@ -22,6 +22,7 @@ import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.ExtensionPointListener; import com.intellij.openapi.extensions.PluginDescriptor; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; @@ -87,11 +88,11 @@ public class FacetTypeRegistryImpl extends FacetTypeRegistry { myExtensionsLoaded = true; final ExtensionPoint extensionPoint = Extensions.getArea(null).getExtensionPoint(FacetType.EP_NAME); extensionPoint.addExtensionPointListener(new ExtensionPointListener() { - public void extensionAdded(final FacetType extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull final FacetType extension, @Nullable final PluginDescriptor pluginDescriptor) { registerFacetType(extension); } - public void extensionRemoved(final FacetType extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull final FacetType extension, @Nullable final PluginDescriptor pluginDescriptor) { unregisterFacetType(extension); } }); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java index 81c525c9df0c..e22b3f8a5fd1 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java @@ -66,20 +66,20 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager { final ExtensionPoint multiPoint = Extensions.getArea(project).getExtensionPoint(MultiHostInjector.MULTIHOST_INJECTOR_EP_NAME); multiPoint.addExtensionPointListener(new ExtensionPointListener() { - public void extensionAdded(MultiHostInjector injector, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull MultiHostInjector injector, @Nullable PluginDescriptor pluginDescriptor) { registerMultiHostInjector(injector); } - public void extensionRemoved(MultiHostInjector injector, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull MultiHostInjector injector, @Nullable PluginDescriptor pluginDescriptor) { unregisterMultiHostInjector(injector); } }); final ExtensionPointListener myListener = new ExtensionPointListener() { - public void extensionAdded(LanguageInjector extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull LanguageInjector extension, @Nullable PluginDescriptor pluginDescriptor) { psiManagerInjectorsChanged(); } - public void extensionRemoved(LanguageInjector extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull LanguageInjector extension, @Nullable PluginDescriptor pluginDescriptor) { psiManagerInjectorsChanged(); } }; diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java index f5dab5ab830a..2efa4455d885 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java @@ -48,11 +48,11 @@ public abstract class BasePlatformRefactoringAction extends BaseRefactoringActio public BasePlatformRefactoringAction() { LanguageRefactoringSupport.INSTANCE.addListener(new ExtensionPointListener() { - public void extensionAdded(RefactoringSupportProvider extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull RefactoringSupportProvider extension, @Nullable PluginDescriptor pluginDescriptor) { myHidden = null; } - public void extensionRemoved(RefactoringSupportProvider extension, @Nullable PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull RefactoringSupportProvider extension, @Nullable PluginDescriptor pluginDescriptor) { myHidden = null; } }); diff --git a/platform/platform-api/src/com/intellij/openapi/util/KeyedExtensionCollector.java b/platform/platform-api/src/com/intellij/openapi/util/KeyedExtensionCollector.java index d17505cbb238..34044aef8e29 100644 --- a/platform/platform-api/src/com/intellij/openapi/util/KeyedExtensionCollector.java +++ b/platform/platform-api/src/com/intellij/openapi/util/KeyedExtensionCollector.java @@ -178,7 +178,7 @@ public abstract class KeyedExtensionCollector { ExtensionPointName> typesafe = ExtensionPointName.create(myEpName); myPoint = Extensions.getRootArea().getExtensionPoint(typesafe); myListener = new ExtensionPointAndAreaListener>() { - public void extensionAdded(final KeyedLazyInstance bean, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull final KeyedLazyInstance bean, @Nullable final PluginDescriptor pluginDescriptor) { w.lock(); try { myCache.remove(bean.getKey()); @@ -191,7 +191,7 @@ public abstract class KeyedExtensionCollector { } } - public void extensionRemoved(final KeyedLazyInstance bean, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull final KeyedLazyInstance bean, @Nullable final PluginDescriptor pluginDescriptor) { w.lock(); try { myCache.remove(bean.getKey()); diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java index ee198f9f2c4e..656a7b4d4d1a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java @@ -56,7 +56,7 @@ public class ServiceManagerImpl implements BaseComponent { final MutablePicoContainer picoContainer = (MutablePicoContainer)componentManager.getPicoContainer(); myExtensionPointListener = new ExtensionPointListener() { - public void extensionAdded(final ServiceDescriptor descriptor, final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull final ServiceDescriptor descriptor, final PluginDescriptor pluginDescriptor) { if (descriptor.overrides) { ComponentAdapter oldAdapter = picoContainer.unregisterComponent(descriptor.getInterface());// Allow to re-define service implementations in plugins. @@ -68,7 +68,7 @@ public class ServiceManagerImpl implements BaseComponent { picoContainer.registerComponent(new MyComponentAdapter(descriptor, pluginDescriptor, (ComponentManagerEx)componentManager)); } - public void extensionRemoved(final ServiceDescriptor extension, final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull final ServiceDescriptor extension, final PluginDescriptor pluginDescriptor) { picoContainer.unregisterComponent(extension.getInterface()); } }; diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.java index da5c27a83384..b6d5793a953b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.java @@ -23,9 +23,8 @@ import com.intellij.openapi.fileEditor.FileEditorProvider; import com.intellij.openapi.fileEditor.WeighedFileEditorProvider; import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager; import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbService; -import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,11 +48,11 @@ public final class FileEditorProviderManagerImpl extends FileEditorProviderManag mySharedProviderList = new ArrayList(); Extensions.getRootArea().getExtensionPoint(FileEditorProvider.EP_FILE_EDITOR_PROVIDER).addExtensionPointListener(new ExtensionPointListener() { - public void extensionAdded(final FileEditorProvider extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionAdded(@NotNull final FileEditorProvider extension, @Nullable final PluginDescriptor pluginDescriptor) { registerProvider(extension); } - public void extensionRemoved(final FileEditorProvider extension, @Nullable final PluginDescriptor pluginDescriptor) { + public void extensionRemoved(@NotNull final FileEditorProvider extension, @Nullable final PluginDescriptor pluginDescriptor) { unregisterProvider(extension); } }); From f0b918af800fd581bd7ca59156f4349a134efab6 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 15:23:59 +0400 Subject: [PATCH 18/29] autoimport does not work sometimes --- .../com/intellij/codeInsight/daemon/impl/DaemonListeners.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java index a323b4124a8a..aad941cf421e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java @@ -188,7 +188,6 @@ class DaemonListeners implements Disposable { }); connection.subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() { - public void enteredDumbMode() { stopDaemon(true); } @@ -312,7 +311,7 @@ class DaemonListeners implements Disposable { if (vcsIsThinking) return Result.UNCHANGED; // do not modify file which is in the process of updating FileStatus status = FileStatusManager.getInstance(project).getStatus(virtualFile); - + if (status == FileStatus.UNKNOWN) return Result.NOT_SURE; return status == FileStatus.MODIFIED || status == FileStatus.ADDED ? Result.CHANGED : Result.UNCHANGED; } From 64ad1fa52ff02dac4dcfc5567f8dc745136b9c04 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 16:08:49 +0400 Subject: [PATCH 19/29] IDEA-59493 --- .../CatchBodyVisitor.java | 42 ++++--- .../DefaultFileTemplateUsageInspection.java | 78 +++++++++---- .../FileHeaderChecker.java | 104 ++++++++++-------- .../MethodBodyChecker.java | 54 +++++---- 4 files changed, 171 insertions(+), 107 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/CatchBodyVisitor.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/CatchBodyVisitor.java index da2f66971478..8a13f5ff8398 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/CatchBodyVisitor.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/CatchBodyVisitor.java @@ -20,6 +20,7 @@ import com.intellij.codeInspection.*; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.JavaTemplateUtil; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.Project; @@ -113,26 +114,35 @@ class CatchBodyVisitor extends JavaRecursiveElementWalkingVisitor { private static LocalQuickFix[] createQuickFix(final PsiCatchSection section) { FileTemplate template = FileTemplateManager.getInstance().getCodeTemplate(JavaTemplateUtil.TEMPLATE_CATCH_BODY); + final Runnable runnable = new Runnable() { + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + final PsiParameter parameter = section.getParameter(); + if (parameter == null) return; + PsiCodeBlock catchBlock = section.getCatchBlock(); + if (catchBlock == null) return; + PsiType type = parameter.getType(); + if (!(type instanceof PsiClassType)) return; + final PsiJavaParserFacade elementFactory = JavaPsiFacade.getInstance(section.getProject()).getParserFacade(); + try { + PsiCatchSection sectionTemplate = elementFactory.createCatchSection((PsiClassType)type, parameter.getName(), parameter); + section.replace(sectionTemplate); + } + catch (IncorrectOperationException e) { + LOG.error(e); + } + } + }); + } + }; + ReplaceWithFileTemplateFix replaceWithFileTemplateFix = new ReplaceWithFileTemplateFix() { public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - final PsiParameter parameter = section.getParameter(); - if (parameter == null) return; - PsiCodeBlock catchBlock = section.getCatchBlock(); - if (catchBlock == null) return; - PsiType type = parameter.getType(); - if (!(type instanceof PsiClassType)) return; - final PsiJavaParserFacade elementFactory = JavaPsiFacade.getInstance(section.getProject()).getParserFacade(); - try { - PsiCatchSection sectionTemplate = elementFactory.createCatchSection((PsiClassType)type, parameter.getName(), parameter); - section.replace(sectionTemplate); - } - catch (IncorrectOperationException e) { - LOG.error(e); - } + runnable.run(); } - }; - LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, replaceWithFileTemplateFix); + LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, runnable); if (template.isDefault()) { return new LocalQuickFix[]{editFileTemplateFix}; } diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java index d1156a131a07..256265b2e5ea 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java @@ -15,14 +15,17 @@ */ package com.intellij.codeInspection.defaultFileTemplateUsage; +import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.*; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.impl.FileTemplateConfigurable; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; +import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -119,31 +122,62 @@ public class DefaultFileTemplateUsageInspection extends BaseJavaLocalInspectionT return new InspectionOptions(this).getComponent(); } - public static LocalQuickFix createEditFileTemplateFix(final FileTemplate templateToEdit, final LocalQuickFix replaceTemplateFix) { - return new LocalQuickFix() { - @NotNull - public String getName() { - return InspectionsBundle.message("default.file.template.edit.template"); - } + public static LocalQuickFix createEditFileTemplateFix(final FileTemplate templateToEdit, final Runnable replaceTemplateFix) { + return new MyLocalQuickFix(templateToEdit, replaceTemplateFix); + } - @NotNull - public String getFamilyName() { - return getName(); - } + private static class MyLocalQuickFix implements LocalQuickFix, IntentionAction { + private final FileTemplate myTemplateToEdit; + private final Runnable myReplaceTemplateFix; - public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - final FileTemplateConfigurable configurable = new FileTemplateConfigurable(); - SwingUtilities.invokeLater(new Runnable(){ - public void run() { - configurable.setTemplate(templateToEdit, null); - } - }); - boolean ok = ShowSettingsUtil.getInstance().editConfigurable(project, configurable); - if (ok) { - replaceTemplateFix.applyFix(project, descriptor); - FileTemplateManager.getInstance().saveAll(); + public MyLocalQuickFix(FileTemplate templateToEdit, Runnable replaceTemplateFix) { + myTemplateToEdit = templateToEdit; + myReplaceTemplateFix = replaceTemplateFix; + } + + @NotNull + public String getName() { + return InspectionsBundle.message("default.file.template.edit.template"); + } + + @NotNull + public String getFamilyName() { + return getName(); + } + + public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { + invoke(project, null, null); + } + + @NotNull + @Override + public String getText() { + return getName(); + } + + @Override + public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { + return true; + } + + @Override + public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + final FileTemplateConfigurable configurable = new FileTemplateConfigurable(); + SwingUtilities.invokeLater(new Runnable(){ + public void run() { + configurable.setTemplate(myTemplateToEdit, null); } + }); + boolean ok = ShowSettingsUtil.getInstance().editConfigurable(project, configurable); + if (ok) { + myReplaceTemplateFix.run(); + FileTemplateManager.getInstance().saveAll(); } - }; + } + + @Override + public boolean startInWriteAction() { + return false; + } } } diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java index 56c9251fa0c4..9096ae84e829 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.CodeInsightUtil; import com.intellij.codeInspection.*; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; @@ -82,61 +83,70 @@ public class FileHeaderChecker { return null; } + private static Properties computeProperties(final Matcher matcher, final TIntObjectHashMap offsetToProperty) { + Properties properties = new Properties(FileTemplateManager.getInstance().getDefaultProperties()); + int[] offsets = offsetToProperty.keys(); + Arrays.sort(offsets); + + for (int i = 0; i < offsets.length; i++) { + final int offset = offsets[i]; + String propName = offsetToProperty.get(offset); + int groupNum = i + 2; // first group is whole doc comment + String propValue = matcher.group(groupNum); + properties.put(propName, propValue); + } + return properties; + } + private static LocalQuickFix[] createQuickFix(final PsiDocComment element, final Matcher matcher, final TIntObjectHashMap offsetToProperty) { final FileTemplate template = FileTemplateManager.getInstance().getPattern(FileTemplateManager.FILE_HEADER_TEMPLATE_NAME); - final ReplaceWithFileTemplateFix replaceTemplateFix = new ReplaceWithFileTemplateFix() { - public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - if (!element.isValid()) return; - if (!CodeInsightUtil.preparePsiElementsForWrite(element)) return; - String newText; - try { - newText = template.getText(computeProperties(matcher, offsetToProperty)); - } - catch (IOException e) { - LOG.error(e); - return; - } - try { - int offset = element.getTextRange().getStartOffset(); - PsiFile psiFile = element.getContainingFile(); - if (psiFile == null) return; - PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project); - Document document = documentManager.getDocument(psiFile); - if (document == null) return; + final Runnable runnable = new Runnable() { + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + if (!element.isValid()) return; + if (!CodeInsightUtil.preparePsiElementsForWrite(element)) return; + String newText; + try { + newText = template.getText(computeProperties(matcher, offsetToProperty)); + } + catch (IOException e) { + LOG.error(e); + return; + } + try { + int offset = element.getTextRange().getStartOffset(); + PsiFile psiFile = element.getContainingFile(); + if (psiFile == null) return; + PsiDocumentManager documentManager = PsiDocumentManager.getInstance(psiFile.getProject()); + Document document = documentManager.getDocument(psiFile); + if (document == null) return; - element.delete(); - documentManager.doPostponedOperationsAndUnblockDocument(document); - documentManager.commitDocument(document); + element.delete(); + documentManager.doPostponedOperationsAndUnblockDocument(document); + documentManager.commitDocument(document); - document.insertString(offset, newText); - } - catch (IncorrectOperationException e) { - LOG.error(e); - } - catch (IllegalStateException e) { - LOG.error("Cannot create doc comment from text: '"+newText+"'",e); - } - } - - private Properties computeProperties(final Matcher matcher, final TIntObjectHashMap offsetToProperty) { - Properties properties = new Properties(FileTemplateManager.getInstance().getDefaultProperties()); - int[] offsets = offsetToProperty.keys(); - Arrays.sort(offsets); - - for (int i = 0; i < offsets.length; i++) { - final int offset = offsets[i]; - String propName = offsetToProperty.get(offset); - int groupNum = i + 2; // first group is whole doc comment - String propValue = matcher.group(groupNum); - properties.put(propName, propValue); - } - - return properties; + document.insertString(offset, newText); + } + catch (IncorrectOperationException e) { + LOG.error(e); + } + catch (IllegalStateException e) { + LOG.error("Cannot create doc comment from text: '" + newText + "'", e); + } + } + }); } }; - final LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, replaceTemplateFix); + + final ReplaceWithFileTemplateFix replaceTemplateFix = new ReplaceWithFileTemplateFix() { + public void applyFix(@NotNull final Project project, @NotNull ProblemDescriptor descriptor) { + runnable.run(); + } + }; + final LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, runnable); if (template.isDefault()) { return new LocalQuickFix[]{editFileTemplateFix}; } diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/MethodBodyChecker.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/MethodBodyChecker.java index 2a99d957e10f..3d060bf487a2 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/MethodBodyChecker.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/MethodBodyChecker.java @@ -23,6 +23,7 @@ import com.intellij.codeInspection.*; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.JavaTemplateUtil; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; @@ -168,31 +169,40 @@ public class MethodBodyChecker { return null; } - final ReplaceWithFileTemplateFix replaceWithFileTemplateFix = new ReplaceWithFileTemplateFix() { - public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - PsiType returnType = method.getReturnType(); - if (method.isConstructor() || returnType == null) return; - PsiCodeBlock body = method.getBody(); - if (body == null) return; - if (!CodeInsightUtil.preparePsiElementsForWrite(body)) return; - PsiClass aClass = method.getContainingClass(); - if (aClass == null) return; - List superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures(); - try { - PsiMethod templateMethod = JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createMethod("x", returnType); - setupMethodBody(superSignatures, templateMethod, aClass, false); - final PsiCodeBlock templateBody = templateMethod.getBody(); - if (templateBody == null) return; + final Runnable runnable = new Runnable() { + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + PsiType returnType = method.getReturnType(); + if (method.isConstructor() || returnType == null) return; + PsiCodeBlock body = method.getBody(); + if (body == null) return; + if (!CodeInsightUtil.preparePsiElementsForWrite(body)) return; + PsiClass aClass = method.getContainingClass(); + if (aClass == null) return; + List superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures(); + try { + PsiMethod templateMethod = JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createMethod("x", returnType); + setupMethodBody(superSignatures, templateMethod, aClass, false); + final PsiCodeBlock templateBody = templateMethod.getBody(); + if (templateBody == null) return; - PsiElement newBody = body.replace(templateBody); - CodeStyleManager.getInstance(project).reformat(newBody); - } - catch (IncorrectOperationException e) { - LOG.error(e); - } + PsiElement newBody = body.replace(templateBody); + CodeStyleManager.getInstance(aClass.getManager()).reformat(newBody); + } + catch (IncorrectOperationException e) { + LOG.error(e); + } + } + }); } }; - LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, replaceWithFileTemplateFix); + final ReplaceWithFileTemplateFix replaceWithFileTemplateFix = new ReplaceWithFileTemplateFix() { + public void applyFix(@NotNull final Project project, @NotNull ProblemDescriptor descriptor) { + runnable.run(); + } + }; + LocalQuickFix editFileTemplateFix = DefaultFileTemplateUsageInspection.createEditFileTemplateFix(template, runnable); if (template != null && template.isDefault()) { return new LocalQuickFix[]{editFileTemplateFix}; } From f43854de7a08097098d07882c0301caaa13205c5 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 17:08:30 +0400 Subject: [PATCH 20/29] IDEA-59487 --- .../ui/breakpoints/BreakpointManager.java | 6 +++--- .../ui/breakpoints/BreakpointWithHighlighter.java | 15 ++++++++++++--- .../editor/impl/EditorGutterComponentImpl.java | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointManager.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointManager.java index 7677d5097b5e..1aeb2a43bba8 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointManager.java @@ -589,7 +589,7 @@ public class BreakpointManager implements JDOMExternalizable { } } - catch (InvalidDataException e) { + catch (InvalidDataException ignored) { } final Element rulesGroup = parentNode.getChild(RULES_GROUP_NAME); @@ -827,7 +827,7 @@ public class BreakpointManager implements JDOMExternalizable { //interaction with RequestManagerImpl public void disableBreakpoints(final DebugProcessImpl debugProcess) { final List breakpoints = getBreakpoints(); - if (breakpoints.size() > 0) { + if (!breakpoints.isEmpty()) { final RequestManagerImpl requestManager = debugProcess.getRequestsManager(); for (Breakpoint breakpoint : breakpoints) { breakpoint.markVerified(requestManager.isVerified(breakpoint)); @@ -843,7 +843,7 @@ public class BreakpointManager implements JDOMExternalizable { public void enableBreakpoints(final DebugProcessImpl debugProcess) { final List breakpoints = getBreakpoints(); - if (breakpoints.size() > 0) { + if (!breakpoints.isEmpty()) { for (Breakpoint breakpoint : breakpoints) { breakpoint.markVerified(false); // clean cached state breakpoint.createRequest(debugProcess); diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java index 7ddf469f971b..e7344f03245d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java @@ -415,7 +415,8 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { } private void setupGutterRenderer() { - getHighlighter().setGutterIconRenderer(new MyGutterIconRenderer()); + MyGutterIconRenderer renderer = new MyGutterIconRenderer(getIcon(), getDescription()); + getHighlighter().setGutterIconRenderer(renderer); } public abstract Key getCategory(); @@ -623,13 +624,21 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { } private class MyGutterIconRenderer extends GutterIconRenderer { + private final Icon myIcon; + private final String myDescription; + + public MyGutterIconRenderer(Icon icon, String description) { + myIcon = icon; + myDescription = description; + } + @NotNull public Icon getIcon() { - return BreakpointWithHighlighter.this.getIcon(); + return myIcon; } public String getTooltipText() { - return getDescription(); + return myDescription; } public AnAction getClickAction() { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java index e81a3a7849c6..5f33b7b257a4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java @@ -539,7 +539,8 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse private void paintIconRow(int line, ArrayList row, final Graphics g) { processIconsRow(line, row, new LineGutterIconRendererProcessor() { public void process(int x, int y, GutterIconRenderer renderer) { - renderer.getIcon().paintIcon(EditorGutterComponentImpl.this, g, x, y); + Icon icon = renderer.getIcon(); + icon.paintIcon(EditorGutterComponentImpl.this, g, x, y); } }); } From e2f12d5e29a6d27bf80b6619789daca8e65dc3b6 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 17:09:33 +0400 Subject: [PATCH 21/29] dynamically add dead code extension --- .../UnusedSymbolLocalInspection.java | 37 +++++++- .../DynamicallyAddIgnoredAnnotations.java | 9 ++ .../daemon/LightAdvHighlightingJdk7Test.java | 87 ++++++++++++++++++- .../daemon/LightAdvHighlightingTest.java | 3 +- .../InspectionProjectProfileManager.java | 5 +- 5 files changed, 131 insertions(+), 10 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DynamicallyAddIgnoredAnnotations.java diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java index 513fd7296133..f85f171eb3bf 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java @@ -26,12 +26,19 @@ import com.intellij.codeInspection.BaseJavaLocalInspectionTool; import com.intellij.codeInspection.ex.UnfairLocalInspectionTool; import com.intellij.codeInspection.reference.EntryPoint; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.extensions.ExtensionPoint; +import com.intellij.openapi.extensions.ExtensionPointListener; import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.extensions.PluginDescriptor; import com.intellij.openapi.util.JDOMExternalizableStringList; +import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifierListOwner; import com.intellij.psi.util.PropertyUtil; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.ui.UIUtil; +import gnu.trove.THashSet; import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -49,7 +56,7 @@ import java.util.List; * Date: 17-Feb-2006 */ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool implements UnfairLocalInspectionTool { - private static final Collection STANDARD_INJECTION_ANNOS = Collections.unmodifiableCollection(new HashSet(Arrays.asList( + private static final Collection STANDARD_INJECTION_ANNOS = Collections.unmodifiableCollection(new THashSet(Arrays.asList( "javax.annotation.Resource", "javax.ejb.EJB", "javax.xml.ws.WebServiceRef", @@ -70,6 +77,28 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp public boolean REPORT_PARAMETER_FOR_PUBLIC_METHODS = true; public JDOMExternalizableStringList INJECTION_ANNOS = new JDOMExternalizableStringList(); + static { + final ExtensionPoint point = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.DEAD_CODE_TOOL); + point.addExtensionPointListener(new ExtensionPointListener() { + @Override + public void extensionAdded(@NotNull EntryPoint extension, @Nullable PluginDescriptor pluginDescriptor) { + extensionRemoved(extension, pluginDescriptor); + } + + @Override + public void extensionRemoved(@NotNull EntryPoint extension, @Nullable PluginDescriptor pluginDescriptor) { + ANNOTATIONS = null; + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + if (ApplicationManager.getApplication().isDisposed()) return; + InspectionProfileManager.getInstance().fireProfileChanged(null); + } + }); + } + }); + } + @NotNull public String getGroupDisplayName() { return GroupNames.DECLARATION_REDUNDANCY; @@ -113,7 +142,6 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp private JPanel myPanel; public OptionsPanel() { - myCheckLocalVariablesCheckBox.setSelected(LOCAL_VARIABLE); myCheckClassesCheckBox.setSelected(CLASS); myCheckFieldsCheckBox.setSelected(FIELD); @@ -169,8 +197,9 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp List annotations = ANNOTATIONS; if (annotations == null) { annotations = new ArrayList(); - for (Object extension : Extensions.getExtensions(ExtensionPoints.DEAD_CODE_TOOL)) { - final String[] ignoredAnnotations = ((EntryPoint)extension).getIgnoreAnnotations(); + EntryPoint[] extensions = Extensions.getExtensions(ExtensionPoints.DEAD_CODE_TOOL, null); + for (EntryPoint extension : extensions) { + final String[] ignoredAnnotations = extension.getIgnoreAnnotations(); if (ignoredAnnotations != null) { ContainerUtil.addAll(annotations, ignoredAnnotations); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DynamicallyAddIgnoredAnnotations.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DynamicallyAddIgnoredAnnotations.java new file mode 100644 index 000000000000..97d405de4af1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DynamicallyAddIgnoredAnnotations.java @@ -0,0 +1,9 @@ + +public class WithMain { + @MyAnno + public void myTestMethod(){} +} + +@interface MyAnno { + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java index 33ef19861114..a9f368178485 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java @@ -1,6 +1,21 @@ package com.intellij.codeInsight.daemon; +import com.intellij.ExtensionPoints; +import com.intellij.codeInsight.daemon.impl.HighlightInfo; +import com.intellij.codeInspection.LocalInspectionTool; +import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection; +import com.intellij.codeInspection.reference.EntryPoint; +import com.intellij.codeInspection.reference.RefElement; +import com.intellij.codeInspection.unusedSymbol.UnusedSymbolLocalInspection; +import com.intellij.lang.annotation.HighlightSeverity; +import com.intellij.openapi.extensions.ExtensionPoint; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.psi.PsiElement; +import org.jdom.Element; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +import java.util.List; /** * This class is for "lightweight" tests only, i.e. those which can run inside default light project set up @@ -13,12 +28,17 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { doTest(BASE_PATH + "/" + getTestName(false) + ".java", checkWarnings, checkInfos); } + @Override + protected LocalInspectionTool[] configureLocalInspectionTools() { + return new LocalInspectionTool[]{new UnusedSymbolLocalInspection()}; + } + public void testDuplicateAnnotations() throws Exception { doTest(false, false); } public void testSwitchByString() throws Exception { - doTest(true, false); + doTest(false, false); } public void testDiamondPos1() throws Exception { @@ -56,4 +76,69 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { public void testDiamondNeg5() throws Exception { doTest(false, false); } + + public void testDynamicallyAddIgnoredAnnotations() throws Exception { + ExtensionPoint point = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.DEAD_CODE_TOOL); + EntryPoint extension = new EntryPoint() { + @NotNull + @Override + public String getDisplayName() { + return "duh"; + } + + @Override + public boolean isEntryPoint(RefElement refElement, PsiElement psiElement) { + return false; + } + + @Override + public boolean isEntryPoint(PsiElement psiElement) { + return false; + } + + @Override + public boolean isSelected() { + return false; + } + + @Override + public void setSelected(boolean selected) { + + } + + @Override + public void readExternal(Element element) { + + } + + @Override + public void writeExternal(Element element) { + + } + + @Override + public String[] getIgnoreAnnotations() { + return new String[]{"MyAnno"}; + } + }; + + UnusedDeclarationInspection deadCodeInspection = new UnusedDeclarationInspection(); + enableInspectionTool(deadCodeInspection); + + doTest(true, false); + List infos = DaemonAnalyzerTestCase.filter(doHighlighting(), HighlightSeverity.WARNING); + assertEquals(2, infos.size()); // unused class and unused method + + try { + point.registerExtension(extension); + + infos = DaemonAnalyzerTestCase.filter(doHighlighting(), HighlightSeverity.WARNING); + HighlightInfo info = assertOneElement(infos); + assertEquals("Class 'WithMain' is never used", info.description); + } + finally { + point.unregisterExtension(extension); + } + } + } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java index 5a7f69e89bee..33621dc9e0ef 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java @@ -3,10 +3,10 @@ package com.intellij.codeInsight.daemon; import com.intellij.ExtensionPoints; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.accessStaticViaInstance.AccessStaticViaInstance; -import com.intellij.codeInspection.reference.EntryPoint; import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection; import com.intellij.codeInspection.deprecation.DeprecationInspection; import com.intellij.codeInspection.javaDoc.JavaDocLocalInspection; +import com.intellij.codeInspection.reference.EntryPoint; import com.intellij.codeInspection.reference.RefElement; import com.intellij.codeInspection.sillyAssignment.SillyAssignmentInspection; import com.intellij.codeInspection.uncheckedWarnings.UncheckedWarningLocalInspection; @@ -56,7 +56,6 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase { setLanguageLevel(LanguageLevel.JDK_1_4); } - @Override protected LocalInspectionTool[] configureLocalInspectionTools() { myUnusedSymbolLocalInspection = new UnusedSymbolLocalInspection(); diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/InspectionProjectProfileManager.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/InspectionProjectProfileManager.java index b414c83073c5..a41e807bbba8 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/InspectionProjectProfileManager.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/InspectionProjectProfileManager.java @@ -60,7 +60,6 @@ import java.util.Set; public class InspectionProjectProfileManager extends DefaultProjectProfileManager implements SeverityProvider, ProjectComponent, PersistentStateComponent { private final Map myName2Profile = new HashMap(); private final SeverityRegistrar mySeverityRegistrar; - private StatusBarEx myStatusBar; private TogglePopupHintsPanel myTogglePopupHintsPanel; public InspectionProjectProfileManager(final Project project, InspectionProfileManager inspectionProfileManager, DependencyValidationManager holder) { @@ -147,9 +146,9 @@ public class InspectionProjectProfileManager extends DefaultProjectProfileManage } public void projectOpened() { - myStatusBar = (StatusBarEx)WindowManager.getInstance().getStatusBar(myProject); + StatusBarEx statusBar = (StatusBarEx)WindowManager.getInstance().getStatusBar(myProject); myTogglePopupHintsPanel = new TogglePopupHintsPanel(myProject); - myStatusBar.addWidget(myTogglePopupHintsPanel, myProject); + statusBar.addWidget(myTogglePopupHintsPanel, myProject); StartupManager.getInstance(myProject).registerPostStartupActivity(new Runnable() { public void run() { final Set profiles = new HashSet(); From 28ec2dc19b4d4d7ec1a8b490896216c2227bcd07 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 7 Oct 2010 18:14:55 +0400 Subject: [PATCH 22/29] cleanup --- .../src/com/intellij/psi/stubs/SerializationManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java b/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java index ad4bdc75aa0d..930d9e7af5da 100644 --- a/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java +++ b/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java @@ -49,7 +49,7 @@ public class SerializationManagerImpl extends SerializationManager implements Ap private final Map, Integer> mySerializerToId = new HashMap, Integer>(); private final List> myAllSerializers = new ArrayList>(); private final AtomicBoolean myNameStorageCrashed = new AtomicBoolean(false); - private final File myFile = new File(PathManager.getSystemPath() + "/index/rep.names"); + private final File myFile = new File(PathManager.getIndexRoot(), "rep.names"); private boolean mySerializersLoaded = false; public SerializationManagerImpl() { From 8b6fe30a129028b0daaeedcc2d30fe0edac56dce Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Fri, 8 Oct 2010 11:12:31 +0400 Subject: [PATCH 23/29] IDEA-59553 Make it possible to select code blocks via clicks on gutter --- .../openapi/editor/ex/util/EditorUtil.java | 6 ++ .../openapi/editor/impl/EditorImpl.java | 99 +++++++++++++++++-- 2 files changed, 97 insertions(+), 8 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java index 6a6c9ec4fdfb..bc5b87810c7a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java @@ -131,6 +131,12 @@ public class EditorUtil { return resVisEnd.column; } + public static int getVisualLineEndOffset(@NotNull Editor editor, int line) { + VisualPosition endLineVisualPosition = new VisualPosition(line, getLastVisualLineColumnNumber(editor, line)); + LogicalPosition endLineLogicalPosition = editor.visualToLogicalPosition(endLineVisualPosition); + return editor.logicalPositionToOffset(endLineLogicalPosition); + } + public static float calcVerticalScrollProportion(Editor editor) { Rectangle viewArea = editor.getScrollingModel().getVisibleAreaOnScrollingFinished(); if (viewArea.height == 0) { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index db370ba6b4da..95138bd0afae 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -1036,13 +1036,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } public int offsetToVisualLine(int offset) { - int line = calcLogicalLineNumber(offset); - return logicalToVisualLine(line); - } - - private int logicalToVisualLine(int line) { - assertReadAccess(); - return logicalToVisualPosition(new LogicalPosition(line, 0)).line; + return logicalToVisualPosition(offsetToLogicalPosition(offset)).line; } @NotNull @@ -4219,6 +4213,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private class MyMouseAdapter extends MouseAdapter { + + private boolean mySelectionTweaked; + public void mousePressed(MouseEvent e) { requestFocus(); runMousePressedCommand(e); @@ -4248,6 +4245,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi TooltipController.getInstance().cancelTooltip(FOLDING_TOOLTIP_GROUP, e, true); } private void runMousePressedCommand(final MouseEvent e) { + mySelectionTweaked = false; myMousePressedEvent = e; EditorMouseEvent event = new EditorMouseEvent(EditorImpl.this, e, getMouseEventArea(e)); @@ -4287,6 +4285,13 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private void runMouseReleasedCommand(final MouseEvent e) { + if (!mySelectionTweaked) { + tweakSelectionIfNecessary(e); + } + if (e.isConsumed()) { + return; + } + myScrollingTimer.stop(); EditorMouseEvent event = new EditorMouseEvent(EditorImpl.this, e, getMouseEventArea(e)); for (EditorMouseListener listener : myMouseListeners) { @@ -4367,7 +4372,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (e.getSource() == myGutterComponent) { if (eventArea == EditorMouseEventArea.LINE_MARKERS_AREA || eventArea == EditorMouseEventArea.ANNOTATIONS_AREA || eventArea == EditorMouseEventArea.LINE_NUMBERS_AREA) { - myGutterComponent.mousePressed(e); + if (tweakSelectionIfNecessary(e)) { + mySelectionTweaked = true; + } + else { + myGutterComponent.mousePressed(e); + } if (e.isConsumed()) return; } x = 0; @@ -4447,6 +4457,79 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + /** + * Allows to answer if given event should tweak editor selection. + * + * @param e event for occurred mouse action + * @return true if action that produces given event will trigger editor selection change; false otherwise + */ + private boolean tweakSelectionEvent(@NotNull MouseEvent e) { + return getSelectionModel().hasSelection() && e.getButton() == MouseEvent.BUTTON1 && e.isShiftDown(); + } + + /** + * Checks if editor selection should be changed because of click at the given point at gutter and proceeds if necessary. + *

+ * The main idea is that selection can be changed during left mouse clicks with hold Shift button and we want + * to distinguish that situation from 'close line numbers gutter' action (activated by 'Shift+click' + * on gutter area). + * + * @param e event for mouse click on gutter area + * @return true if editor's selection is changed because of the click; false otherwise + */ + private boolean tweakSelectionIfNecessary(@NotNull MouseEvent e) { + if (!tweakSelectionEvent(e)) { + return false; + } + + int startSelectionOffset = getSelectionModel().getSelectionStart(); + int startVisLine = offsetToVisualLine(startSelectionOffset); + + int endSelectionOffset = getSelectionModel().getSelectionEnd(); + int endVisLine = offsetToVisualLine(endSelectionOffset - 1); + + int clickVisLine = xyToVisualPosition(e.getPoint()).line; + + if (clickVisLine < startVisLine) { + // Expand selection at backward direction. + int startOffset = logicalPositionToOffset(visualToLogicalPosition(new VisualPosition(clickVisLine, 0))); + getSelectionModel().setSelection(startOffset, endSelectionOffset); + getCaretModel().moveToOffset(startOffset); + } + else if (clickVisLine > endVisLine) { + // Expand selection at forward direction. + int endLineOffset = EditorUtil.getVisualLineEndOffset(this, clickVisLine); + getSelectionModel().setSelection(getSelectionModel().getSelectionStart(), endLineOffset); + getCaretModel().moveToOffset(endLineOffset, true); + } + else if (startVisLine == endVisLine) { + // Remove selection + getSelectionModel().removeSelection(); + } + else { + // Reduce selection in backward direction. + if (getSelectionModel().getLeadSelectionOffset() == endSelectionOffset) { + if (clickVisLine == startVisLine) { + clickVisLine++; + } + int startOffset = logicalPositionToOffset(visualToLogicalPosition(new VisualPosition(clickVisLine, 0))); + getSelectionModel().setSelection(startOffset, endSelectionOffset); + getCaretModel().moveToOffset(startOffset); + } + else { + // Reduce selection is forward direction. + if (clickVisLine == endVisLine) { + clickVisLine--; + } + int endLineOffset = EditorUtil.getVisualLineEndOffset(this, clickVisLine); + getSelectionModel().setSelection(startSelectionOffset, endLineOffset); + getCaretModel().moveToOffset(endLineOffset); + } + } + e.consume(); + return true; + } + private static final TooltipGroup FOLDING_TOOLTIP_GROUP = new TooltipGroup("FOLDING_TOOLTIP_GROUP", 10); private class MyMouseMotionListener implements MouseMotionListener { From 0bfaeefaac1b992c68a5595297fb4e82d0e32807 Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Fri, 8 Oct 2010 11:16:35 +0400 Subject: [PATCH 24/29] Avoid blinking while rendering --- .../debugger/ui/breakpoints/BreakpointTree.java | 2 +- .../intention/impl/config/IntentionSettingsTree.java | 2 +- .../codeInsight/template/impl/TemplateListPanel.java | 2 +- .../execution/impl/BaseExecuteBeforeRunDialog.java | 2 +- .../ui/InspectionsConfigTreeRenderer.java | 2 +- .../lang-impl/src/com/intellij/tools/ToolsPanel.java | 2 +- .../src/com/intellij/ui/table/JBTable.java | 2 +- platform/util/src/com/intellij/util/ui/UIUtil.java | 10 ++++++++++ .../openapi/vcs/changes/ui/IgnoredSettingsPanel.java | 2 +- .../impl/breakpoints/ui/XBreakpointsTree.java | 2 +- .../git4idea/checkin/GitPushActiveBranchesDialog.java | 2 +- .../src/git4idea/ui/GitConvertFilesDialog.java | 2 +- .../src/git4idea/ui/GitRefspecAddRefsDialog.java | 2 +- .../SelectIgnorePatternsToRemoveOnDeleteDialog.java | 2 +- 14 files changed, 23 insertions(+), 13 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointTree.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointTree.java index 59d027524862..14603acd135e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointTree.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointTree.java @@ -615,7 +615,7 @@ public class BreakpointTree extends CheckboxTree { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } if (value instanceof CheckedTreeNode) { final CheckedTreeNode node = (CheckedTreeNode)value; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java index 5adbeff09838..33c42af31fa1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsTree.java @@ -71,7 +71,7 @@ public abstract class IntentionSettingsTree { SimpleTextAttributes attributes = node.getUserObject() instanceof IntentionActionMetaData ? SimpleTextAttributes.REGULAR_ATTRIBUTES : SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES; final String text = getNodeText(node); final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); if (text != null) { SearchUtil.appendFragments(myFilter != null ? myFilter.getFilter() : null, text, diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateListPanel.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateListPanel.java index 5d10102b71a5..21138a092ccf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateListPanel.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateListPanel.java @@ -631,7 +631,7 @@ class TemplateListPanel extends JPanel { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } if (value instanceof TemplateImpl) { diff --git a/platform/lang-impl/src/com/intellij/execution/impl/BaseExecuteBeforeRunDialog.java b/platform/lang-impl/src/com/intellij/execution/impl/BaseExecuteBeforeRunDialog.java index 9274a6a5dfb0..638759607a8a 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/BaseExecuteBeforeRunDialog.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/BaseExecuteBeforeRunDialog.java @@ -314,7 +314,7 @@ public abstract class BaseExecuteBeforeRunDialog extend myCheckbox.setBackground(UIUtil.getTreeTextBackground()); setBackground(selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground()); - Color foreground = selected ? UIUtil.getTreeSelectionForeground() : UIUtil.getTreeTextForeground(); + final Color foreground = selected ? UIUtil.getTreeSelectionForeground() : UIUtil.getTreeTextForeground(); setForeground(foreground); myCheckbox.setForeground(foreground); myLabel.setForeground(foreground); diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionsConfigTreeRenderer.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionsConfigTreeRenderer.java index 84bf2ab96d2c..f80f845ad3a5 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionsConfigTreeRenderer.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionsConfigTreeRenderer.java @@ -49,7 +49,7 @@ abstract class InspectionsConfigTreeRenderer extends CheckboxTree.CheckboxTreeCe Object object = node.getUserObject(); final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); Color foreground = selected ? UIUtil.getTreeSelectionForeground() : node.isProperSetting ? Color.BLUE : UIUtil.getTreeTextForeground(); diff --git a/platform/lang-impl/src/com/intellij/tools/ToolsPanel.java b/platform/lang-impl/src/com/intellij/tools/ToolsPanel.java index 1027380ca1cf..c8074bd5912c 100644 --- a/platform/lang-impl/src/com/intellij/tools/ToolsPanel.java +++ b/platform/lang-impl/src/com/intellij/tools/ToolsPanel.java @@ -88,7 +88,7 @@ class ToolsPanel extends JPanel { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } if (object instanceof ToolsGroup) { diff --git a/platform/platform-api/src/com/intellij/ui/table/JBTable.java b/platform/platform-api/src/com/intellij/ui/table/JBTable.java index 90b2c6b3d1db..5c87d5c6f4cb 100644 --- a/platform/platform-api/src/com/intellij/ui/table/JBTable.java +++ b/platform/platform-api/src/com/intellij/ui/table/JBTable.java @@ -232,7 +232,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } if (!selected) return result; diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index 6b0642fd2a73..f5c428670d96 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -1382,6 +1382,16 @@ public class UIUtil { } } + /** + * Avoid blinking while changing background + */ + public static void changeBackGround(final JComponent component, final Color background) { + final Color oldBackGround = component.getBackground(); + if (background == null || !background.equals(oldBackGround)){ + component.setBackground(background); + } + } + public static class MacTreeUI extends BasicTreeUI { public static final String SOURCE_LIST_CLIENT_PROPERTY = "mac.ui.source.list"; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoredSettingsPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoredSettingsPanel.java index 2c75079ba1f9..1c98412461b5 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoredSettingsPanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoredSettingsPanel.java @@ -180,7 +180,7 @@ public class IgnoredSettingsPanel implements SearchableConfigurable { protected void customizeCellRenderer(JList list, Object value, int index, boolean selected, boolean hasFocus) { if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } IgnoredFileBean bean = (IgnoredFileBean) value; diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointsTree.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointsTree.java index 56f2664559de..9668ffeed2fe 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointsTree.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointsTree.java @@ -192,7 +192,7 @@ public class XBreakpointsTree> extends CheckboxTree { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } if (value instanceof BreakpointNode) { BreakpointNode node = (BreakpointNode)value; diff --git a/plugins/git4idea/src/git4idea/checkin/GitPushActiveBranchesDialog.java b/plugins/git4idea/src/git4idea/checkin/GitPushActiveBranchesDialog.java index 70b4a071aef9..47763dd6888b 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitPushActiveBranchesDialog.java +++ b/plugins/git4idea/src/git4idea/checkin/GitPushActiveBranchesDialog.java @@ -604,7 +604,7 @@ public class GitPushActiveBranchesDialog extends DialogWrapper { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()) { final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } ColoredTreeCellRenderer r = getTextRenderer(); if (!(value instanceof DefaultMutableTreeNode)) { diff --git a/plugins/git4idea/src/git4idea/ui/GitConvertFilesDialog.java b/plugins/git4idea/src/git4idea/ui/GitConvertFilesDialog.java index f1eba0ba66a7..4f8680ffd28d 100644 --- a/plugins/git4idea/src/git4idea/ui/GitConvertFilesDialog.java +++ b/plugins/git4idea/src/git4idea/ui/GitConvertFilesDialog.java @@ -355,7 +355,7 @@ public class GitConvertFilesDialog extends DialogWrapper { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } ColoredTreeCellRenderer r = getTextRenderer(); if (!(value instanceof CheckedTreeNode)) { diff --git a/plugins/git4idea/src/git4idea/ui/GitRefspecAddRefsDialog.java b/plugins/git4idea/src/git4idea/ui/GitRefspecAddRefsDialog.java index 2e601b29cb21..2b668f67a266 100644 --- a/plugins/git4idea/src/git4idea/ui/GitRefspecAddRefsDialog.java +++ b/plugins/git4idea/src/git4idea/ui/GitRefspecAddRefsDialog.java @@ -247,7 +247,7 @@ public class GitRefspecAddRefsDialog extends DialogWrapper { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()) { final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } final CheckedTreeNode node = (CheckedTreeNode)value; final Object userObject = node.getUserObject(); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SelectIgnorePatternsToRemoveOnDeleteDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SelectIgnorePatternsToRemoveOnDeleteDialog.java index ca830d30be47..f34cbb0b5209 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SelectIgnorePatternsToRemoveOnDeleteDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SelectIgnorePatternsToRemoveOnDeleteDialog.java @@ -187,7 +187,7 @@ public class SelectIgnorePatternsToRemoveOnDeleteDialog extends DialogWrapper { // Fix GTK backround if (UIUtil.isUnderGTKLookAndFeel()){ final Color background = selected ? UIUtil.getTreeSelectionBackground() : UIUtil.getTreeTextBackground(); - setBackground(background); + UIUtil.changeBackGround(this, background); } final ColoredTreeCellRenderer textRenderer = getTextRenderer(); if (value instanceof MyConsumer) { From 4bacc24fc4237540a8ac1df44a3463eee2970f93 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Fri, 8 Oct 2010 11:20:24 +0400 Subject: [PATCH 25/29] EA-22395 - SIOOBE: CharArrayUtil.shiftForward --- .../lang-impl/src/com/intellij/formatting/FormatterImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java b/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java index 20de75dc2040..efdad42f26d1 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java @@ -301,7 +301,8 @@ public class FormatterImpl extends FormatterEx final int defaultOffset = offset - whiteSpace.getLength() + newWS.length(); if (wsContainsCaret) { - final int ws = whiteSpace.getStartOffset() + CharArrayUtil.shiftForward(newWS, lineStartOffset - whiteSpace.getStartOffset(), " \t"); + final int ws = whiteSpace.getStartOffset() + + CharArrayUtil.shiftForward(newWS, Math.max(0, lineStartOffset - whiteSpace.getStartOffset()), " \t"); return Math.max(defaultOffset, ws); } else { return defaultOffset; From 6ca8860fc9b8b1cc0705ac6d9ae6912d60655c85 Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 8 Oct 2010 11:41:52 +0400 Subject: [PATCH 26/29] IDEA-59461: ctrl-E used twice in Project Settings - Modules - Dependencies --- .../ui/configuration/classpath/ClasspathPanelImpl.java | 6 +++--- .../src/messages/ProjectBundle.properties | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java index 046e26fdc72e..293cde8ab466 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java @@ -235,9 +235,9 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { final JButton addButton = new JButton(ProjectBundle.message("button.add")); final JButton removeButton = new JButton(ProjectBundle.message("button.remove")); - myEditButton = new JButton(ProjectBundle.message("button.edit")); - final JButton upButton = new JButton(ProjectBundle.message("button.move.up")); - final JButton downButton = new JButton(ProjectBundle.message("button.move.down")); + myEditButton = new JButton(ProjectBundle.message("module.classpath.button.edit")); + final JButton upButton = new JButton(ProjectBundle.message("module.classpath.button.move.up")); + final JButton downButton = new JButton(ProjectBundle.message("module.classpath.button.move.down")); final JButton analyzeButton = isAnalyzeShown ? new JButton(ProjectBundle.message("classpath.panel.analyze")) : null; final JPanel panel = new JPanel(new GridBagLayout()); diff --git a/platform/platform-resources-en/src/messages/ProjectBundle.properties b/platform/platform-resources-en/src/messages/ProjectBundle.properties index a44470559692..2412db92b7d6 100644 --- a/platform/platform-resources-en/src/messages/ProjectBundle.properties +++ b/platform/platform-resources-en/src/messages/ProjectBundle.properties @@ -189,15 +189,15 @@ module.remove.action=Remove module.remove.last.confirmation=Are you sure you want to remove the only module from this project?\nNo files will be deleted on disk. module.remove.confirmation=Remove module \"{0}\" from the project?\nNo files will be deleted on disk. module.remove.confirmation.title=Remove Module -button.edit=&Edit... +module.classpath.button.edit=Ed&it... module.libraries.include.all.button=Include All module.libraries.exclude.all.button=Exclude All modules.order.export.title=Order/Export modules.classpath.title=Dependencies modules.order.export.export.column=Export modules.order.export.scope.column=Scope -button.move.up=Move &Up -button.move.down=Move &Down +module.classpath.button.move.up=Move &Up +module.classpath.button.move.down=Move &Down module.remove.confirmation.prompt=Remove {1, choice, 1#Module|2#Modules} {0} from the project?\nNo files will be deleted. module.remove.command=Detach module from project module.new.action=New Module From 70c7ec72aef3dd0d9612575ad84eb3eed77e777f Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 8 Oct 2010 11:42:13 +0400 Subject: [PATCH 27/29] IDEA-59517: AE at LibraryImpl.getFiles() on deleting just added library --- .../libraries/impl/LibraryPresentationManagerImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/impl/LibraryPresentationManagerImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/impl/LibraryPresentationManagerImpl.java index 1e00ecdfd78d..1f4c51957948 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/impl/LibraryPresentationManagerImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/impl/LibraryPresentationManagerImpl.java @@ -17,6 +17,7 @@ package com.intellij.openapi.roots.ui.configuration.libraries.impl; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderRootType; +import com.intellij.openapi.roots.impl.libraries.LibraryEx; import com.intellij.openapi.roots.libraries.*; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; @@ -124,6 +125,9 @@ public class LibraryPresentationManagerImpl extends LibraryPresentationManager { @NotNull private static VirtualFile[] getLibraryFiles(@NotNull Library library, @Nullable StructureConfigurableContext context) { + if (((LibraryEx)library).isDisposed()) { + return VirtualFile.EMPTY_ARRAY; + } return context != null ? context.getLibraryFiles(library, OrderRootType.CLASSES) : library.getFiles(OrderRootType.CLASSES); } From 9b66d862a62085a53b04e0b9007902fa0fac7588 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Fri, 8 Oct 2010 12:06:22 +0400 Subject: [PATCH 28/29] undo: improved command invalidation --- .../intellij/openapi/command/impl/CommandMerger.java | 12 +++++++++++- .../openapi/command/impl/UndoManagerImpl.java | 3 ++- .../intellij/openapi/command/impl/UndoableGroup.java | 6 ++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java index b83a19a8daa9..dbac41645685 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java @@ -35,6 +35,7 @@ public class CommandMerger { private boolean myForcedGlobal = false; private boolean myTransparent = false; private String myCommandName = null; + private boolean myValid = true; private List myCurrentActions = new ArrayList(); private Set myAffectedDocuments = new THashSet(); private EditorAndState myStateBefore; @@ -102,6 +103,7 @@ public class CommandMerger { myTransparent = nextCommandToMerge.myTransparent; } } + myValid &= nextCommandToMerge.myValid; myForcedGlobal |= nextCommandToMerge.myForcedGlobal; myCurrentActions.addAll(nextCommandToMerge.myCurrentActions); myAffectedDocuments.addAll(nextCommandToMerge.myAffectedDocuments); @@ -129,7 +131,8 @@ public class CommandMerger { myCurrentActions, myManager.nextCommandTimestamp(), myUndoConfirmationPolicy, - isTransparent())); + isTransparent(), + myValid)); } reset(); @@ -142,6 +145,7 @@ public class CommandMerger { myForcedGlobal = false; myTransparent = false; myCommandName = null; + myValid = true; myStateAfter = null; myStateBefore = null; myUndoConfirmationPolicy = UndoConfirmationPolicy.DEFAULT; @@ -244,4 +248,10 @@ public class CommandMerger { public void setAfterState(EditorAndState state) { myStateAfter = state; } + + public void invalidateActionsFor(DocumentReference ref) { + if (myAffectedDocuments.contains(ref)) { + myValid = false; + } + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java index 06771a8631d5..1bc2839b9d56 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java @@ -286,7 +286,8 @@ public class UndoManagerImpl extends UndoManager implements ProjectComponent, Ap public void invalidateActionsFor(DocumentReference ref) { ApplicationManager.getApplication().assertIsDispatchThread(); - //LOG.assertTrue(!isInsideCommand()); + myMerger.invalidateActionsFor(ref); + if (myCurrentMerger != null) myCurrentMerger.invalidateActionsFor(ref); myUndoStacksHolder.invalidateActionsFor(ref); myRedoStacksHolder.invalidateActionsFor(ref); } diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoableGroup.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoableGroup.java index 24121177f499..ffcab6183080 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoableGroup.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoableGroup.java @@ -51,7 +51,7 @@ class UndoableGroup { private final Project myProject; private final UndoConfirmationPolicy myConfirmationPolicy; - private boolean myValid = true; + private boolean myValid; public UndoableGroup(String commandName, boolean isGlobal, @@ -61,7 +61,8 @@ class UndoableGroup { List actions, int commandTimestamp, UndoConfirmationPolicy confirmationPolicy, - boolean transparent) { + boolean transparent, + boolean valid) { myCommandName = commandName; myGlobal = isGlobal; myCommandTimestamp = commandTimestamp; @@ -71,6 +72,7 @@ class UndoableGroup { myStateAfter = stateAfter; myConfirmationPolicy = confirmationPolicy; myTransparent = transparent; + myValid = valid; } public boolean isGlobal() { From 8079021791eff34f36d6c936fa97365bef13a8aa Mon Sep 17 00:00:00 2001 From: Alexey Pegov Date: Fri, 8 Oct 2010 12:30:50 +0400 Subject: [PATCH 29/29] EA-22397 - assert: ColorAndFontDescriptionPanel.reset --- .../options/colors/ColorAndFontDescriptionPanel.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontDescriptionPanel.java b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontDescriptionPanel.java index 89c5aa902d32..f88ac48e7699 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontDescriptionPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontDescriptionPanel.java @@ -67,6 +67,15 @@ public class ColorAndFontDescriptionPanel extends JPanel { add(settingsPanel, BorderLayout.CENTER); setBorder(BorderFactory.createEmptyBorder(4, 0, 4, 4)); + + myEffectsCombo.setRenderer(new DefaultListCellRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + if (value == null) value = "Invalid"; + return super.getListCellRendererComponent(list, value, index, isSelected, + cellHasFocus); + } + }); } private JPanel createSettingsPanel() { @@ -366,7 +375,7 @@ public class ColorAndFontDescriptionPanel extends JPanel { myEffectsCombo.setSelectedItem(BOLD_DOTTED_LINE_EFFECT); } else { - LOG.assertTrue(false); + myEffectsCombo.setSelectedItem(null); } updatingEffects = false; }