From 5e3eba8f48b051ef329d95d944ef664267146aa6 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 27 Feb 2012 13:34:17 +0400 Subject: [PATCH] cleanup --- .../impl/UpdateFoldRegionsOperation.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java index 418328c11458..e2e051772a6c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java @@ -30,7 +30,6 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.SmartPointerManager; -import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -68,10 +67,11 @@ class UpdateFoldRegionsOperation implements Runnable { myForInjected = forInjected; } + @Override public void run() { EditorFoldingInfo info = EditorFoldingInfo.get(myEditor); FoldingModelEx foldingModel = (FoldingModelEx)myEditor.getFoldingModel(); - HashMap rangeToExpandStatusMap = new HashMap(); + Map rangeToExpandStatusMap = newTroveMap(); removeInvalidRegions(info, foldingModel, rangeToExpandStatusMap); @@ -85,7 +85,9 @@ class UpdateFoldRegionsOperation implements Runnable { myEditor.putUserData(ALLOW_FOLDING_ON_CARET_LINE_KEY, false); } - private static void applyExpandStatus(List newRegions, Map shouldExpand, Map groupExpand) { + private static void applyExpandStatus(@NotNull List newRegions, + @NotNull Map shouldExpand, + @NotNull Map groupExpand) { for (final FoldRegion region : newRegions) { final FoldingGroup group = region.getGroup(); final Boolean expanded = group == null ? shouldExpand.get(region) : groupExpand.get(group); @@ -96,11 +98,11 @@ class UpdateFoldRegionsOperation implements Runnable { } } - private List addNewRegions(EditorFoldingInfo info, - FoldingModelEx foldingModel, - Map rangeToExpandStatusMap, - Map shouldExpand, - Map groupExpand) { + private List addNewRegions(@NotNull EditorFoldingInfo info, + @NotNull FoldingModelEx foldingModel, + @NotNull Map rangeToExpandStatusMap, + @NotNull Map shouldExpand, + @NotNull Map groupExpand) { List newRegions = arrayList(); SmartPointerManager smartPointerManager = SmartPointerManager.getInstance(myProject); for (PsiElement element : myElementsToFoldMap.keySet()) { @@ -165,7 +167,9 @@ class UpdateFoldRegionsOperation implements Runnable { return oldStatus == null || caretInside || oldStatus.booleanValue(); } - private void removeInvalidRegions(EditorFoldingInfo info, FoldingModelEx foldingModel, HashMap rangeToExpandStatusMap) { + private void removeInvalidRegions(@NotNull EditorFoldingInfo info, + @NotNull FoldingModelEx foldingModel, + @NotNull Map rangeToExpandStatusMap) { List toRemove = arrayList(); InjectedLanguageManager injectedManager = InjectedLanguageManager.getInstance(myProject); for (FoldRegion region : foldingModel.getAllFoldRegions()) { @@ -175,13 +179,13 @@ class UpdateFoldRegionsOperation implements Runnable { boolean isInjected = injectedManager.isInjectedFragment(containingFile); if (isInjected != myForInjected) continue; } - if (element != null && myElementsToFoldMap.containsKey(element)) { - final Collection descriptors = myElementsToFoldMap.get(element); + final Collection descriptors; + if (element != null && !(descriptors = myElementsToFoldMap.get(element)).isEmpty()) { boolean matchingDescriptorFound = false; - for (FoldingDescriptor descriptor : descriptors.toArray(new FoldingDescriptor[descriptors.size()])) { + FoldingDescriptor[] array = descriptors.toArray(new FoldingDescriptor[descriptors.size()]); + for (FoldingDescriptor descriptor : array) { TextRange range = descriptor.getRange(); - if (region.getStartOffset() == range.getStartOffset() - && region.getEndOffset() == range.getEndOffset()) { + if (TextRange.areSegmentsEqual(region, range)) { matchingDescriptorFound = true; if (!region.isValid() || region.getGroup() != null || @@ -204,9 +208,6 @@ class UpdateFoldRegionsOperation implements Runnable { } toRemove.add(region); } - if (myElementsToFoldMap.get(element).isEmpty()) { - myElementsToFoldMap.remove(element); - } } else if (region.isValid() && info.isLightRegion(region)) { boolean isExpanded = region.isExpanded();