private void AddAppViewWindow(ShAppViewWindowControlDefinition appViewWindowControlDefinition)
        {
            try
            {
                var title = appViewWindowControlDefinition.Title;

                var type = Type.GetType(appViewWindowControlDefinition.AssemblyQualifiedName);
                var id   = appViewWindowControlDefinition.Id;

                var control = Activator.CreateInstance(type) as UserControl;

                control.Dock = DockStyle.Fill;
                control.Tag  = id;

                var panel = new Panel();

                panel.Text = title;
                //panel.BackColor = Color.White;

                panel.Dock = DockStyle.Fill;
                panel.Tag  = string.Format("{0}_PanelContainer", id);



                panel.Controls.Add(control);

                AppForm.Controls.Add(panel);

                panel.BringToFront();

                // add to top-level view menu
            }
            catch (Exception e)
            {
                throw;
            }
        }
        private void AddAppViewWindow(ShAppViewWindowControlDefinition appViewWindowControlDefinition)
        {
            try
            {
                var tabControl = EnsureMainLayout();


                var viewId    = appViewWindowControlDefinition.Id;
                var viewTitle = appViewWindowControlDefinition.Title;

                var newTabPage = new MetroTabPage();

                newTabPage.Text = viewTitle;
                newTabPage.Tag  = appViewWindowControlDefinition;

                if (!string.IsNullOrEmpty(appViewWindowControlDefinition.AssemblyQualifiedName))
                {
                    var viewName = appViewWindowControlDefinition.AssemblyQualifiedName;
                    var viewType = Type.GetType(viewName);

                    if (viewType == null)
                    {
                        throw new ShAppException(
                                  string.Format("Cannot find type:[{0}]", viewName));
                    }

                    var control = Activator.CreateInstance(viewType) as UserControl;

                    if (control == null)
                    {
                        throw new ShAppException(
                                  string.Format("Cannot create an instance of the type:[{0}] as UserControl", viewType));
                    }

                    control.Dock = DockStyle.Fill;
                    control.Tag  = viewId;

                    control.BackColor = Color.White;

                    newTabPage.Controls.Add(control);
                }

                // MetroUI fix
                var scrolls = newTabPage.Controls.OfType <MetroScrollBar>().ToArray();
                foreach (var scroll in scrolls)
                {
                    scroll.Visible = false;
                }

                tabControl.TabPages.Add(newTabPage);
                tabControl.SelectedIndex = 0;
            }
            catch (Exception e)
            {
                throw new ShAppException(
                          string.Format("Error while initialting the view:[{0}] of type:[{1}]",
                                        appViewWindowControlDefinition.Title,
                                        appViewWindowControlDefinition.AssemblyQualifiedName),
                          e);
            }
        }