Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs @ 17439

Last change on this file since 17439 was 17433, checked in by dpiringe, 4 years ago

#3026:

  • added property Description in IJsonItem and updated all construction calls
  • updated UnsupportedJsonItem with unsupported property Description
  • updated JsonItemBaseControl and JsonItemVMBase for new property Description
File size: 3.4 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Drawing;
5using System.Data;
6using System.Linq;
7using System.Text;
8using System.Threading.Tasks;
9using System.Windows.Forms;
10
11namespace HeuristicLab.JsonInterface.OptimizerIntegration {
12 
13  public class JsonItemDoubleMatrixValueControl : JsonItemMultiValueControl<double> {
14
15    public JsonItemDoubleMatrixValueControl(DoubleMatrixValueVM vm) : base(vm, vm.Value) { }
16    protected override void SaveCellData(object data, int col, int row) {
17      DoubleMatrixValueVM vm = VM as DoubleMatrixValueVM;
18      vm.SetCellValue(data, col, row);
19    }
20  }
21
22  public class JsonItemIntArrayValueControl : JsonItemMultiValueControl<int> {
23    public JsonItemIntArrayValueControl(IntArrayValueVM vm) : base(vm, vm.Value) { }
24
25    protected override void SaveCellData(object data, int col, int row) {
26      IntArrayValueVM vm = VM as IntArrayValueVM;
27      vm.SetIndexValue(data, row);
28    }
29  }
30
31  public class JsonItemDoubleArrayValueControl : JsonItemMultiValueControl<double> {
32    public JsonItemDoubleArrayValueControl(DoubleArrayValueVM vm) : base(vm, vm.Value) { }
33
34    protected override void SaveCellData(object data, int col, int row) {
35      DoubleArrayValueVM vm = VM as DoubleArrayValueVM;
36      vm.SetIndexValue(data, row);
37    }
38  }
39 
40  public abstract partial class JsonItemMultiValueControl<T> : JsonItemBaseControl {
41    protected NumericRangeControl NumericRangeControl { get; set; }
42
43    public JsonItemMultiValueControl(JsonItemVMBase vm, T[][] matrix) : base(vm) {
44      InitializeComponent();
45      int rows = matrix.Length;
46      int cols = matrix.Max(x => x.Length);
47
48      // columns must added first
49      for (int c = 0; c < cols; ++c) {
50        dataGridView.Columns.Add($"Column {c}", $"Column {c}");
51      }
52
53      dataGridView.Rows.Add(rows);
54      for (int c = 0; c < cols; ++c) {
55        for(int r = 0; r < rows; ++r) {
56          dataGridView[c, r].Value = matrix[r][c];
57        }
58      }
59
60      dataGridView.CellEndEdit += DataGridView_CellEndEdit;
61      InitRangeBinding();
62    }
63
64    public JsonItemMultiValueControl(JsonItemVMBase vm, T[] array) : base(vm) {
65      InitializeComponent();
66      int length = array.Length;
67
68      dataGridView.Columns.Add("Value", "Value");
69      dataGridView.Rows.Add(length);
70      for(int i = 0; i < length; ++i) {
71        dataGridView[0, i].Value = array[i];
72      }
73      dataGridView.CellEndEdit += DataGridView_CellEndEdit;
74      InitRangeBinding();
75    }
76
77    private void DataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
78      SaveCellData(dataGridView[e.ColumnIndex, e.RowIndex].Value, e.ColumnIndex, e.RowIndex);
79    }
80
81    protected abstract void SaveCellData(object data, int col, int row);
82
83    private void InitRangeBinding() {
84      NumericRangeControl = numericRangeControl1;
85      NumericRangeControl.TBMinRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM.MinRange));
86      NumericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM.MaxRange));
87      NumericRangeControl.EnableMinRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM.EnableMinRange),
88        false, DataSourceUpdateMode.OnPropertyChanged);
89      NumericRangeControl.EnableMaxRange.DataBindings.Add("Checked", VM, nameof(RangedValueBaseVM.EnableMaxRange),
90        false, DataSourceUpdateMode.OnPropertyChanged);
91    }
92  }
93}
Note: See TracBrowser for help on using the repository browser.