Changeset 17953 for branches/2521_ProblemRefactoring/HeuristicLab.Optimization.Views/3.3/ProblemView.cs
- Timestamp:
- 04/21/21 15:27:58 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Optimization.Views/3.3/ProblemView.cs
r17226 r17953 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using HeuristicLab.Core.Views;26 23 using HeuristicLab.MainForm; 24 using HeuristicLab.MainForm.WindowsForms; 27 25 using HeuristicLab.Problems.Instances; 28 using HeuristicLab.Problems.Instances.Views;29 26 30 27 namespace HeuristicLab.Optimization.Views { … … 34 31 [View("Problem View")] 35 32 [Content(typeof(IProblem), true)] 36 public partial class ProblemView : ParameterizedNamedItemView {33 public partial class ProblemView : AsynchronousContentView { 37 34 38 35 public new IProblem Content { … … 41 38 } 42 39 43 protected IEnumerable<IProblemInstanceProvider> problemInstanceProviders;44 public IEnumerable<IProblemInstanceProvider> ProblemInstanceProviders {45 get { return new List<IProblemInstanceProvider>(problemInstanceProviders); }46 }47 40 48 public IProblemInstanceProvider SelectedProvider { get; protected set; }49 41 50 42 /// <summary> … … 55 47 } 56 48 49 protected override void RegisterContentEvents() { 50 base.RegisterContentEvents(); 51 Content.NameChanged += Content_NameChanged; 52 } 53 54 protected override void DeregisterContentEvents() { 55 Content.NameChanged -= Content_NameChanged; 56 base.DeregisterContentEvents(); 57 } 58 57 59 protected override void OnContentChanged() { 58 60 base.OnContentChanged(); 59 if (Content == null) { 60 problemInstanceProviders = null; 61 problemInstanceProviderComboBox.DataSource = null; 62 problemInstanceSplitContainer.Panel1Collapsed = true; 63 } else { 64 var consumer = Content as IProblemInstanceConsumer; 65 if (consumer != null) { 66 problemInstanceProviders = ProblemInstanceManager.GetProviders(Content); 67 bool expand = problemInstanceProviders.Any(); 68 if (expand) { 69 problemInstanceProviderComboBox.DisplayMember = "Name"; 70 problemInstanceProviderComboBox.DataSource = ProblemInstanceProviders.OrderBy(x => x.Name).ToList(); 71 } 72 problemInstanceSplitContainer.Panel1Collapsed = !expand; 73 } else 74 problemInstanceSplitContainer.Panel1Collapsed = true; 75 } 76 SetEnabledStateOfControls(); 61 problemInstanceProvidersControl.Consumer = Content as IProblemInstanceConsumer; 62 namedItemView.Content = Content; 63 resultsProducingItemView.Content = Content; 64 65 if (!problemInstanceProvidersControl.ProvidersAvailable) problemInstanceSplitContainer.Panel1Collapsed = true; 66 if (Content == null) return; 67 68 Caption = Content.Name; 77 69 } 78 70 79 protected virtual void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { 80 if (problemInstanceProviderComboBox.SelectedIndex >= 0) { 81 SelectedProvider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem; 82 problemInstanceProviderViewHost.Content = SelectedProvider; 83 var view = (ProblemInstanceProviderView)problemInstanceProviderViewHost.ActiveView; 84 var consumer = (IProblemInstanceConsumer)Content; 85 view.Consumer = consumer; 86 if (CheckForIProblemInstanceExporter(consumer)) 87 view.Exporter = (IProblemInstanceExporter)Content; 88 else view.Exporter = null; 89 SetTooltip(); 90 } else { 91 SelectedProvider = null; 71 protected virtual void Content_NameChanged(object sender, EventArgs e) { 72 if (InvokeRequired) { 73 Invoke(new EventHandler(Content_NameChanged), sender, e); 74 return; 92 75 } 93 SetEnabledStateOfControls();76 Caption = Content.Name; 94 77 } 95 78 96 protected bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {97 return Content.GetType().GetInterfaces()98 .Any(x => x == typeof(IProblemInstanceExporter));99 }100 101 #region ToolTip102 protected void SetTooltip() {103 toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());104 }105 106 private string GetProviderToolTip() {107 var provider = SelectedProvider;108 string toolTip = provider.Name;109 110 if (!String.IsNullOrEmpty(provider.ReferencePublication)) {111 toolTip = toolTip112 + Environment.NewLine + Environment.NewLine113 + provider.ReferencePublication;114 }115 if (provider.WebLink != null) {116 toolTip = toolTip117 + Environment.NewLine118 + provider.WebLink.ToString();119 }120 121 return toolTip;122 }123 #endregion124 79 } 125 80 }
Note: See TracChangeset
for help on using the changeset viewer.