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;
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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));
        }