From 6dca2d11de4715120623a66362a0bd0c195ca030 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Mon, 19 Dec 2011 16:30:11 +0400 Subject: [PATCH] optimize imports for template languages (JSP, JSPX, Facelets) --- .../codeInsight/actions/LayoutCodeDialog.java | 2 +- .../actions/OptimizeImportsProcessor.java | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/LayoutCodeDialog.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/LayoutCodeDialog.java index cfbc5907b75d..4e1f6f7deccb 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/LayoutCodeDialog.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/LayoutCodeDialog.java @@ -103,7 +103,7 @@ public class LayoutCodeDialog extends DialogWrapper { myCbIncludeSubdirs.setEnabled(myRbDirectory.isSelected()); myCbOptimizeImports.setEnabled( !myRbSelectedText.isSelected() && - !(myFile != null && LanguageImportStatements.INSTANCE.forFile(myFile) == null && myRbFile.isSelected())); + !(myFile != null && LanguageImportStatements.INSTANCE.forFile(myFile).isEmpty() && myRbFile.isSelected())); final boolean canTargetVcsChanges = canTargetVcsRegions(); myCbOnlyVcsChangedRegions.setEnabled(canTargetVcsChanges); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java index d16b9dcf3b46..f6ce2f44134e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java @@ -17,7 +17,6 @@ package com.intellij.codeInsight.actions; import com.intellij.codeInsight.CodeInsightBundle; -import com.intellij.lang.ImportOptimizer; import com.intellij.lang.LanguageImportStatements; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -27,6 +26,7 @@ import com.intellij.psi.PsiFile; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; +import java.util.List; import java.util.concurrent.FutureTask; public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { @@ -58,11 +58,16 @@ public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { } @NotNull - protected FutureTask preprocessFile(@NotNull final PsiFile file, boolean processChangedTextOnly) - throws IncorrectOperationException - { - final ImportOptimizer optimizer = LanguageImportStatements.INSTANCE.forFile(file); - Runnable runnable = optimizer != null ? optimizer.processFile(file) : EmptyRunnable.getInstance(); + protected FutureTask preprocessFile(@NotNull final PsiFile file, boolean processChangedTextOnly) throws IncorrectOperationException { + final List optimizers = LanguageImportStatements.INSTANCE.forFile(file); + Runnable runnable = optimizers.isEmpty() ? EmptyRunnable.getInstance() : new Runnable() { + @Override + public void run() { + for (Runnable optimizer : optimizers) { + optimizer.run(); + } + } + }; return new FutureTask(runnable, true); } }