Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/17 07:56:01 (7 years ago)
Author:
gkronber
Message:

#2650: merged r14597:14737 from trunk to branch

Location:
branches/symbreg-factors-2650
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/symbreg-factors-2650

  • branches/symbreg-factors-2650/HeuristicLab.Data.Views

  • branches/symbreg-factors-2650/HeuristicLab.Data.Views/3.3

  • branches/symbreg-factors-2650/HeuristicLab.Data.Views/3.3/EnumValueView.cs

    r14185 r14751  
    2121
    2222using System;
     23using System.Windows.Forms;
    2324using HeuristicLab.Core.Views;
    2425using HeuristicLab.MainForm;
     
    4445    public EnumValueView() {
    4546      InitializeComponent();
     47      this.Name = typeof(T).Name + "EnumView";
     48
    4649      valueComboBox.DataSource = Enum.GetValues(typeof(T));
    47       this.Name = typeof(T).Name + "EnumView";
     50      foreach (T flag in Enum.GetValues(typeof(T)))
     51        flagsListView.Items.Add(new ListViewItem(flag.ToString()) { Tag = flag });
     52      columnHeader.Width = -1;
     53
     54      bool isFlags = Attribute.IsDefined(typeof(T), typeof(FlagsAttribute));
     55      if (isFlags) valueLabel.Text = "Flags:";
     56      valueComboBox.Visible = !isFlags;
     57      flagsListView.Visible = isFlags;
    4858    }
    4959    public EnumValueView(EnumValue<T> content)
     
    6474    protected override void OnContentChanged() {
    6575      base.OnContentChanged();
    66       if (Content == null)
    67         valueComboBox.Enabled = false;
    68       else
     76      if (Content == null) {
     77        valueComboBox.SelectedIndex = -1;
     78        foreach (ListViewItem item in flagsListView.Items)
     79          item.Checked = false;
     80      } else {
    6981        valueComboBox.SelectedItem = Content.Value;
     82        foreach (ListViewItem item in flagsListView.Items) {
     83          var flag = (Enum)item.Tag;
     84          item.Checked = ((Enum)(object)Content.Value).HasFlag(flag);
     85        }
     86      }
    7087    }
    7188
    7289    protected override void SetEnabledStateOfControls() {
    7390      base.SetEnabledStateOfControls();
    74       if (Content == null) valueComboBox.Enabled = false;
    75       else valueComboBox.Enabled = !ReadOnly;
     91      if (Content == null) {
     92        valueComboBox.Enabled = false;
     93        flagsListView.Enabled = false;
     94      } else {
     95        valueComboBox.Enabled = !ReadOnly;
     96        flagsListView.Enabled = !ReadOnly;
     97      }
    7698    }
    7799
     
    79101      if (InvokeRequired)
    80102        Invoke(new EventHandler(Content_ValueChanged), sender, e);
    81       else
     103      else {
    82104        valueComboBox.SelectedItem = Content.Value;
     105        foreach (ListViewItem item in flagsListView.Items) {
     106          var flag = (Enum)item.Tag;
     107          item.Checked = ((Enum)(object)Content.Value).HasFlag(flag);
     108        }
     109      }
    83110    }
    84111
     
    87114        Content.Value = (T)valueComboBox.SelectedItem;
    88115    }
     116
     117    private void flagsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
     118      var flag = (T)e.Item.Tag;
     119      if ((Content != null) && !Content.ReadOnly)
     120        Content.Value = ((Enum)(object)Content.Value).SetFlag(flag, e.Item.Checked);
     121    }
    89122  }
    90123}
Note: See TracChangeset for help on using the changeset viewer.