コード例 #1
0
        public IList <WorkUnit> FindByStatus(WorkUnitStatus status)
        {
            List <WorkUnit> list = new List <WorkUnit>();

            for (int i = 0; i < base.Count; i++)
            {
                if (status == base[i].Status)
                {
                    list.Add(base[i]);
                }
            }
            return(list.ToArray());
        }
コード例 #2
0
        private void UpdateProgressBar(WorkUnitStatus workUnitStatus)
        {
            if (workUnitStatus != WorkUnitStatus.InProgress)
            {
                if (this.progressBar != null)
                {
                    base.CaptionStrip.SuspendLayout();
                    base.CaptionStrip.Items.Remove(this.progressBar);
                    base.CaptionStrip.ResumeLayout();
                    this.progressBar.Dispose();
                    this.progressBar = null;
                }
                return;
            }
            if (this.progressBar == null)
            {
                base.CaptionStrip.SuspendLayout();
                this.progressBar           = new ExchangeToolStripProgressBar();
                this.progressBar.Alignment = ToolStripItemAlignment.Right;
                this.progressBar.AutoSize  = false;
                this.progressBar.Name      = "progressBar";
                this.progressBar.Minimum   = 0;
                this.progressBar.Maximum   = 100;
                this.progressBar.Size      = new Size(100, 12);
                this.progressBar.Overflow  = ToolStripItemOverflow.Never;
                base.CaptionStrip.Items.Add(this.progressBar);
                base.CaptionStrip.ResumeLayout();
            }
            int percentComplete = this.WorkUnit.PercentComplete;

            this.progressBar.Value = percentComplete;
            if ((percentComplete > 0 && percentComplete < 100) || !this.TimerEnabled)
            {
                this.progressBar.Style = ProgressBarStyle.Continuous;
                return;
            }
            this.progressBar.Style = ProgressBarStyle.Marquee;
        }
