namespace VideoBrowser.Controls.CefSharpBrowser { using Dragablz; using System; using System.Windows; using VideoBrowser.Controls.CefSharpBrowser.ViewModels; using VideoBrowser.Controls.CefSharpBrowser.Views; using VideoBrowser.Helpers; /// /// Defines the . /// public class InterTabClient : IInterTabClient { #region Constructors /// /// Initializes a new instance of the class. /// /// The data. internal InterTabClient(GlobalBrowserData data) { this.GlobalBrowserData = data; } #endregion Constructors #region Properties /// /// Gets or sets the CreateWindow. /// public Func<(Window, TabablzControl)> CreateWindow { get; set; } /// /// Gets the GlobalBrowserData. /// public GlobalBrowserData GlobalBrowserData { get; } #endregion Properties #region Methods /// /// The GetNewHost. /// /// The interTabClient. /// The partition. /// The source. /// The . public INewTabHost GetNewHost(IInterTabClient interTabClient, object partition, TabablzControl source) { NewTabHost host = null; UIThreadHelper.Invoke(() => { var (window, tabControl) = this.CreateWindow != null ? this.CreateWindow() : this.CreateDefaultWindow(); host = new NewTabHost(window, tabControl); }); return host; } /// /// The TabEmptiedHandler. /// /// The tabControl. /// The window. /// The . public TabEmptiedResponse TabEmptiedHandler(TabablzControl tabControl, Window window) { return TabEmptiedResponse.CloseWindowOrLayoutBranch; } /// /// The CreateDefaultWindow. /// /// The . internal (Window, TabablzControl) CreateDefaultWindow() { var viewModel = new DefaultTabHostViewModel(this.GlobalBrowserData); var window = new DefaultTabHostWindow { DataContext = viewModel }; var tabControl = window.WebBrowserTabControlView.InitialTabablzControl; return (window, tabControl); } #endregion Methods } }