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()); }
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; }
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(); } }