private void componentCbx_SelectedIndexChanged(object sender, EventArgs e)
        {
            VisualComponentItem item = componentCbx.SelectedItem as VisualComponentItem;

            if (item.Instance == null)
            {
                item.Instance      = Activator.CreateInstance(item.Type) as UXComponent;
                item.Instance.Name = ViewHelper.GetDefaultComponentName(ComponentNames, item.Type);
                object[] attributes = item.Type.GetCustomAttributes(typeof(VisualDesignerAttribute), false);

                if (attributes != null)
                {
                    GenericMapper.Map((VisualDesignerAttribute)attributes[0], item.Instance);
                }
            }

            if (UXComponent != null)
            {
                GenericMapper.Map(UXComponent, item.Instance);
            }

            if (item.Instance is UXServiceComponent &&
                (serviceMethod != null ||
                 componentMap != null))
            {
                ((UXServiceComponent)item.Instance).ServiceMethod = serviceMethod;
                ((UXServiceComponent)item.Instance).ComponentMap  = componentMap;
            }

            UXComponent = item.Instance;

            propertyGrid.SelectedObject = UXComponent;

            EnableDisableButtons();
        }
        private void PopulateComponentTypes()
        {
            componentCbx.Items.Clear();
            componentCbx.DisplayMember = "Name";

            Assembly assembly = Assembly.GetAssembly(typeof(VisualDesignerAttribute));

            VisualComponentItem selectedItem = null;

            foreach (Type t in assembly.GetTypes())
            {
                if (!OnlyBindables || (OnlyBindables && (t.GetInterface("IBindable") != null)))
                {
                    object[] attributes = t.GetCustomAttributes(typeof(VisualDesignerAttribute), false);

                    if (attributes.Count() > 0)
                    {
                        VisualComponentItem item = new VisualComponentItem();
                        item.Type = t;
                        item.Name = ((VisualDesignerAttribute)attributes[0]).ComponentName;

                        if ((UXComponent != null) && (UXComponent.GetType() == t))
                        {
                            item.Instance = UXComponent;
                            selectedItem  = item;
                        }

                        componentCbx.Items.Add(item);
                    }
                }
            }

            componentCbx.SelectedItem = selectedItem;
        }
        private void serviceBtn_Click(object sender, EventArgs e)
        {
            VisualComponentItem item = componentCbx.SelectedItem as VisualComponentItem;

            using (ConfigureServiceForm form = new ConfigureServiceForm())
            {
                form.BackendApplication = BackendApplication;
                form.Owner = this;
                form.UXServiceComponent = item.Instance as UXServiceComponent;

                form.ShowDialog();
            }

            propertyGrid.SelectedObject = item.Instance;
        }