private void AddMappingToComponent() { if (this.c_data == null || this.c_calculator == null) { return; } if (this.current_input_mapping.Count == 0) { return; } if (this.current_output_mapping.Count == 0) { return; } string name = (string.IsNullOrEmpty(this.tb_mapping_name.Text)) ? "Mapping to " + this.c_calculator.Name : this.tb_mapping_name.Text; Comp2CompMappingErr err = Comp2CompMappingErr.NONE; if (this.IsInMapEditingMode) { // save changes to mapping this.c_data.EditMapping(this.current_mapping, this.current_input_mapping, this.current_output_mapping, out err); this.IsInMapEditingMode = false; } else { // create new mapping this.current_mapping = this.c_data.CreateMappingTo(name, this.c_calculator, this.current_input_mapping, this.current_output_mapping, out err); } if (err != Comp2CompMappingErr.NONE) { MessageBox.Show("Mapping Error: " + err.ToString(), "Mapping Error", MessageBoxButton.OK, MessageBoxImage.Warning); return; } if (this.current_mapping == null) { MessageBox.Show("Mapping Error: UNKNOWN", "Mapping Error", MessageBoxButton.OK, MessageBoxImage.Warning); return; } // reset internal containers this.current_input_mapping.Clear(); this.current_output_mapping.Clear(); // update GUI this.cb_mappings.ItemsSource = new List <ParameterStructure.Mapping.Mapping2Component>(this.c_data.Mappings2Comps); this.cb_mappings.SelectedItem = null; }
public void EditMapping(Mapping2Component _map, Dictionary <Parameter.Parameter, Parameter.Parameter> _input_mapping, Dictionary <Parameter.Parameter, Parameter.Parameter> _output_mapping, out Comp2CompMappingErr err) { err = this.MappingEditPreview(_map, _input_mapping, _output_mapping); if (err != Comp2CompMappingErr.NONE) { return; } // apply changes Dictionary <long, long> input_mapping = _input_mapping.Select(x => new KeyValuePair <long, long>(x.Key.ID, x.Value.ID)).ToDictionary(x => x.Key, x => x.Value); Dictionary <long, long> output_mapping = _output_mapping.Select(x => new KeyValuePair <long, long>(x.Key.ID, x.Value.ID)).ToDictionary(x => x.Key, x => x.Value); _map.Adjust(input_mapping, output_mapping); }
/// <summary> /// Called by the component carrying the data to input into the calculator. /// </summary> /// <param name="_name"></param> /// <param name="_calculator">Component carrying the calculation(s)</param> /// <param name="_input_mapping">key = source parameter id, value = target parameter id</param> /// <param name="_output_mapping"></param> /// <param name="err"></param> /// <returns></returns> public Mapping2Component CreateMappingTo(string _name, Component _calculator, Dictionary <Parameter.Parameter, Parameter.Parameter> _input_mapping, Dictionary <Parameter.Parameter, Parameter.Parameter> _output_mapping, out Comp2CompMappingErr err) { err = this.MappingPreview(_calculator, _input_mapping, _output_mapping); if (err != Comp2CompMappingErr.NONE) { return(null); } Dictionary <long, long> input_mapping = _input_mapping.Select(x => new KeyValuePair <long, long>(x.Key.ID, x.Value.ID)).ToDictionary(x => x.Key, x => x.Value); Dictionary <long, long> output_mapping = _output_mapping.Select(x => new KeyValuePair <long, long>(x.Key.ID, x.Value.ID)).ToDictionary(x => x.Key, x => x.Value); return(this.CreateMappingTo(_name, _calculator, input_mapping, output_mapping)); }