Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/21/21 15:27:58 (3 years ago)
Author:
mkommend
Message:

#2521: Added first version (draft) of ResultsProducingItem, an according view and a refactored ProblemView.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Optimization.Views/3.3/ProblemView.cs

    r17226 r17953  
    2121
    2222using System;
    23 using System.Collections.Generic;
    24 using System.Linq;
    25 using HeuristicLab.Core.Views;
    2623using HeuristicLab.MainForm;
     24using HeuristicLab.MainForm.WindowsForms;
    2725using HeuristicLab.Problems.Instances;
    28 using HeuristicLab.Problems.Instances.Views;
    2926
    3027namespace HeuristicLab.Optimization.Views {
     
    3431  [View("Problem View")]
    3532  [Content(typeof(IProblem), true)]
    36   public partial class ProblemView : ParameterizedNamedItemView {
     33  public partial class ProblemView : AsynchronousContentView {
    3734
    3835    public new IProblem Content {
     
    4138    }
    4239
    43     protected IEnumerable<IProblemInstanceProvider> problemInstanceProviders;
    44     public IEnumerable<IProblemInstanceProvider> ProblemInstanceProviders {
    45       get { return new List<IProblemInstanceProvider>(problemInstanceProviders); }
    46     }
    4740
    48     public IProblemInstanceProvider SelectedProvider { get; protected set; }
    4941
    5042    /// <summary>
     
    5547    }
    5648
     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
    5759    protected override void OnContentChanged() {
    5860      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;
    7769    }
    7870
    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;
    9275      }
    93       SetEnabledStateOfControls();
     76      Caption = Content.Name;
    9477    }
    9578
    96     protected bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {
    97       return Content.GetType().GetInterfaces()
    98                     .Any(x => x == typeof(IProblemInstanceExporter));
    99     }
    100 
    101     #region ToolTip
    102     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 = toolTip
    112             + Environment.NewLine + Environment.NewLine
    113             + provider.ReferencePublication;
    114       }
    115       if (provider.WebLink != null) {
    116         toolTip = toolTip
    117             + Environment.NewLine
    118             + provider.WebLink.ToString();
    119       }
    120 
    121       return toolTip;
    122     }
    123     #endregion
    12479  }
    12580}
Note: See TracChangeset for help on using the changeset viewer.