Exemplo n.º 1
0
 internal void ReleasePad(DefaultMonitorPad pad)
 {
     lock (outputMonitors) {
         outputMonitors.Add (pad);
     }
 }
 public OutputProgressMonitor(DefaultMonitorPad pad, string title, string icon)
 {
     pad.AsyncOperation = this.AsyncOperation;
     outputPad = pad;
     outputPad.BeginProgress (title);
 }
Exemplo n.º 3
0
        public IProgressMonitor GetOutputProgressMonitor(string title, string icon, bool bringToFront, bool allowMonitorReuse)
        {
            if (allowMonitorReuse) {
                DefaultMonitorPad pad = null;
                lock (outputMonitors) {
                    // Look for an available pad
                    for (int n=0; n<outputMonitors.Count; n++) {
                        DefaultMonitorPad mpad = (DefaultMonitorPad) outputMonitors [n];
                        if (mpad.Title == title) {
                            pad = mpad;
                            outputMonitors.RemoveAt (n);
                            break;
                        }
                    }
                }
                if (pad != null) {
                    if (bringToFront) Runtime.Gui.Workbench.BringToFront (pad);
                    return new OutputProgressMonitor (pad, title, icon);
                }
            }

            DefaultMonitorPad monitorPad = new DefaultMonitorPad (title, icon);
            monitorPad.Id = "OutputPad" + (monitorId++);
            Runtime.Gui.Workbench.ShowPad (monitorPad);
            if (bringToFront) Runtime.Gui.Workbench.BringToFront (monitorPad);

            return new OutputProgressMonitor (monitorPad, title, icon);
        }
        protected override void OnCompleted()
        {
            if (outputPad == null) throw GetDisposedException ();
            outputPad.WriteText ("\n");

            foreach (string msg in SuccessMessages)
                outputPad.WriteText (msg + "\n");

            foreach (string msg in Warnings)
                outputPad.WriteText (msg + "\n");

            foreach (string msg in Errors)
                outputPad.WriteText (msg + "\n");

            outputPad.EndProgress ();
            base.OnCompleted ();

            Runtime.TaskService.ReleasePad (outputPad);
            outputPad = null;
        }