public abstract void Execute(IProgressMonitor monitor, ExecutionContext context);
 public override void Execute(IProgressMonitor monitor, ExecutionContext context)
 {
 }
        public override void Execute(IProgressMonitor monitor, ExecutionContext context)
        {
            if (Runtime.TaskService.Errors != 0) return;

            AbstractProjectConfiguration configuration = (AbstractProjectConfiguration) ActiveConfiguration;
            if (Runtime.TaskService.Warnings != 0 && configuration != null && !configuration.RunWithWarnings)
                return;

            string args = configuration.CommandLineParameters;

            if (configuration.ExecuteScript != null && configuration.ExecuteScript.Length > 0) {
                IConsole console;
                if (configuration.ExternalConsole)
                    console = context.ExternalConsoleFactory.CreateConsole (!configuration.PauseConsoleOutput);
                else
                    console = context.ConsoleFactory.CreateConsole (!configuration.PauseConsoleOutput);

                ProcessWrapper p = Runtime.ProcessService.StartConsoleProcess (configuration.ExecuteScript, args, BaseDirectory, console, null);
                p.WaitForOutput ();
            } else {
                DoExecute (monitor, context);
            }
        }
 protected virtual void DoExecute(IProgressMonitor monitor, ExecutionContext context)
 {
 }
        public override void Execute(IProgressMonitor monitor, ExecutionContext context)
        {
            if (singleStartup) {
                if (StartupEntry != null)
                    StartupEntry.Execute (monitor, context);
            } else {
                ArrayList list = new ArrayList ();
                monitor.BeginTask ("Executing projects", 1);

                SynchronizedProgressMonitor syncMonitor = new SynchronizedProgressMonitor (monitor);

                foreach (CombineExecuteDefinition ced in combineExecuteDefinitions) {
                    if (ced.Type != EntryExecuteType.Execute) continue;

                    AggregatedProgressMonitor mon = new AggregatedProgressMonitor ();
                    mon.AddSlaveMonitor (syncMonitor, MonitorAction.ReportError | MonitorAction.ReportWarning | MonitorAction.SlaveCancel);

                    EntryStartData sd = new EntryStartData ();
                    sd.Monitor = mon;
                    sd.Context = context;
                    sd.Entry = ced.Entry;

                    Runtime.DispatchService.ThreadDispatch (new StatefulMessageHandler (ExecuteEntryAsync), sd);
                    list.Add (sd.Monitor.AsyncOperation);
                }
                foreach (IAsyncOperation op in list)
                    op.WaitForCompleted ();

                monitor.EndTask ();
            }
        }