コード例 #3
0
        private void UpdatePanel()
        {
            base.SuspendLayout();
            base.CaptionStrip.SuspendLayout();
            try
            {
                WorkUnit workUnit = this.WorkUnit;
                if (workUnit != null)
                {
                    this.Text = workUnit.Text;
                    base.Icon = workUnit.Icon;
                    if (this.descriptionLabel.Links.Count > 0)
                    {
                        this.descriptionLabel.Links.Clear();
                    }
                    WorkUnitStatus status = workUnit.Status;
                    this.UpdateProgressBar(status);
                    bool      flag      = true;
                    bool      flag2     = true;
                    TaskState taskState = 0;
                    if (base.Parent is WorkUnitsPanel)
                    {
                        taskState = ((WorkUnitsPanel)base.Parent).TaskState;
                        flag      = (taskState != null && status != WorkUnitStatus.NotStarted);
                        flag2     = (taskState == null || (taskState == 1 && status == WorkUnitStatus.InProgress) || (taskState == 1 && status == WorkUnitStatus.NotStarted));
                    }
                    base.StatusVisible = (status != WorkUnitStatus.InProgress);
                    string        status2       = LocalizedDescriptionAttribute.FromEnum(typeof(WorkUnitStatus), status);
                    StringBuilder stringBuilder = new StringBuilder(2048);
                    if (flag2)
                    {
                        if (taskState == 1 && status == WorkUnitStatus.InProgress)
                        {
                            string text = (workUnit.StatusDescription == null) ? null : workUnit.StatusDescription.Trim();
                            if (!string.IsNullOrEmpty(text))
                            {
                                stringBuilder.AppendLine(Strings.StatusDescription(text));
                            }
                        }
                        else
                        {
                            string value = (workUnit.Description == null) ? null : workUnit.Description.Trim();
                            if (!string.IsNullOrEmpty(value))
                            {
                                stringBuilder.AppendLine(value);
                            }
                        }
                    }
                    string executedCommandTextForWorkUnit = workUnit.ExecutedCommandTextForWorkUnit;
                    switch (status)
                    {
                    case WorkUnitStatus.NotStarted:
                        base.StatusImage = null;
                        base.Status      = "";
                        if (taskState == 1)
                        {
                            base.Status = Strings.WorkUnitStatusPending;
                        }
                        else if (taskState == 2)
                        {
                            base.Status      = Strings.WorkUnitStatusCancelled;
                            base.StatusImage = WorkUnitPanel.warning;
                            if (workUnit.CanShowExecutedCommand && !string.IsNullOrEmpty(executedCommandTextForWorkUnit))
                            {
                                stringBuilder.AppendLine(Strings.MshCommandExecutedFailed(executedCommandTextForWorkUnit));
                            }
                        }
                        break;

                    case WorkUnitStatus.InProgress:
                        base.Status      = "";
                        base.StatusImage = null;
                        break;

                    case WorkUnitStatus.Completed:
                        if (!flag2)
                        {
                            base.Status      = status2;
                            base.StatusImage = ((workUnit.Warnings.Count == 0) ? WorkUnitPanel.completed : WorkUnitPanel.warning);
                            if (workUnit.Warnings.Count > 0)
                            {
                                stringBuilder.AppendLine(workUnit.WarningsDescription);
                            }
                            if (workUnit.CanShowExecutedCommand && !string.IsNullOrEmpty(executedCommandTextForWorkUnit))
                            {
                                stringBuilder.AppendLine(Strings.MshCommandExecutedSuccessfully(executedCommandTextForWorkUnit));
                            }
                        }
                        break;

                    case WorkUnitStatus.Failed:
                        if (!flag2)
                        {
                            base.FastSetIsMinimized(false);
                            base.Status      = status2;
                            base.StatusImage = WorkUnitPanel.failed;
                            if (workUnit.Errors.Count > 0)
                            {
                                for (int i = 0; i < workUnit.Errors.Count; i++)
                                {
                                    stringBuilder.AppendLine(Strings.WorkUnitError);
                                    ErrorRecord  errorRecord  = workUnit.Errors[i];
                                    ErrorDetails errorDetails = errorRecord.ErrorDetails;
                                    string       text2        = null;
                                    if (errorDetails != null && !string.IsNullOrEmpty(errorDetails.RecommendedAction))
                                    {
                                        text2 = errorDetails.RecommendedAction;
                                    }
                                    else
                                    {
                                        LocalizedException ex = errorRecord.Exception as LocalizedException;
                                        if (ex != null)
                                        {
                                            Uri uri = null;
                                            if (Microsoft.Exchange.CommonHelpProvider.HelpProvider.TryGetErrorAssistanceUrl(ex, out uri))
                                            {
                                                text2 = uri.ToString();
                                            }
                                        }
                                    }
                                    if (errorDetails != null)
                                    {
                                        if (!string.IsNullOrEmpty(errorDetails.Message))
                                        {
                                            stringBuilder.AppendLine(errorDetails.Message);
                                        }
                                    }
                                    else
                                    {
                                        Exception ex2   = errorRecord.Exception;
                                        string    text3 = "";
                                        while (ex2 != null)
                                        {
                                            if (ex2.Message != text3)
                                            {
                                                text3 = ex2.Message;
                                                stringBuilder.AppendLine(text3);
                                            }
                                            ex2 = ex2.InnerException;
                                            if (ex2 != null)
                                            {
                                                stringBuilder.AppendLine();
                                            }
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(text2))
                                    {
                                        string         value2 = Strings.WorkUnitErrorAssistanceLink;
                                        LinkLabel.Link link   = new LinkLabel.Link();
                                        link.LinkData = text2;
                                        link.Start    = new StringInfo(stringBuilder.ToString()).LengthInTextElements;
                                        link.Length   = new StringInfo(value2).LengthInTextElements;
                                        this.descriptionLabel.Links.Add(link);
                                        stringBuilder.AppendLine(value2);
                                    }
                                    if (i < workUnit.Errors.Count - 1)
                                    {
                                        stringBuilder.AppendLine();
                                    }
                                }
                            }
                            if (workUnit.Warnings.Count > 0)
                            {
                                if (workUnit.Errors.Count > 0)
                                {
                                    stringBuilder.AppendLine();
                                }
                                stringBuilder.AppendLine(workUnit.WarningsDescription);
                            }
                            if (workUnit.CanShowExecutedCommand && !string.IsNullOrEmpty(executedCommandTextForWorkUnit))
                            {
                                if (workUnit.Warnings.Count > 0 || workUnit.Errors.Count > 0)
                                {
                                    stringBuilder.AppendLine();
                                }
                                stringBuilder.AppendLine(Strings.MshCommandExecutedFailed(executedCommandTextForWorkUnit));
                            }
                        }
                        break;
                    }
                    if (workUnit.CanShowElapsedTime && flag)
                    {
                        stringBuilder.AppendLine();
                        stringBuilder.AppendLine(workUnit.ElapsedTimeText);
                    }
                    this.Description  = stringBuilder.ToString().Trim();
                    this.TimerEnabled = (status == WorkUnitStatus.InProgress);
                }
            }
            finally
            {
                base.CaptionStrip.ResumeLayout(false);
                base.CaptionStrip.PerformLayout();
                base.ResumeLayout();
            }
        }