From 96921f655e1113b3a6e71609ca9841bb569c244d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Oct 2009 19:42:02 +0400 Subject: [PATCH] ant generator: generate ant file action is hidden when no build extensions are available --- .../actions/GenerateAntBuildAction.java | 8 +++--- .../compiler/ant/ChunkBuildExtension.java | 25 ++++++++++++++++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/actions/GenerateAntBuildAction.java b/java/compiler/impl/src/com/intellij/compiler/actions/GenerateAntBuildAction.java index fc974652e04f..f1cb28a9d51b 100644 --- a/java/compiler/impl/src/com/intellij/compiler/actions/GenerateAntBuildAction.java +++ b/java/compiler/impl/src/com/intellij/compiler/actions/GenerateAntBuildAction.java @@ -26,8 +26,8 @@ import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.compiler.CompilerBundle; import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.Task; import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; @@ -53,8 +53,9 @@ public class GenerateAntBuildAction extends CompileActionBase { final GenerationOptionsImpl[] genOptions = {null}; Runnable runnable = new Runnable() { public void run() { - genOptions[0] = new GenerationOptionsImpl(project, dialog.isGenerateSingleFileBuild(), dialog.isFormsCompilationEnabled(), dialog.isBackupFiles(), - dialog.isForceTargetJdk(), dialog.isRuntimeClasspathInlined(), dialog.isIdeaHomeGenerated(), names); + genOptions[0] = new GenerationOptionsImpl(project, dialog.isGenerateSingleFileBuild(), dialog.isFormsCompilationEnabled(), + dialog.isBackupFiles(), dialog.isForceTargetJdk(), dialog.isRuntimeClasspathInlined(), + dialog.isIdeaHomeGenerated(), names); } }; if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(runnable, "Analyzing project structure...", true, project)) { @@ -105,6 +106,7 @@ public class GenerateAntBuildAction extends CompileActionBase { Presentation presentation = event.getPresentation(); Project project = PlatformDataKeys.PROJECT.getData(event.getDataContext()); presentation.setEnabled(project != null); + presentation.setVisible(ChunkBuildExtension.hasBuildExtensions()); } private void generate(final Project project, final GenerationOptions genOptions) { diff --git a/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java b/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java index 17c0130fcfbf..48bba0f43159 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java +++ b/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java @@ -17,18 +17,23 @@ package com.intellij.compiler.ant; import com.intellij.ExtensionPoints; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import java.util.List; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public abstract class ChunkBuildExtension { + /** + * true, if there are build extensions for the modules, the variable is accessed only from AWT thread + */ + private static Boolean myHasExtensions = null; + public static final ExtensionPointName EP_NAME = ExtensionPointName.create(ExtensionPoints.ANT_BUILD_GEN); public abstract boolean haveSelfOutputs(Module[] modules); @@ -51,6 +56,17 @@ public abstract class ChunkBuildExtension { return false; } + /** + * @return true if there are build extensions registered + */ + public static boolean hasBuildExtensions() { + if (myHasExtensions == null) { + ChunkBuildExtension[] extensions = Extensions.getRootArea().getExtensionPoint(EP_NAME).getExtensions(); + myHasExtensions = extensions.length != 0; + } + return myHasExtensions; + } + public static String[] getAllTargets(ModuleChunk chunk) { List allTargets = new ArrayList(); final ChunkBuildExtension[] extensions = Extensions.getRootArea().getExtensionPoint(EP_NAME).getExtensions(); @@ -71,8 +87,9 @@ public abstract class ChunkBuildExtension { } } - public static void generateAllProperties(final PropertyFileGenerator propertyFileGenerator, final Project project, - final GenerationOptions genOptions) { + public static void generateAllProperties(final PropertyFileGenerator propertyFileGenerator, + final Project project, + final GenerationOptions genOptions) { ChunkBuildExtension[] extensions = Extensions.getRootArea().getExtensionPoint(EP_NAME).getExtensions(); for (ChunkBuildExtension extension : extensions) { extension.generateProperties(propertyFileGenerator, project, genOptions);