Changeset 17417
- Timestamp:
- 02/03/20 15:13:35 (5 years ago)
- Location:
- branches/3026_IntegrationIntoSymSpace
- Files:
-
- 3 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/HeuristicLab.JsonInterface.OptimizerIntegration.csproj
r17411 r17417 78 78 </ItemGroup> 79 79 <ItemGroup> 80 <Compile Include="Interfaces\IJsonItemValueParser.cs" />81 <Compile Include="Parser\JsonItemDoubleValueParser.cs" />82 <Compile Include="Parser\JsonItemIntValueParser.cs" />83 80 <Compile Include="Properties\Resources.Designer.cs"> 84 81 <AutoGen>True</AutoGen> … … 98 95 <DependentUpon>NumericRangeControl.cs</DependentUpon> 99 96 </Compile> 97 <Compile Include="ViewModels\ArrayValueVM.cs" /> 100 98 <Compile Include="ViewModels\JsonItemVMBase.cs" /> 101 99 <Compile Include="ViewModels\RangeVM.cs" /> … … 109 107 </Compile> 110 108 <Compile Include="FileManager.cs" /> 109 <Compile Include="Views\JsonItemArrayValueControl.cs"> 110 <SubType>UserControl</SubType> 111 </Compile> 112 <Compile Include="Views\JsonItemArrayValueControl.Designer.cs"> 113 <DependentUpon>JsonItemArrayValueControl.cs</DependentUpon> 114 </Compile> 111 115 <Compile Include="Views\JsonItemBoolControl.cs"> 112 116 <SubType>UserControl</SubType> -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.cs
r17410 r17417 11 11 namespace HeuristicLab.JsonInterface.OptimizerIntegration { 12 12 public partial class JsonItemBaseControl : UserControl { 13 pr ivateJsonItemVMBase VM { get; set; }13 protected JsonItemVMBase VM { get; set; } 14 14 15 15 private JsonItemBaseControl() { -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/StringValueVM.cs
r17412 r17417 12 12 13 13 public string Value { 14 get => Item.Value .ToString();14 get => Item.Value?.ToString(); 15 15 set { 16 16 Item.Value = value; … … 18 18 } 19 19 } 20 21 public IEnumerable<string> Range { 22 get => Item.Range.Cast<string>(); 23 set { 24 Item.Range = value; 25 //check if value is still in range 26 if (!Range.Any(x => x == Value)) { 27 Value = Range.FirstOrDefault(); 28 if (Range.Count() == 0) 29 //if no elements exists -> deselect item 30 base.Selected = false; 31 OnPropertyChange(this, nameof(Value)); 32 } 33 34 OnPropertyChange(this, nameof(Range)); 35 } 36 } 20 37 } 21 38 } -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
r17412 r17417 42 42 43 43 private IDictionary<Type, Type> JI2VM { get; set; } 44 45 44 46 45 private void InitCache() { -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.Designer.cs
r17410 r17417 44 44 this.tableOptions.RowCount = 1; 45 45 this.tableOptions.RowStyles.Add(new System.Windows.Forms.RowStyle()); 46 this.tableOptions.Size = new System.Drawing.Size(478, 1 51);46 this.tableOptions.Size = new System.Drawing.Size(478, 137); 47 47 this.tableOptions.TabIndex = 12; 48 48 // … … 56 56 this.groupBoxRange.Location = new System.Drawing.Point(6, 108); 57 57 this.groupBoxRange.Name = "groupBoxRange"; 58 this.groupBoxRange.Size = new System.Drawing.Size(490, 1 76);58 this.groupBoxRange.Size = new System.Drawing.Size(490, 162); 59 59 this.groupBoxRange.TabIndex = 14; 60 60 this.groupBoxRange.TabStop = false; … … 91 91 this.ForeColor = System.Drawing.Color.Black; 92 92 this.Name = "JsonItemValidValuesControl"; 93 this.Size = new System.Drawing.Size(500, 2 90);93 this.Size = new System.Drawing.Size(500, 276); 94 94 this.Controls.SetChildIndex(this.groupBoxRange, 0); 95 95 this.Controls.SetChildIndex(this.comboBoxValues, 0); -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValidValuesControl.cs
r17410 r17417 14 14 public JsonItemValidValuesControl(StringValueVM vm) : base(vm) { 15 15 InitializeComponent(); 16 /* 17 foreach (var i in VM.Item.Range) { 18 AddOption((string)i); 19 if(i == VM.Item.Value) { 20 comboBoxValues.SelectedItem = (string)i; 21 } 22 }*/ 16 foreach (var i in VM.Item.Range) 17 SetupOption((string)i); 18 19 comboBoxValues.DataBindings.Add("SelectedItem", VM, nameof(StringValueVM.Value)); 23 20 } 24 /*25 private void AddOption(string opt) {21 22 private void SetupOption(string opt) { 26 23 AddComboOption(opt); 27 24 TextBox tb = new TextBox(); … … 50 47 items.Add((string)i); 51 48 } 52 VM.Item.Range = items; 49 ((StringValueVM)VM).Range = items; 50 comboBoxValues.Enabled = true; 53 51 tableOptions.Refresh(); 54 52 } … … 60 58 items.Add((string)i); 61 59 } 62 VM.Item.Range = items; 60 ((StringValueVM)VM).Range = items; 61 if (((StringValueVM)VM).Range.Count() <= 0) { 62 comboBoxValues.Enabled = false; 63 comboBoxValues.SelectedIndex = -1; 64 } 63 65 tableOptions.Refresh(); 64 66 } 65 66 private void comboBoxValues_SelectedValueChanged(object sender, EventArgs e) {67 VM.Item.Value = (string)comboBoxValues.SelectedItem;68 }69 70 private void JsonItemValidValuesControl_Load(object sender, EventArgs e) {71 72 }73 */74 67 } 75 68 } -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemValueControl.cs
r17411 r17417 13 13 14 14 public class JsonItemIntValueControl : JsonItemValueControl { 15 private readonly IntValueVM vm;16 15 17 16 #region Overriden Properties 18 protected override object VM => vm;19 17 protected override string ValuePropertyId => nameof(IntValueVM.Value); 20 18 protected override string MinRangePropertyId => nameof(IntValueVM.MinRange); … … 25 23 26 24 public JsonItemIntValueControl(IntValueVM vm) : base(vm) { 27 this.vm = vm;28 25 Init(); 29 26 } … … 32 29 33 30 public class JsonItemDoubleValueControl : JsonItemValueControl { 34 private readonly DoubleValueVM vm;35 31 36 32 #region Overriden Properties 37 protected override object VM => vm;38 33 protected override string ValuePropertyId => nameof(DoubleValueVM.Value); 39 34 protected override string MinRangePropertyId => nameof(DoubleValueVM.MinRange); … … 44 39 45 40 public JsonItemDoubleValueControl(DoubleValueVM vm) : base(vm) { 46 this.vm = vm;47 41 Init(); 48 42 } … … 57 51 58 52 #region Abstract Properties 59 protected abstract object VM { get; }60 53 protected abstract string ValuePropertyId { get; } 61 54 protected abstract string MinRangePropertyId { get; } … … 72 65 73 66 protected void Init() { 74 TBValue.DataBindings.Add("Text", VM, ValuePropertyId);67 TBValue.DataBindings.Add("Text", base.VM, ValuePropertyId); 75 68 NumericRangeControl.TBMinRange.DataBindings.Add("Text", VM, MinRangePropertyId); 76 69 NumericRangeControl.TBMaxRange.DataBindings.Add("Text", VM, MaxRangePropertyId); -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs
r17407 r17417 10 10 namespace HeuristicLab.JsonInterface { 11 11 12 public class IntArrayConverter : ValueTypeArrayConverter<IntArray, int>{12 public class IntArrayConverter : BaseConverter { 13 13 public override int Priority => 1; 14 14 public override Type ConvertableType => typeof(IntArray); 15 16 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 17 IntArray arr = item as IntArray; 18 int[] d = CastValue<int[]>(data); 19 bool resizeTmp = arr.Resizable; 20 arr.Resizable = true; 21 arr.Length = d.Length; 22 for (int i = 0; i < d.Length; ++i) 23 arr[i] = d[i]; 24 arr.Resizable = resizeTmp; 25 } 26 27 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 28 new IntArrayJsonItem() { 29 Name = "[OverridableParamName]", 30 Value = ((IntArray)value).CloneAsArray() 31 }; 15 32 } 16 33 17 public class DoubleArrayConverter : ValueTypeArrayConverter<DoubleArray, double>{34 public class DoubleArrayConverter : BaseConverter { 18 35 public override int Priority => 1; 19 36 public override Type ConvertableType => typeof(DoubleArray); 37 38 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 39 DoubleArray arr = item as DoubleArray; 40 double[] d = CastValue<double[]>(data); 41 bool resizeTmp = arr.Resizable; 42 arr.Resizable = true; 43 arr.Length = d.Length; 44 for (int i = 0; i < d.Length; ++i) 45 arr[i] = d[i]; 46 arr.Resizable = resizeTmp; 47 } 48 49 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 50 new DoubleArrayJsonItem() { 51 Name = "[OverridableParamName]", 52 Value = ((DoubleArray)value).CloneAsArray() 53 }; 20 54 } 21 55 22 public class PercentArrayConverter : ValueTypeArrayConverter<PercentArray, double>{56 public class PercentArrayConverter : BaseConverter { 23 57 public override int Priority => 2; 24 58 public override Type ConvertableType => typeof(PercentArray); 59 60 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 61 PercentArray arr = item as PercentArray; 62 double[] d = CastValue<double[]>(data); 63 bool resizeTmp = arr.Resizable; 64 arr.Resizable = true; 65 arr.Length = d.Length; 66 for (int i = 0; i < d.Length; ++i) 67 arr[i] = d[i]; 68 arr.Resizable = resizeTmp; 69 } 70 71 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 72 new DoubleArrayJsonItem() { 73 Name = "[OverridableParamName]", 74 Value = ((PercentArray)value).CloneAsArray() 75 }; 25 76 } 26 77 27 public class BoolArrayConverter : ValueTypeArrayConverter<BoolArray, bool>{78 public class BoolArrayConverter : BaseConverter { 28 79 public override int Priority => 1; 29 80 public override Type ConvertableType => typeof(BoolArray); 30 }31 81 32 public abstract class ValueTypeArrayConverter<ArrayType, T> : BaseConverter 33 where ArrayType : ValueTypeArray<T> 34 where T : struct 35 { 36 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) => 37 CopyArrayData(((ArrayType)item), CastValue<T[]>(data.Value)); 82 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 83 BoolArray arr = item as BoolArray; 84 bool[] d = CastValue<bool[]>(data); 85 bool resizeTmp = arr.Resizable; 86 arr.Resizable = true; 87 arr.Length = d.Length; 88 for(int i = 0; i < d.Length; ++i) 89 arr[i] = d[i]; 90 arr.Resizable = resizeTmp; 91 } 38 92 39 93 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 40 new JsonItem() {94 new BoolArrayJsonItem() { 41 95 Name = "[OverridableParamName]", 42 Value = (( ArrayType)value).CloneAsArray()96 Value = ((BoolArray)value).CloneAsArray() 43 97 }; 44 45 #region Helper46 private void CopyArrayData(ArrayType array, T[] data) {47 var colInfo = array.GetType().GetProperty("Length");48 colInfo.SetValue(array, data.Length);49 for (int i = 0; i < data.Length; ++i) {50 array[i] = data[i];51 }52 }53 #endregion54 98 } 55 99 } -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs
r17407 r17417 12 12 public override int Priority => 1; 13 13 public override Type ConvertableType => typeof(IntMatrix); 14 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 15 IntMatrix mat = item as IntMatrix; 16 IntMatrixJsonItem d = data as IntMatrixJsonItem; 17 CopyMatrixData(mat, d.Value); 18 } 19 20 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 21 new IntMatrixJsonItem() { 22 Name = "[OverridableParamName]", 23 Value = Transform((IntMatrix)value) 24 }; 14 25 } 15 26 … … 17 28 public override int Priority => 1; 18 29 public override Type ConvertableType => typeof(DoubleMatrix); 30 31 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 32 DoubleMatrix mat = item as DoubleMatrix; 33 DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem; 34 CopyMatrixData(mat, d.Value); 35 } 36 37 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 38 new DoubleMatrixJsonItem() { 39 Name = "[OverridableParamName]", 40 Value = Transform((DoubleMatrix)value) 41 }; 19 42 } 20 43 … … 22 45 public override int Priority => 2; 23 46 public override Type ConvertableType => typeof(PercentMatrix); 47 48 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 49 PercentMatrix mat = item as PercentMatrix; 50 DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem; 51 CopyMatrixData(mat, d.Value); 52 } 53 54 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 55 new DoubleMatrixJsonItem() { 56 Name = "[OverridableParamName]", 57 Value = Transform((PercentMatrix)value) 58 }; 24 59 } 25 60 … … 27 62 public override int Priority => 1; 28 63 public override Type ConvertableType => typeof(BoolMatrix); 64 65 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) { 66 BoolMatrix mat = item as BoolMatrix; 67 BoolMatrixJsonItem d = data as BoolMatrixJsonItem; 68 CopyMatrixData(mat, d.Value); 69 } 70 71 public override IJsonItem Extract(IItem value, IJsonItemConverter root) => 72 new BoolMatrixJsonItem() { 73 Name = "[OverridableParamName]", 74 Value = Transform((BoolMatrix)value) 75 }; 29 76 } 30 77 … … 33 80 where T : struct 34 81 { 35 public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) => 36 CopyMatrixData(item as MatrixType, data.Value); 82 #region Helper 83 protected void CopyMatrixData(MatrixType matrix, T[][] data) { 84 var rows = data.Length; 85 var cols = data.Length > 0 ? data[0].Length : 0; 37 86 38 public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>39 new JsonItem() {40 Name = "[OverridableParamName]",41 Value = ((MatrixType)value).CloneAsMatrix()87 var rowInfo = matrix.GetType().GetProperty("Rows"); 88 rowInfo.SetValue(matrix, rows); 89 var colInfo = matrix.GetType().GetProperty("Columns"); 90 colInfo.SetValue(matrix, cols); 42 91 43 }; 44 45 #region Helper 46 private void CopyMatrixData(MatrixType matrix, object data) { 47 if (data is Array arr) { 48 var rows = arr.Length; 49 var cols = arr.Length > 0 && arr.GetValue(0) is JArray jarr ? jarr.Count : 0; 50 51 var rowInfo = matrix.GetType().GetProperty("Rows"); 52 rowInfo.SetValue(matrix, rows); 53 var colInfo = matrix.GetType().GetProperty("Columns"); 54 colInfo.SetValue(matrix, cols); 55 56 for (int x = 0; x < rows; ++x) { 57 jarr = (JArray)arr.GetValue(x); 58 for (int y = 0; y < cols; ++y) { 59 matrix[x, y] = jarr[y].ToObject<T>(); 60 } 92 for (int x = 0; x < rows; ++x) { 93 for (int y = 0; y < cols; ++y) { 94 matrix[x, y] = data[x][y]; 61 95 } 62 96 } 97 } 98 99 protected T[][] Transform(MatrixType matrix) { 100 T[][] m = new T[matrix.Rows][]; 101 for (int r = 0; r < matrix.Rows; ++r) { 102 m[r] = new T[matrix.Columns]; 103 for (int c = 0; c < matrix.Columns; ++c) { 104 m[r][c] = matrix[r, c]; 105 } 106 } 107 return m; 63 108 } 64 109 #endregion -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs
r17410 r17417 68 68 #region Helper 69 69 70 private static object GetValueFromJObject(JObject obj) { 71 object val = obj[nameof(IJsonItem.Value)]?.ToObject<object>(); 72 if (val is JContainer jContainer) // for resolving array values 73 val = jContainer.ToObject<object[]>(); 74 75 return val; 76 } 70 private static object GetValueFromJObject(JObject obj) => 71 obj[nameof(IJsonItem.Value)]?.ToObject<object>(); 77 72 78 73 private static void CollectParameterizedItems(InstData instData) { -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/GenericJsonItem.cs
r17410 r17417 1 1 using System; 2 using System.Collections; 2 3 using System.Collections.Generic; 3 4 using System.Linq; 4 5 using System.Text; 5 6 using System.Threading.Tasks; 7 using Newtonsoft.Json.Linq; 6 8 7 9 namespace HeuristicLab.JsonInterface { … … 11 13 public class JsonItem<V,R> : JsonItem { 12 14 public new V Value { 13 get => (V)Convert.ChangeType(base.Value, typeof(V)); 15 get { 16 if(base.Value is IConvertible) 17 return (V)Convert.ChangeType(base.Value, typeof(V)); 18 19 if(base.Value is JToken token) 20 return token.ToObject<V>(); 21 22 return (V)base.Value; 23 } 14 24 set => base.Value = value; 15 25 } 16 26 17 27 public new IEnumerable<R> Range { 18 get => base.Range .Cast<R>();28 get => base.Range?.Cast<R>(); 19 29 set => base.Range = value.Cast<object>(); 20 30 } -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItems.cs
r17410 r17417 7 7 namespace HeuristicLab.JsonInterface { 8 8 public class IntJsonItem : JsonItem<int> {} 9 public class IntArrayJsonItem: JsonItem<int[], int> {} 9 public class IntArrayJsonItem: JsonItem<int[], int> { } 10 public class IntMatrixJsonItem : JsonItem<int[][], int> { } 10 11 11 12 public class DoubleJsonItem: JsonItem<double> {} 12 public class DoubleArrayJsonItem: JsonItem<double[], double> {} 13 public class DoubleArrayJsonItem: JsonItem<double[], double> { } 14 public class DoubleMatrixJsonItem : JsonItem<double[][], double> { } 13 15 14 public class BoolJsonItem: JsonItem<bool> {} 16 public class BoolJsonItem: JsonItem<bool> { } 17 public class BoolArrayJsonItem : JsonItem<bool[], bool> { } 18 public class BoolMatrixJsonItem : JsonItem<bool[][], bool> { } 15 19 16 20 public class StringJsonItem: JsonItem<string> {} -
branches/3026_IntegrationIntoSymSpace/Heuristiclab.ConfigStarter/Program.cs
r17410 r17417 47 47 JCGenerator generator = new JCGenerator(); 48 48 49 //File.WriteAllText(@"C:\Workspace\Template.json", generator.GenerateTemplate(alg));49 File.WriteAllText(@"C:\Workspace\Template.json", generator.GenerateTemplate(alg)); 50 50 JsonTemplateInstantiator.Instantiate(@"C:\Workspace\Template.json"); 51 51 /*
Note: See TracChangeset
for help on using the changeset viewer.