Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs @ 17322

Last change on this file since 17322 was 17322, checked in by dpiringe, 5 years ago

#3026

  • changed project type from console to library
  • activated signing
  • lots of refactors in JCInstantiator and JsonItem
File size: 1.3 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using HeuristicLab.Core;
7
8namespace HeuristicLab.JsonInterface {
9  public class MultiCheckedOperatorConverter : ParameterizedItemConverter {
10    public override JsonItem ExtractData(IItem value) {
11      JsonItem data = base.ExtractData(value);
12
13      data.Default = value.GetType().Name;
14      data.Operators = new List<JsonItem>();
15      dynamic val = value.Cast<dynamic>();
16      foreach (var op in val.Operators) {
17        data.Operators.Add(new JsonItem() {
18          Name = op.Name,
19          Default = val.Operators.ItemChecked(op),
20          Range = new object[] { false, true },
21          Path = data.Path + "." + op.Name
22        });
23      }
24      return data;
25    }
26
27    public override void InjectData(IItem item, JsonItem data) {
28      base.InjectData(item, data);
29
30      dynamic val = item.Cast<dynamic>();
31      foreach (var op in val.Operators)
32        val.Operators.SetItemCheckedState(op, GetOperatorState(op.Name, data));
33    }
34
35    private bool GetOperatorState(string name, JsonItem data) {
36      foreach(var op in data.Operators) {
37        if (op.Name == name) return op.Default.Cast<bool>();
38      }
39      return false;
40    }
41  }
42}
Note: See TracBrowser for help on using the repository browser.