From c153123e2816132d2ee8474bdd251fcb7c91b1bb Mon Sep 17 00:00:00 2001 From: Bruno Medeiros Date: Wed, 12 Aug 2015 16:37:46 +0100 Subject: [PATCH] LANG: Fix: refresh Project when Build Target invoked directly. --- documentation/ChangeLog.md | 1 + .../build/BuildOperationCreator.java | 12 ++++++-- .../mmrnmhrm/core/build/DeeBuildManager.java | 28 +++++++++++-------- .../mmrnmhrm/core/engine/DeeToolManager.java | 2 +- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/documentation/ChangeLog.md b/documentation/ChangeLog.md index 8e1c2f18d..ec4a46f20 100644 --- a/documentation/ChangeLog.md +++ b/documentation/ChangeLog.md @@ -5,6 +5,7 @@ ### 0.13.0 RC2 * Fix missing ".exe" suffix in Windows * Fixed: "null" text inserted when cancel pressed in Variables dialog. + * Fixed: project not being refreshed when Build Target build invoked directly from Project Explorer. ### 0.13.0 * Added support for Build Targets, based on DUB configurations (with the default and `unittest` build types). diff --git a/plugin_ide.core/src-lang/melnorme/lang/ide/core/operations/build/BuildOperationCreator.java b/plugin_ide.core/src-lang/melnorme/lang/ide/core/operations/build/BuildOperationCreator.java index 8370370c2..1a7f0ca1d 100644 --- a/plugin_ide.core/src-lang/melnorme/lang/ide/core/operations/build/BuildOperationCreator.java +++ b/plugin_ide.core/src-lang/melnorme/lang/ide/core/operations/build/BuildOperationCreator.java @@ -31,6 +31,7 @@ import melnorme.lang.ide.core.utils.TextMessageUtils; import melnorme.utilbox.collections.ArrayList2; import melnorme.utilbox.collections.Collection2; +import melnorme.utilbox.concurrency.OperationCancellation; import melnorme.utilbox.core.CommonException; public class BuildOperationCreator implements BuildManagerMessages { @@ -71,6 +72,13 @@ public IToolOperation newProjectBuildOperation(Collection2 targetsT addOperation(newBuildTargetOperation(project, buildTarget)); } + // refresh project + addOperation(new IToolOperation() { + @Override + public void execute(IProgressMonitor pm) throws CoreException, CommonException, OperationCancellation { + project.refreshLocal(IResource.DEPTH_INFINITE, pm); + } + }); addOperation(newMessageOperation(opInfo, headerBIG(MSG_BuildTerminated))); @@ -114,13 +122,13 @@ protected IToolOperation newBuildTargetOperation(IProject project, BuildTarget b throws CommonException { Path buildToolPath = LangCore.getToolManager().getSDKToolPath(); try { - return createBuildTargetOperation(opInfo, project, buildToolPath, buildTarget); + return doCreateBuildTargetOperation(opInfo, project, buildToolPath, buildTarget); } catch(CoreException e) { throw new CommonException(e.getMessage(), e.getCause()); } } - public CommonBuildTargetOperation createBuildTargetOperation(OperationInfo opInfo, + public IToolOperation doCreateBuildTargetOperation(OperationInfo opInfo, IProject project, Path buildToolPath, BuildTarget buildTarget ) throws CommonException, CoreException { ValidatedBuildTarget validatedBuildTarget = buildMgr.getValidatedBuildTarget(project, buildTarget); diff --git a/plugin_ide.core/src/mmrnmhrm/core/build/DeeBuildManager.java b/plugin_ide.core/src/mmrnmhrm/core/build/DeeBuildManager.java index 3815e8177..4ef2fabb9 100644 --- a/plugin_ide.core/src/mmrnmhrm/core/build/DeeBuildManager.java +++ b/plugin_ide.core/src/mmrnmhrm/core/build/DeeBuildManager.java @@ -23,6 +23,7 @@ import melnorme.lang.ide.core.operations.OperationInfo; import melnorme.lang.ide.core.operations.ToolMarkersUtil; import melnorme.lang.ide.core.operations.build.BuildManager; +import melnorme.lang.ide.core.operations.build.BuildOperationCreator; import melnorme.lang.ide.core.operations.build.BuildTarget; import melnorme.lang.ide.core.operations.build.CommonBuildTargetOperation; import melnorme.lang.ide.core.operations.build.IToolOperation; @@ -33,7 +34,6 @@ import melnorme.lang.tooling.ops.SourceLineColumnRange; import melnorme.lang.tooling.ops.ToolSourceMessage; import melnorme.utilbox.collections.ArrayList2; -import melnorme.utilbox.collections.Collection2; import melnorme.utilbox.collections.Indexable; import melnorme.utilbox.concurrency.OperationCancellation; import melnorme.utilbox.core.CommonException; @@ -74,16 +74,22 @@ protected Indexable getBuildTypes_do() { } @Override - public IToolOperation newProjectClearMarkersOperation(OperationInfo opInfo, IProject project) { - return new RunInDubAgentWrapper( - super.newProjectClearMarkersOperation(opInfo, project)); - } - - @Override - public IToolOperation newBuildOperation(OperationInfo opInfo, IProject project, boolean clearMarkers, - Collection2 targetsToBuild) throws CommonException { - return new RunInDubAgentWrapper( - super.newBuildOperation(opInfo, project, clearMarkers, targetsToBuild)); + protected BuildOperationCreator createBuildOperationCreator(OperationInfo opInfo, IProject project) { + return new BuildOperationCreator(project, opInfo) { + + @Override + protected IToolOperation doCreateClearBuildMarkersOperation() { + return new RunInDubAgentWrapper(super.doCreateClearBuildMarkersOperation()); + } + + @Override + public IToolOperation doCreateBuildTargetOperation(OperationInfo opInfo, IProject project, + Path buildToolPath, BuildTarget buildTarget) throws CommonException, CoreException { + return new RunInDubAgentWrapper( + super.doCreateBuildTargetOperation(opInfo, project, buildToolPath, buildTarget)); + } + + }; } protected static class RunInDubAgentWrapper implements IToolOperation { diff --git a/plugin_ide.core/src/mmrnmhrm/core/engine/DeeToolManager.java b/plugin_ide.core/src/mmrnmhrm/core/engine/DeeToolManager.java index 07d91f3b3..e1bbe84e6 100644 --- a/plugin_ide.core/src/mmrnmhrm/core/engine/DeeToolManager.java +++ b/plugin_ide.core/src/mmrnmhrm/core/engine/DeeToolManager.java @@ -34,7 +34,7 @@ */ public class DeeToolManager extends AbstractToolManager { - protected final ITaskAgent dubProcessAgent = new CoreTaskAgent(getClass().getSimpleName()); + protected final ITaskAgent dubProcessAgent = new CoreTaskAgent("DDT.DubProcessAgent"); public DeeToolManager() { }