From 24d1f797d8a69ccd33092d95ae8979fffcd0104d Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 10 Jan 2012 12:27:13 +0100 Subject: [PATCH 1/7] spaces (IDEA-79610) --- .../execution/junit2/configuration/JUnitConfigurable.form | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form index fa8e1f60e5b8..90db52f6e012 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form @@ -8,8 +8,7 @@ - - + @@ -19,6 +18,7 @@ + @@ -31,6 +31,7 @@ + From 1056c61140a27e75d381f9ee63f85e271b66867f Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 10 Jan 2012 13:14:02 +0100 Subject: [PATCH 2/7] paint in AWT thread (DEA-79489) --- .../packageDependencies/ui/FileTreeModelBuilder.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java index 32396c8643e1..2d5ad682d109 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java @@ -448,7 +448,7 @@ public class FileTreeModelBuilder { PackageDependenciesNode directoryNode = myModuleDirNodes.get(virtualFile); if (directoryNode != null) { if (myCompactEmptyMiddlePackages) { - DirectoryNode nestedNode = ((DirectoryNode)directoryNode).getCompactedDirNode(); + final DirectoryNode nestedNode = ((DirectoryNode)directoryNode).getCompactedDirNode(); if (nestedNode != null) { //decompact boolean expand = false; if (myTree != null){ @@ -465,7 +465,12 @@ public class FileTreeModelBuilder { parentWrapper.add(nestedNode); nestedNode.removeUpReference(); if (myTree != null && expand) { - myTree.expandPath(new TreePath(nestedNode.getPath())); + final Runnable expandRunnable = new Runnable() { + public void run() { + myTree.expandPath(new TreePath(nestedNode.getPath())); + } + }; + SwingUtilities.invokeLater(expandRunnable); } return parentWrapper; } From 17a2155267ab9b4e54fcc5e624dbf563d9fbcf07 Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Tue, 10 Jan 2012 16:40:23 +0400 Subject: [PATCH 3/7] remove incorrect caching in @delegate processing --- .../ast/DelegatedMethodsContributor.java | 88 +++++-------------- 1 file changed, 24 insertions(+), 64 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java index 267617a9d1df..8c39af2ba2ce 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java @@ -20,7 +20,10 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.impl.light.LightMethodBuilder; import com.intellij.psi.impl.light.LightMirrorMethod; -import com.intellij.psi.util.*; +import com.intellij.psi.util.CachedValue; +import com.intellij.psi.util.MethodSignature; +import com.intellij.psi.util.PsiUtil; +import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.hash.HashSet; import org.jetbrains.annotations.NotNull; @@ -154,35 +157,20 @@ public class DelegatedMethodsContributor extends AstTransformContributor { /** * The key method of contributor. It collects all delegating methods of clazz * - * If the return value is null, the result can be cached. It means that no already processed classes was touched by current processing. In - * other case some delegated methods can be missed. - * * @param clazz class to process * @param processed already visited classes * @param collector result collection - * @return classes which were visited during current processing and were in processed at the very beginning of processing */ - @Nullable - private static Set process(PsiClass clazz, - PsiSubstitutor superClassSubsitutor, - Set processed, - List collector, - GrTypeDefinition classToDelegateTo) { - final CachedValue data = clazz.getUserData(CACHED_DELEGATED_METHODS); - if (data != null) { - ContainerUtil.addAll(collector, data.getValue()); - return null; - } - - final Set myProcessed = new HashSet(); - myProcessed.addAll(processed); - - Set alreadyVisited = null; + private static void process(PsiClass clazz, + PsiSubstitutor superClassSubsitutor, + Set processed, + List collector, + GrTypeDefinition classToDelegateTo) { final List result = new ArrayList(); //process super methods before delegated methods for (PsiClassType superType : clazz.getSuperTypes()) { - alreadyVisited = processClassInner(superType, superClassSubsitutor, true, result, classToDelegateTo, processed, alreadyVisited); + processClassInner(superType, superClassSubsitutor, true, result, classToDelegateTo, processed); } if (clazz instanceof GrTypeDefinition) { @@ -194,64 +182,36 @@ public class DelegatedMethodsContributor extends AstTransformContributor { final PsiType type = field.getDeclaredType(); if (!(type instanceof PsiClassType)) continue; - alreadyVisited = processClassInner((PsiClassType)type, superClassSubsitutor, shouldDelegateDeprecated(delegate), result, classToDelegateTo, processed, alreadyVisited); + processClassInner((PsiClassType)type, superClassSubsitutor, shouldDelegateDeprecated(delegate), result, classToDelegateTo, processed); } } collector.addAll(result); - - if (alreadyVisited == null || !ContainerUtil.intersects(myProcessed, alreadyVisited)) { - final CachedValue value = - CachedValuesManager.getManager(clazz.getProject()).createCachedValue(new CachedValueProvider() { - @Override - public Result compute() { - return Result.create(result.toArray(new PsiMethod[result.size()]), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT); - } - }); - clazz.putUserData(CACHED_DELEGATED_METHODS, value); - } - - return alreadyVisited; } - @Nullable - private static Set processClassInner(PsiClassType type, - PsiSubstitutor superClassSubstitutor, - boolean deprecated, - List result, - GrTypeDefinition classToDelegateTo, - Set processed, - @Nullable Set alreadyVisited) { + private static void processClassInner(PsiClassType type, + PsiSubstitutor superClassSubstitutor, + boolean deprecated, + List result, + GrTypeDefinition classToDelegateTo, + Set processed) { final PsiClassType.ClassResolveResult resolveResult = type.resolveGenerics(); final PsiClass psiClass = resolveResult.getElement(); - if (psiClass == null) return alreadyVisited; + if (psiClass == null) return; + final String qname = psiClass.getQualifiedName(); - if (CommonClassNames.JAVA_LANG_OBJECT.equals(qname)) return alreadyVisited; - if (GroovyCommonClassNames.GROOVY_OBJECT.equals(qname)) return alreadyVisited; - if (GroovyCommonClassNames.GROOVY_OBJECT_SUPPORT.equals(qname)) return alreadyVisited; + if (CommonClassNames.JAVA_LANG_OBJECT.equals(qname)) return; + if (GroovyCommonClassNames.GROOVY_OBJECT.equals(qname)) return; + if (GroovyCommonClassNames.GROOVY_OBJECT_SUPPORT.equals(qname)) return; final PsiSubstitutor substitutor = TypesUtil.composeSubstitutors(resolveResult.getSubstitutor(), superClassSubstitutor); - if (processed.contains(psiClass)) { - if (alreadyVisited == null) alreadyVisited = new HashSet(); - alreadyVisited.add(psiClass); - return alreadyVisited; - } + if (processed.contains(psiClass)) return; processed.add(psiClass); collectMethods(psiClass, substitutor, deprecated, classToDelegateTo, result); - final Set _alreadyVisited = process(psiClass, substitutor, processed, result, classToDelegateTo); - - if (_alreadyVisited != null) { - if (alreadyVisited == null) { - alreadyVisited = _alreadyVisited; - } - else { - alreadyVisited.addAll(_alreadyVisited); - } - } - return alreadyVisited; + process(psiClass, substitutor, processed, result, classToDelegateTo); } private static void collectMethods(PsiClass currentClass, From d5c3c5209d95b713e129f9d90cce950d4fe5999a Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 10 Jan 2012 16:42:14 +0400 Subject: [PATCH 4/7] border removed for "Messages" toolwindow --- .../src/com/intellij/execution/impl/ConsoleViewImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index ba8cd9f2fbdd..ae481741180c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -409,6 +409,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo if (myEditor == null) { myEditor = createEditor(); + myEditor.getScrollPane().setBorder(null); myHyperlinks = new EditorHyperlinkSupport(myEditor, myProject); requestFlushImmediately(); myMainPanel.add(createCenterComponent(), BorderLayout.CENTER); From 8c2181a0c6a47e49c0e9cef71f09be39e0893b42 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 10 Jan 2012 16:49:02 +0400 Subject: [PATCH 5/7] extra borders removed --- .../src/com/intellij/ide/util/FileStructurePopup.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java index fe4c75286032..7ac417792b1c 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java @@ -43,10 +43,7 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.ui.ScrollPaneFactory; -import com.intellij.ui.SimpleTextAttributes; -import com.intellij.ui.SpeedSearchComparator; -import com.intellij.ui.TreeSpeedSearch; +import com.intellij.ui.*; import com.intellij.ui.popup.AbstractPopup; import com.intellij.ui.speedSearch.ElementFilter; import com.intellij.ui.speedSearch.SpeedSearchUtil; @@ -397,7 +394,9 @@ public class FileStructurePopup implements Disposable { } myPrefferedWidth = Math.max(comboPanel.getPreferredSize().width, 350); panel.add(comboPanel, BorderLayout.NORTH); - panel.add(ScrollPaneFactory.createScrollPane(myAbstractTreeBuilder.getTree()), BorderLayout.CENTER); + JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myAbstractTreeBuilder.getTree()); + scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.TOP | SideBorder.BOTTOM)); + panel.add(scrollPane, BorderLayout.CENTER); panel.add(createSouthPanel(), BorderLayout.SOUTH); return panel; From 5107c42fe5710be99b7be9feb386ce8768cbda58 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Tue, 10 Jan 2012 16:54:06 +0300 Subject: [PATCH 6/7] IDEA-79738 (Groovy: Nika: Exception throws when closing a project with Groovy plugin enabled.) --- .../plugins/groovy/mvc/MvcModuleStructureSynchronizer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java index 2cdb96c9d68a..04321da4d48d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java @@ -227,6 +227,7 @@ public class MvcModuleStructureSynchronizer extends AbstractProjectComponent { ApplicationManager.getApplication().assertIsDispatchThread(); synchronized (myActions) { if (myActions.isEmpty()) { + if (myProject.isDisposed()) return; StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new DumbAwareRunnable() { public void run() { ApplicationManager.getApplication().invokeLater(new Runnable() { From 8d17039a5de8886c1a05346b5dee4f988a9625fc Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Tue, 10 Jan 2012 19:55:57 +0400 Subject: [PATCH 7/7] capability to select 'Project Structure' -> 'Global Libraries' programmatically by means of ProjectSettingsService.openGlobalLibraries --- .../ui/configuration/IdeaProjectSettingsService.java | 9 +++++++++ .../ui/configuration/ProjectStructureConfigurable.java | 5 +++++ .../roots/ui/configuration/ProjectSettingsService.java | 3 +++ 3 files changed, 17 insertions(+) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java index 95b0458d257a..f7d635a2a15f 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/IdeaProjectSettingsService.java @@ -49,6 +49,15 @@ public class IdeaProjectSettingsService extends ProjectSettingsService implement }); } + public void openGlobalLibraries() { + final ProjectStructureConfigurable config = ProjectStructureConfigurable.getInstance(myProject); + ShowSettingsUtil.getInstance().editConfigurable(myProject, config, new Runnable() { + public void run() { + config.selectGlobalLibraries(true); + } + }); + } + @Override public boolean canOpenModuleSettings() { return true; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java index fca175a3bee8..7988292deeaa 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java @@ -413,6 +413,11 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se return navigateTo(place, requestFocus); } + public ActionCallback selectGlobalLibraries(final boolean requestFocus) { + Place place = createPlaceFor(myGlobalLibrariesConfig); + return navigateTo(place, requestFocus); + } + public ActionCallback selectProjectOrGlobalLibrary(@NotNull Library library, boolean requestFocus) { Place place = createProjectOrGlobalLibraryPlace(library); return navigateTo(place, requestFocus); diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ProjectSettingsService.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ProjectSettingsService.java index 5c016d814afd..0a0f04fd7f67 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ProjectSettingsService.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ProjectSettingsService.java @@ -42,6 +42,9 @@ public class ProjectSettingsService { public void openProjectSettings() { } + public void openGlobalLibraries() { + } + public void openModuleSettings(final Module module) { }