1 | using System;
|
---|
2 | using System.Collections.Generic;
|
---|
3 | using System.ComponentModel;
|
---|
4 | using System.Drawing;
|
---|
5 | using System.Data;
|
---|
6 | using System.Linq;
|
---|
7 | using System.Text;
|
---|
8 | using System.Threading.Tasks;
|
---|
9 | using System.Windows.Forms;
|
---|
10 |
|
---|
11 | namespace 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 | }
|
---|