Changeset 17405 for branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
- Timestamp:
- 01/21/20 17:14:46 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
r17404 r17405 17 17 private IContent content; 18 18 private static SaveFileDialog saveFileDialog; 19 19 private IDictionary<int, UserControl> ctrlCollection = new Dictionary<int, UserControl>(); 20 private JsonItem root; 21 private IOptimizer optimizer; 20 22 private IList<JsonItemVM> vms; 21 23 private JCGenerator generator = new JCGenerator(); … … 25 27 content = value; 26 28 27 IEnumerable<JsonItem> items = generator.FetchJsonItems(content as IOptimizer);29 //IEnumerable<JsonItem> items = generator.FetchJsonItems(content as IOptimizer); 28 30 vms = new List<JsonItemVM>(); 29 t abel.Controls.Clear();31 treeView.Nodes.Clear(); 30 32 31 foreach (var item in items) { 32 if (!(item is UnsupportedJsonItem) && item.Value != null && item.Range != null) { 33 JsonItemVM vm = new JsonItemVM(item); 34 vms.Add(vm); 35 UserControl control = null; 36 if(item.Value is string) { 37 control = new JsonItemValidValuesControl(vm); 38 } else if (item.Value is bool) { 39 control = new JsonItemBoolControl(vm); 40 } else if (item.Value is int) { 41 control = new JsonItemValueControl(vm, false); 42 } else if (item.Value is double) { 43 control = new JsonItemValueControl(vm, true); 44 } else if (item.Value is Array) { 45 if(((Array)item.Value).GetValue(0) is int) 46 control = new JsonItemRangeControl(vm, false); 47 else if (((Array)item.Value).GetValue(0) is double) 48 control = new JsonItemRangeControl(vm, true); 49 } 50 if (control != null) { 51 control.Anchor = AnchorStyles.Left | AnchorStyles.Right; 52 tabel.Controls.Add(control); 53 } 54 } 55 } 33 optimizer = content as IOptimizer; 34 root = JsonItemConverter.Extract(optimizer); 35 TreeNode parent = new TreeNode(root.Name); 36 BuildTreeNode(parent, root); 37 treeView.Nodes.Add(parent); 56 38 } 57 39 } … … 62 44 63 45 private void exportButton_Click(object sender, EventArgs e) { 64 IList<JsonItem> items = new List<JsonItem>();65 66 46 foreach(var x in vms) { 67 if (x.Selected) 68 items.Add(x.Item); 47 if (!x.Selected) { 48 x.Item.Parent.Children.Remove(x.Item); 49 } 69 50 } 70 51 … … 80 61 81 62 if (saveFileDialog.ShowDialog() == DialogResult.OK) { 82 File.WriteAllText(saveFileDialog.FileName, generator.GenerateTemplate( items));63 File.WriteAllText(saveFileDialog.FileName, generator.GenerateTemplate(root, optimizer)); 83 64 } 84 65 85 66 this.Close(); 86 67 } 68 69 private JsonItemVM BuildTreeNode(TreeNode node, JsonItem item) { 70 JsonItemVM vm = new JsonItemVM(item); 71 72 vms.Add(vm); 73 ctrlCollection.Add(node.GetHashCode(), GenerateControl(vm)); 74 if (item.Children != null) { 75 foreach (var c in item.Children) { 76 if (IsDrawableItem(c)) { 77 if (c is ResultItem) { 78 79 } else { 80 TreeNode childNode = new TreeNode(c.Name); 81 node.Nodes.Add(childNode); 82 vm.AddChild(BuildTreeNode(childNode, c)); 83 } 84 } 85 } 86 } 87 88 return vm; 89 } 90 91 private bool IsDrawableItem(JsonItem item) { 92 bool b = false; 93 if (item.Children != null) { 94 foreach (var c in item.Children) { 95 b = b || IsDrawableItem(c); 96 } 97 } 98 99 return b || (item.Value != null || item.Range != null || item.ActualName != null); 100 } 101 102 private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { 103 if(ctrlCollection.TryGetValue(treeView.SelectedNode.GetHashCode(), out UserControl ctrl)) { 104 panel.Controls.Clear(); 105 if (ctrl != null) { 106 panel.Controls.Add(ctrl); 107 } 108 panel.Refresh(); 109 } 110 } 111 112 private UserControl GenerateControl(JsonItemVM vm) { 113 JsonItem item = vm.Item; 114 UserControl control = null; 115 if (!(item is UnsupportedJsonItem)) { 116 if (item.Value is string && item.Range != null) { 117 control = new JsonItemValidValuesControl(vm); 118 } else if (item.Value is bool && item.Range != null) { 119 control = new JsonItemBoolControl(vm); 120 } else if (item.Value is int && item.Range != null) { 121 control = new JsonItemValueControl(vm, false); 122 } else if (item.Value is double && item.Range != null) { 123 control = new JsonItemValueControl(vm, true); 124 } else if (item.Value is Array) { 125 Array arr = (Array)item.Value; 126 if (arr.Length == 2 && arr.GetValue(0) is int && item.Range != null) 127 control = new JsonItemRangeControl(vm, false); 128 else if (arr.Length == 2 && arr.GetValue(0) is double && item.Range != null) 129 control = new JsonItemRangeControl(vm, true); 130 else if (arr.Rank == 1 && arr.GetValue(0) is double) { 131 control = new JsonItemArrayControl(vm); 132 } 133 } else { 134 control = new JsonItemBaseControl(vm); 135 } 136 if (control != null) { 137 control.Dock = DockStyle.Fill; 138 control.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; 139 } 140 } 141 return control; 142 } 87 143 } 88 144 }
Note: See TracChangeset
for help on using the changeset viewer.