Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/10/20 16:46:09 (4 years ago)
Author:
dpiringe
Message:

#3026:

  • renamed JsonItemArrayValueControl to JsonItemMultiValueControl
  • extracted converter logic from property Value in JsonItem<V,R> into new private method ConvertObject
  • added references to TreeNode and TreeView in JsonItemVMBase -> for additional user feedback when enabling/disabling an item (changes the fore color of referenced node)
  • changed implementation and interplay between ArrayValueVM and JsonItemMultiValueControl -> removed the direct access of property DataSource of DataGridView -> now: dynamically adds new columns/rows and accesses grid cells manually (better handling with matrices)
  • added new VM MatrixValueVM
File:
1 moved

Legend:

Unmodified
Added
Removed
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs

    r17430 r17431  
    1010
    1111namespace HeuristicLab.JsonInterface.OptimizerIntegration {
    12  
    13   public class JsonItemIntArrayValueControl : JsonItemArrayValueControl {
    14     public JsonItemIntArrayValueControl(IntArrayValueVM vm) : base(vm, vm.Value) { }
     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    }
    1520  }
    1621
    17   public class JsonItemDoubleArrayValueControl : JsonItemArrayValueControl {
     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> {
    1832    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    }
    1938  }
    2039 
    21   public abstract partial class JsonItemArrayValueControl : JsonItemBaseControl {
     40  public abstract partial class JsonItemMultiValueControl<T> : JsonItemBaseControl {
    2241    protected NumericRangeControl NumericRangeControl { get; set; }
    2342
    24     public JsonItemArrayValueControl(JsonItemVMBase vm, object dataSource) : base(vm) {
     43    public JsonItemMultiValueControl(JsonItemVMBase vm, T[][] matrix) : base(vm) {
    2544      InitializeComponent();
    26       dataGridView.DataSource = dataSource;
     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    /*
     84public JsonItemMultiValueControl(JsonItemVMBase vm, object dataSource) : base(vm) {
     85 InitializeComponent();
     86 dataGridView.DataSource = dataSource;
     87
     88 InitRangeBinding();
     89}
     90*/
     91    private void InitRangeBinding() {
    2792      NumericRangeControl = numericRangeControl1;
    28 
    2993      NumericRangeControl.TBMinRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM.MinRange));
    3094      NumericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, nameof(RangedValueBaseVM.MaxRange));
Note: See TracChangeset for help on using the changeset viewer.