Changeset 11202 for branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs
- Timestamp:
- 07/18/14 12:01:13 (11 years ago)
- Location:
- branches/HiveStatistics/sources
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources
- Property svn:ignore
-
old new 8 8 FxCopResults.txt 9 9 Google.ProtocolBuffers-0.9.1.dll 10 Google.ProtocolBuffers-2.4.1.473.dll 10 11 HeuristicLab 3.3.5.1.ReSharper.user 11 12 HeuristicLab 3.3.6.0.ReSharper.user 12 13 HeuristicLab.4.5.resharper.user 13 14 HeuristicLab.ExtLibs.6.0.ReSharper.user 15 HeuristicLab.Scripting.Development 14 16 HeuristicLab.resharper.user 15 17 ProtoGen.exe … … 17 19 _ReSharper.HeuristicLab 18 20 _ReSharper.HeuristicLab 3.3 21 _ReSharper.HeuristicLab 3.3 Tests 19 22 _ReSharper.HeuristicLab.ExtLibs 20 23 bin 21 24 protoc.exe 22 _ReSharper.HeuristicLab 3.3 Tests23 Google.ProtocolBuffers-2.4.1.473.dll
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs
r8187 r11202 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 2Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using System; 23 using System.ComponentModel;24 23 using System.Windows.Forms; 25 24 26 25 namespace HeuristicLab.MainForm.WindowsForms { 27 [View("ProgressView")] 28 [Content(typeof(IProgress), true)] 29 public partial class ProgressView : AsynchronousContentView { 30 private const int DefaultCancelTimeoutMs = 3000; 31 private ContentView parentView; 26 internal sealed partial class ProgressView : UserControl { 27 private const int defaultControlHeight = 88; 28 private const int collapsedControlHeight = 55; 32 29 33 [Category("Custom"), Description("The time that the process is allowed to exit.")] 34 [DefaultValue(DefaultCancelTimeoutMs)] 35 public int CancelTimeoutMs { get; set; } 36 private bool ShouldSerializeCancelTimeoutMs() { return CancelTimeoutMs != DefaultCancelTimeoutMs; } 37 38 public new IProgress Content { 39 get { return (IProgress)base.Content; } 40 set { base.Content = value; } 30 private readonly Control control; 31 public Control Control { 32 get { return control; } 41 33 } 42 34 43 public ProgressView() { 44 InitializeComponent(); 45 } 46 public ProgressView(IProgress progress) 47 : this() { 48 Content = progress; 49 } 50 public ProgressView(ContentView parentView) 51 : this() { 52 if (parentView == null) throw new ArgumentNullException("parentView", "The parent view is null."); 53 this.parentView = parentView; 54 } 55 public ProgressView(ContentView parentView, IProgress progress) 56 : this(parentView) { 57 Content = progress; 35 private readonly IProgress content; 36 public IProgress Content { 37 get { return content; } 58 38 } 59 39 60 protected override void RegisterContentEvents() { 61 Content.StatusChanged += new EventHandler(progress_StatusChanged); 62 Content.ProgressValueChanged += new EventHandler(progress_ProgressValueChanged); 63 Content.ProgressStateChanged += new EventHandler(Content_ProgressStateChanged); 64 Content.CanBeCanceledChanged += new EventHandler(Content_CanBeCanceledChanged); 65 base.RegisterContentEvents(); 40 public ProgressView(Control control, IProgress content) 41 : base() { 42 if (control == null) throw new ArgumentNullException("control", "The control is null."); 43 if (content == null) throw new ArgumentNullException("content", "The passed progress is null."); 44 InitializeComponent(); 45 46 this.control = control; 47 this.content = content; 48 if (content.ProgressState == ProgressState.Started) 49 ShowProgress(); 50 RegisterContentEvents(); 66 51 } 67 52 68 protected override void DeregisterContentEvents() { 69 base.DeregisterContentEvents(); 70 Content.StatusChanged -= new EventHandler(progress_StatusChanged); 71 Content.ProgressValueChanged -= new EventHandler(progress_ProgressValueChanged); 72 Content.ProgressStateChanged -= new EventHandler(Content_ProgressStateChanged); 73 Content.CanBeCanceledChanged -= new EventHandler(Content_CanBeCanceledChanged); 53 /// <summary> 54 /// Clean up any resources being used. 55 /// </summary> 56 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 57 protected override void Dispose(bool disposing) { 58 DeregisterContentEvents(); 59 HideProgress(); 60 61 if (disposing && (components != null)) { 62 components.Dispose(); 63 } 64 base.Dispose(disposing); 74 65 } 75 66 76 protected override void OnContentChanged() { 77 base.OnContentChanged(); 78 if (Content == null) { 79 HideProgress(); 80 } else { 81 if (Content.ProgressState == ProgressState.Started) 82 ShowProgress(); 83 } 67 private void RegisterContentEvents() { 68 content.StatusChanged += new EventHandler(progress_StatusChanged); 69 content.ProgressValueChanged += new EventHandler(progress_ProgressValueChanged); 70 content.ProgressStateChanged += new EventHandler(Content_ProgressStateChanged); 71 content.CanBeCanceledChanged += new EventHandler(Content_CanBeCanceledChanged); 84 72 } 85 86 protected override void SetEnabledStateOfControls() {87 base.SetEnabledStateOfControls();88 c ancelButton.Visible = Content != null && Content.CanBeCanceled;89 c ancelButton.Enabled = Content != null && Content.CanBeCanceled && !ReadOnly;73 private void DeregisterContentEvents() { 74 content.StatusChanged -= new EventHandler(progress_StatusChanged); 75 content.ProgressValueChanged -= new EventHandler(progress_ProgressValueChanged); 76 content.ProgressStateChanged -= new EventHandler(Content_ProgressStateChanged); 77 content.CanBeCanceledChanged -= new EventHandler(Content_CanBeCanceledChanged); 90 78 } 91 79 92 80 private void ShowProgress() { 93 if (InvokeRequired) Invoke((Action)ShowProgress); 94 else { 95 if (parentView != null) { 96 this.Left = (parentView.ClientRectangle.Width / 2) - (this.Width / 2); 97 this.Top = (parentView.ClientRectangle.Height / 2) - (this.Height / 2); 98 this.Anchor = AnchorStyles.None; 81 if (Control.InvokeRequired) { 82 Control.Invoke((Action)ShowProgress); 83 return; 84 } 85 int height = Content.CanBeCanceled ? Height : collapsedControlHeight; 99 86 100 LockBackground(); 87 Left = (Control.ClientRectangle.Width / 2) - (Width / 2); 88 Top = (Control.ClientRectangle.Height / 2) - (height / 2); 89 Anchor = AnchorStyles.None; 101 90 102 if (!parentView.Controls.Contains(this)) 103 parentView.Controls.Add(this); 91 control.Enabled = false; 92 Parent = Control.Parent; 93 BringToFront(); 104 94 105 BringToFront(); 106 } 107 UpdateProgressValue(); 108 UpdateProgressStatus(); 109 Visible = true; 110 } 95 UpdateProgressValue(); 96 UpdateProgressStatus(); 97 UpdateCancelButton(); 98 Visible = true; 111 99 } 112 100 … … 114 102 if (InvokeRequired) Invoke((Action)HideProgress); 115 103 else { 116 if (parentView != null) { 117 if (parentView.Controls.Contains(this)) 118 parentView.Controls.Remove(this); 119 120 UnlockBackground(); 121 } 104 control.Enabled = true; 105 Parent = null; 122 106 Visible = false; 123 107 } … … 133 117 134 118 private void Content_ProgressStateChanged(object sender, EventArgs e) { 135 if (Content.ProgressState == ProgressState.Finished 136 || Content.ProgressState == ProgressState.Canceled) 137 HideProgress(); 138 if (Content.ProgressState == ProgressState.Started) 139 ShowProgress(); 119 switch (content.ProgressState) { 120 case ProgressState.Finished: HideProgress(); break; 121 case ProgressState.Canceled: HideProgress(); break; 122 case ProgressState.Started: ShowProgress(); break; 123 default: throw new NotSupportedException("The progress state " + content.ProgressState + " is not supported by the ProgressView."); 124 } 140 125 } 141 126 142 127 private void Content_CanBeCanceledChanged(object sender, EventArgs e) { 143 SetEnabledStateOfControls();128 UpdateCancelButton(); 144 129 } 145 130 146 private void LockBackground() { 147 if (InvokeRequired) { 148 Invoke((Action)LockBackground); 149 } else { 150 parentView.Locked = true; 151 parentView.ReadOnly = true; 152 Locked = false; 153 ReadOnly = false; 154 } 155 } 131 private void UpdateCancelButton() { 132 cancelButton.Visible = content != null && content.CanBeCanceled; 133 cancelButton.Enabled = content != null && content.CanBeCanceled; 156 134 157 private void UnlockBackground() { 158 if (InvokeRequired) Invoke((Action)UnlockBackground); 159 else { 160 parentView.Locked = false; 161 parentView.ReadOnly = false; 162 Locked = true; 163 ReadOnly = true; 135 if (content != null && content.CanBeCanceled) { 136 Height = defaultControlHeight; 137 } else if (content != null && !content.CanBeCanceled) { 138 Height = collapsedControlHeight; 164 139 } 165 140 } … … 168 143 if (InvokeRequired) Invoke((Action)UpdateProgressValue); 169 144 else { 170 if ( Content != null) {171 double progressValue = Content.ProgressValue;145 if (content != null) { 146 double progressValue = content.ProgressValue; 172 147 if (progressValue <= 0.0 || progressValue > 1.0) { 173 if (progressBar.Style != ProgressBarStyle.Marquee) 174 progressBar.Style = ProgressBarStyle.Marquee; 148 progressBar.Style = ProgressBarStyle.Marquee; 175 149 } else { 176 if (progressBar.Style != ProgressBarStyle.Blocks) 177 progressBar.Style = ProgressBarStyle.Blocks; 150 progressBar.Style = ProgressBarStyle.Blocks; 178 151 progressBar.Value = (int)Math.Round(progressBar.Minimum + progressValue * (progressBar.Maximum - progressBar.Minimum)); 179 152 } … … 184 157 private void UpdateProgressStatus() { 185 158 if (InvokeRequired) Invoke((Action)UpdateProgressStatus); 186 else if ( Content != null)187 statusLabel.Text = Content.Status;159 else if (content != null) 160 statusLabel.Text = content.Status; 188 161 } 189 162 190 163 private void cancelButton_Click(object sender, EventArgs e) { 191 if (Content != null) { 192 try { 193 Content.Cancel(CancelTimeoutMs); 194 ReadOnly = true; 195 cancelButtonTimer.Interval = CancelTimeoutMs; 196 cancelButtonTimer.Start(); 197 } catch (NotSupportedException nse) { 198 PluginInfrastructure.ErrorHandling.ShowErrorDialog(nse); 199 } 200 } 201 } 202 203 private void cancelButtonTimer_Tick(object sender, EventArgs e) { 204 cancelButtonTimer.Stop(); 205 if (Visible) ReadOnly = false; 164 content.Cancel(); 206 165 } 207 166 }
Note: See TracChangeset
for help on using the changeset viewer.