using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using DataPerformer;
using DiagramUI;

namespace DataPerformerUI
{
    public partial class FormObjectTransformer : Form, IUpdatableForm
    {
        IObjectLabel label;
        ObjectTransformer transformer;
        private Dictionary<string, ComboBox> list = new Dictionary<string, ComboBox>();
        Panel pCombo;
        private FormObjectTransformer()
        {
            InitializeComponent();
        }

        public FormObjectTransformer(IObjectLabel label)
        {
            InitializeComponent();
            ResourceService.Resources.LoadControlResources(this);
            pCombo = panelCenter;
            this.label = label;
            Text = label.Name;
            transformer = label.Object as ObjectTransformer;
            createCombo();
            fill();
            select();
        }

        #region IUpdatableForm Members

        void IUpdatableForm.UpdateFormUI()
        {
            Text = label.Name;
        }

        #endregion


        private void createCombo()
        {
            IObjectTransformer t = transformer.Transformer;
            string[] ins = t.Input;
            int y = 10;
            foreach (string s in ins)
            {
                Label l = new Label();
                l.Text = s;
                l.Top = y;
                l.Left = 10;
                pCombo.Controls.Add(l);
                ComboBox box = new ComboBox();
                list[s] = box;
                box.Left = l.Left + l.Width + 10;
                box.Top = l.Top;
                pCombo.Controls.Add(box);
                y = box.Top + box.Height + 10;
            }
        }

        private void fill()
        {
            List<string> l = transformer.AllMeasurements;
            foreach (ComboBox box in list.Values)
            {
                DefaultForm.FillCombo(box, l);
            }
        }

        private void accept()
        {
            Dictionary<string, string> d = new Dictionary<string, string>();
            foreach (string key in list.Keys)
            {
                ComboBox box = list[key];
                string s = box.SelectedItem + "";
                d[key] = s;
            }
            transformer.Links = d;
        }

        private void buttonAccept_Click(object sender, EventArgs e)
        {
            accept();
        }

        private void select()
        {
            Dictionary<string, string> links = transformer.Links;
            foreach (string key in links.Keys)
            {
                string name = links[key];
                ComboBox cb = list[key];
                DefaultForm.SelectCombo(cb, name);
            }
        }



    }
}