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
}
}