/// <summary>Constructor.</summary>
        /// <param name="divHost">The control host DIV.</param>
        /// <param name="control">The logical IView control (null if not available).</param>
        /// <param name="htmlElement">The control content (supplied by the test class. This is the control that is under test).</param>
        /// <param name="displayMode">The sizing strategy to use for the control.</param>
        /// <param name="allViews">The Collection of all controls.</param>
        public ControlWrapperView(
            jQueryObject divHost, 
            IView control, 
            jQueryObject htmlElement, 
            ControlDisplayMode displayMode, 
            IEnumerable allViews) : base(divHost)
        {
            // Setup initial conditions.
            this.control = control;
            this.htmlElement = htmlElement;
            this.displayMode = displayMode;
            this.allViews = allViews;
            index = divHost.Children().Length; // Store the order position of the control in the host.
            events = Common.Events;

            // Create the wrapper DIV.
            divRoot = Html.CreateDiv();
            divRoot.CSS(Css.Position, Css.Absolute);
            divRoot.AppendTo(divHost);

            // Insert the content.
            htmlElement.CSS(Css.Position, Css.Absolute);
            htmlElement.AppendTo(divRoot);

            // Wire up events.
            events.ControlHostSizeChanged += OnHostResized;

            // Finish up.
            UpdateLayout();
        }
        public PanelResizeController()
        {
            // Setup initial conditions.
            events = Common.Events;

            // Setup the 'SidePanel' resizer.
            sideBarResizer = new HorizontalPanelResizer(CssSelectors.Sidebar, "TH_SB");
            sideBarResizer.Resized += delegate
                                          {
                                              SyncMainPanelWidth();
                                          };
            sideBarResizer.MinWidth = SidebarMinWidth;
            sideBarResizer.MaxWidthMargin = SidebarMaxWidthMargin;
            InitializeResizer(sideBarResizer);

            // Setup the 'Output Log' resizer.
            logResizer = new VerticalPanelResizer(Css.ToId(Elements.OutputLog), "TH_OL");
            logResizer.Resized += delegate
                                         {
                                             SyncControlHostHeight();
                                         };
            logResizer.MinHeight = Html.Height(CssSelectors.LogTitlebar);
            logResizer.MaxHeightMargin = LogMaxHeightMargin;
            InitializeResizer(logResizer);

            // Wire up events.
            GlobalEvents.WindowResize += delegate { SyncControlHostHeight(); };

            // Finish up.
            UpdateLayout();
        }
        /// <summary>Constructor.</summary>
        /// <param name="rootNode">The root list-item node.</param>
        public PackageController(PackageListItem rootNode)
        {
            // Store values.
            this.rootNode = rootNode;
            sidebarView = Common.Shell.Sidebar;
            events = Common.Events;

            // Wire up events.
            rootNode.SelectionChanged += OnSelectionChanged;
            rootNode.ChildSelectionChanged += OnChildSelectionChanged;
        }
        /// <summary>Constructor.</summary>
        public AddPackageController()
        {
            // Setup initial conditions.
            events = Common.Events;
            shell = Common.Shell;
            showButton = Common.Buttons.AddPackage;

            // Wire up events.
            showButton.Click += OnShowClick;
            AddPackageView.Showing += OnViewShowing;
            AddPackageView.Hidden += OnViewHidden;
            events.ClearControls += OnViewHidden;
        }
        /// <summary>Constructor.</summary>
        /// <param name="classInfo">The test-class that is under control.</param>
        public ClassController(ClassInfo classInfo)
        {
            // Setup initial conditions.
            this.classInfo = classInfo;
            sidebarView = Common.Shell.Sidebar;
            events = Common.Events;

            // Wire up events.
            events.MethodClicked += OnMethodClicked;
            sidebarView.MethodList.RunClick += OnRunClick;
            sidebarView.MethodList.RefreshClick += OnRefreshClick;
            // Finish up.
            Reset();
        }
        /// <summary>Constructor.</summary>
        public LogController()
        {
            // Setup initial conditions.
            events = Common.Events;
            divLogContainer = jQuery.Select(CssSelectors.LogContainer);
            panelResizer = Common.Container.GetSingleton(typeof(IPanelResizeController)) as IPanelResizeController;

            // Setup the output log.
            Log.View = new LogView(jQuery.Select(CssSelectors.LogControl).First());

            // Wire up events.
            events.ChangeLogHeight += OnChangeLogHeight;
            Common.Shell.LogContainer.ClearClick += delegate { Log.Clear(); };
        }
        /// <summary>Constructor.</summary>
        /// <param name="sidebarView">The sidebar.</param>
        public MethodListHeightController(SidebarView sidebarView)
        {
            // Setup initial conditions.
            this.sidebarView = sidebarView;
            methodList = sidebarView.MethodList;
            divSidebarContent = sidebarView.Container.Children(CssSelectors.SidebarContent);
            events = Common.Events;

            // Wire up events.
            events.SelectedClassChanged += OnSelectedClassChanged;

            // Finish up.
            HideList(null);
        }
        /// <summary>Constructor.</summary>
        public ControlHostController()
        {
            // Setup initial conditions.
            divControlHost = jQuery.Select(CssSelectors.ControlHost);
            events = Common.Events;

            // Wire up events.
            events.ControlAdded += OnControlAdded;
            events.ClearControls += OnClearControls;
            events.UpdateLayout += OnUpdateLayout;

            // Finish up.
            UpdateLayout();
        }
        /// <summary>Constructor.</summary>
        /// <param name="container">The containing div.</param>
        public MethodListView(jQueryObject container) : base(container)
        {
            // Setup initial conditions.
            events = Common.Events;

            // Create the list-tree.
            listView = new ListTreeView(jQuery.Select(CssSelectors.MethodListContent));
            listView.Slide.Duration = SidebarView.SlideDuration;

            // Construct the data-model root.
            rootNode = new ListItem();
            listView.RootNode = rootNode;

            // Construct buttons.
            InsertButtons();
        }
        /// <summary>Constructor.</summary>
        public SidebarController()
        {
            // Setup initial conditions.
            events = Common.Events;
            listRoot = new ListItem();
            view = Common.Shell.Sidebar;
            view.RootList.RootNode = listRoot;

            // Create child controllers.
            methodListController = new MethodListController();

            // Insert the 'Add Package' list-item.
            listRoot.AddChild(new CustomListItem(CustomListItemType.AddPackage));

            // Wire up events.
            listRoot.ChildSelectionChanged += OnChildSelectionChanged;
            events.AddPackage += OnAddPackageRequest;
        }