using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using HeuristicLab.Encodings.ParameterConfigurationEncoding; using HeuristicLab.MainForm; using HeuristicLab.Core.Views; namespace HeuristicLab.Problems.MetaOptimization.Views { [View("ConstrainedTypeValueView")] [Content(typeof(ConstrainedTypeValue), IsDefaultView = false)] [Content(typeof(ConstrainedTypeValue<>), IsDefaultView = true)] public sealed partial class ConstrainedTypeValueView : ItemView { public new ConstrainedTypeValue Content { get { return (ConstrainedTypeValue)base.Content; } set { base.Content = value; } } public ConstrainedTypeValueView() { InitializeComponent(); } protected override void DeregisterContentEvents() { Content.ValueChanged -= new EventHandler(Content_ValueChanged); base.DeregisterContentEvents(); } protected override void RegisterContentEvents() { base.RegisterContentEvents(); Content.ValueChanged += new EventHandler(Content_ValueChanged); } #region Event Handlers (Content) void Content_ValueChanged(object sender, EventArgs e) { if (InvokeRequired) { Invoke(new EventHandler(Content_ValueChanged), sender, e); } else { this.typeComboBox.SelectedItem = Content.Value; } } #endregion protected override void OnContentChanged() { base.OnContentChanged(); if (Content == null) { typeComboBox.Items.Clear(); } else { typeComboBox.Items.AddRange(Content.ValidTypes.ToArray()); Content_ValueChanged(this, EventArgs.Empty); } } protected override void SetEnabledStateOfControls() { base.SetEnabledStateOfControls(); } #region Event Handlers (child controls) private void typeComboBox_SelectedIndexChanged(object sender, EventArgs e) { Content.Value = (Type)typeComboBox.SelectedItem; } #endregion } }