diff options
author | Darin Swanson | 2003-07-21 18:10:09 +0000 |
---|---|---|
committer | Darin Swanson | 2003-07-21 18:10:09 +0000 |
commit | 5d41e407a333ffa21ddaad14838e222c766bf1a5 (patch) | |
tree | 12d1706a5a23521ee5dbba859f6bf4bbcdd9c453 /org.eclipse.ui.externaltools | |
parent | 28cbdd2ba852382547c719872acb4ef15ea94773 (diff) | |
download | eclipse.platform.debug-5d41e407a333ffa21ddaad14838e222c766bf1a5.tar.gz eclipse.platform.debug-5d41e407a333ffa21ddaad14838e222c766bf1a5.tar.xz eclipse.platform.debug-5d41e407a333ffa21ddaad14838e222c766bf1a5.zip |
Bug 40490 - Scoped external tool builder not triggered if change in different project
Diffstat (limited to 'org.eclipse.ui.externaltools')
-rw-r--r-- | org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java index 4aedf95ff..1e318a3b6 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java @@ -12,6 +12,8 @@ package org.eclipse.ui.externaltools.internal.model; import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.StringTokenizer; @@ -45,7 +47,7 @@ public final class ExternalToolBuilder extends IncrementalProjectBuilder { private static String buildType = IExternalToolConstants.BUILD_TYPE_NONE; - private IProject[] projectsWithinScope= null; + private List projectsWithinScope; private boolean buildKindCompatible(int kind, ILaunchConfiguration config) throws CoreException { int[] buildKinds = buildTypesToArray(config.getAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, "")); //$NON-NLS-1$ @@ -66,9 +68,9 @@ public final class ExternalToolBuilder extends IncrementalProjectBuilder { if (config != null && buildKindCompatible(kind, config)) { launchBuild(kind, config, monitor); } - return projectsWithinScope; + return getProjectsWithinScope(); } - + //need to build all external tools from one builder (see bug 39713) //if not a full build ICommand[] commands = getProject().getDescription().getBuildSpec(); @@ -80,17 +82,25 @@ public final class ExternalToolBuilder extends IncrementalProjectBuilder { } } } - return projectsWithinScope; + return getProjectsWithinScope(); + } + + private IProject[] getProjectsWithinScope() { + if (projectsWithinScope == null) { + return null; + } else { + return (IProject[])projectsWithinScope.toArray(new IProject[projectsWithinScope.size()]); + } } private void doBuild(int kind, ILaunchConfiguration config, IProgressMonitor monitor) throws CoreException { boolean buildForChange = true; IResource[] resources = ExternalToolsUtil.getResourcesForBuildScope(config, monitor); if (resources != null && resources.length > 0) { - projectsWithinScope= new IProject[resources.length]; + projectsWithinScope= new ArrayList(); for (int i = 0; i < resources.length; i++) { IResource resource = resources[i]; - projectsWithinScope[i]= resource.getProject(); + projectsWithinScope.add(resource.getProject()); } buildForChange = buildScopeIndicatesBuild(resources); } @@ -147,7 +157,7 @@ public final class ExternalToolBuilder extends IncrementalProjectBuilder { private boolean buildScopeIndicatesBuild(IResource[] resources) { for (int i = 0; i < resources.length; i++) { - IResourceDelta delta = getDelta(projectsWithinScope[i]); + IResourceDelta delta = getDelta(resources[i].getProject()); if (delta == null) { //project just added to the workspace..no previous build tree return true; |